diff --git a/.codecov.yml b/.codecov.yml
index 4ba9064546..244d47b884 100644
--- a/.codecov.yml
+++ b/.codecov.yml
@@ -30,26 +30,6 @@ flags:
paths:
- contrib/git-changes-action/
carryforward: true
- release-copier-action:
- paths:
- - contrib/release-copier-action/
- carryforward: true
- terraform-provider-helmproxy:
- paths:
- - contrib/terraform-provider-helmproxy/
- carryforward: true
- terraform-provider-iap:
- paths:
- - contrib/terraform-provider-iap/
- carryforward: true
- terraform-provider-kubeproxy:
- paths:
- - contrib/terraform-provider-kubeproxy/
- carryforward: true
- tfcore:
- paths:
- - contrib/tfcore/
- carryforward: true
core:
paths:
- core/
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 5e48ff9866..6fa0346a29 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -16,9 +16,6 @@
"ghcr.io/devcontainers/features/github-cli:1": {
"version": "latest",
},
- "ghcr.io/devcontainers/features/terraform:1": {
- "version": "latest",
- },
"ghcr.io/devcontainers/features/node:1": {
"version": "latest",
}
diff --git a/.github/workflows/go.yml b/.github/workflows/go.yml
index 8cc340c9af..e0b67c2c7f 100644
--- a/.github/workflows/go.yml
+++ b/.github/workflows/go.yml
@@ -523,18 +523,18 @@ jobs:
# Foundry is required for flattening
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq')
+ if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }}
with:
version: nightly
- name: Install Node Dependencies
run: yarn install --immutable
- if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq')
+ if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }}
# Generate flattened files
- name: Run flattener
run: npx lerna exec npm run build:go
- if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq')
+ if: ${{ contains(matrix.package, 'agents') || contains(matrix.package, 'services/rfq') }}
# Setup Go
- uses: actions/setup-go@v4
diff --git a/.github/workflows/goreleaser-actions.yml b/.github/workflows/goreleaser-actions.yml
index 4e3b6681a8..28e902e3f9 100644
--- a/.github/workflows/goreleaser-actions.yml
+++ b/.github/workflows/goreleaser-actions.yml
@@ -258,35 +258,6 @@ jobs:
name: ${{steps.project_id.outputs.project_name}}.zip
path: ${{steps.project_id.outputs.project_name}}.zip
- - name: Copy Releases
- if: ${{ steps.branch-name.outputs.is_default == 'true' && contains( steps.tag_version.outputs.new_tag, 'terraform-provider-iap') }}
- uses: docker://ghcr.io/synapsecns/sanguine/release-copier-action:latest
- with:
- github_token: ${{ secrets.PUBLISH_TOKEN }}
- # TODO: will change with new org
- destination_repo: 'trajan0x/terraform-provider-iap'
- tag_name: ${{ steps.tag_version.outputs.new_tag }}
- strip_prefix: 'contrib/terraform-provider-iap/'
-
- - name: Copy Releases
- if: ${{ steps.branch-name.outputs.is_default == 'true' && contains( steps.tag_version.outputs.new_tag, 'terraform-provider-helmproxy') }}
- uses: docker://ghcr.io/synapsecns/sanguine/release-copier-action:latest
- with:
- github_token: ${{ secrets.PUBLISH_TOKEN }}
- # TODO: will change with new org
- destination_repo: 'trajan0x/terraform-provider-helmproxy'
- tag_name: ${{ steps.tag_version.outputs.new_tag }}
- strip_prefix: 'contrib/terraform-provider-helmproxy/'
-
- - name: Copy Releases
- if: ${{ steps.branch-name.outputs.is_default == 'true' && contains( steps.tag_version.outputs.new_tag, 'terraform-provider-kubeproxy') }}
- uses: docker://ghcr.io/synapsecns/sanguine/release-copier-action:latest
- with:
- github_token: ${{ secrets.PUBLISH_TOKEN }}
- # TODO: will change with new org
- destination_repo: 'trajan0x/terraform-provider-kubeproxy'
- tag_name: ${{ steps.tag_version.outputs.new_tag }}
- strip_prefix: 'contrib/terraform-provider-kubeproxy/'
- name: Refresh Report Card
if: steps.branch-name.outputs.is_default == 'true'
diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml
index cb0237887e..314ccdaafc 100644
--- a/.github/workflows/lint.yml
+++ b/.github/workflows/lint.yml
@@ -21,7 +21,7 @@ jobs:
- name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
with:
- ignore_paths: ./contrib/terraform-provider-iap/scripts/add-tfmac.sh ./contrib/terraform-provider-helmproxy/scripts/add-tfmac.sh ./contrib/terraform-provider-kubeproxy/scripts/add-tfmac.sh ./contrib/scripts/txdecoder.sh
+ ignore_paths: ./contrib/scripts/txdecoder.sh
- name: Validate renovate
uses: rinchsan/renovate-config-validator@v0.0.12
diff --git a/README.md b/README.md
index 07a53ceff2..d1ec28cea0 100644
--- a/README.md
+++ b/README.md
@@ -54,11 +54,6 @@ root
│ ├── git-changes-action: Github action for identifying changes in dependent modules in a go workspace
│ ├── promexporter: Multi-service prometheus exporter
│ ├── screener-api: Optional address screening api
-│ ├── release-copier-action: Github action for copying releases from one repo to another
-│ ├── terraform-provider-iap: Terraform provider used for bastion proxy tunneling
-│ ├── terraform-provider-helmproxy: Terraform provider that allows helm to be proxied through an iap bastion proxy
-│ ├── terraform-provider-kubeproxy: Terraform provider that allows kube to be proxied through an iap bastion proxy
-│ ├── tfcore: Terraform core utilities + iap utilities
├── core: The Go core library with common utilities for use across the monorepo
├── ethergo: Go-based ethereum testing + common library
├── packages
@@ -82,11 +77,12 @@ root
│ ├── omnirpc: Latency aware RPC Client used across multiple-chains at once
├── tools
│ ├── abigen: Used to generate abigen bindings for go
-│ ├── bundle: Modified version of go bundler with improved shadowing support
│ ├── module copier: Used to copy internal modules and export methods for testing
│ ├── revertresolver: Converts hexified solidity errors into their underlying errors.
+Note: Terraform related modules have been moved to [this repository](https://github.com/synapsecns/tf-providers)
+
## Setup
Clone the repository, open it, and install nodejs packages with `yarn`:
diff --git a/contrib/release-copier-action/.goreleaser.yml b/contrib/release-copier-action/.goreleaser.yml
deleted file mode 100644
index 755e3085a6..0000000000
--- a/contrib/release-copier-action/.goreleaser.yml
+++ /dev/null
@@ -1,78 +0,0 @@
-project_name: release-copier-action
-
-monorepo:
- tag_prefix: contrib/release-copier-action/
- dir: contrib/release-copier-action/
-
-builds:
- # Linux AMD64
- - id: release-copier-action
- binary: release-copier-action
- ldflags: -installsuffix static
- env:
- - CGO_ENABLED=0
- main: main.go
- flags:
- - -trimpath
- tags:
- - netgo
- - osusergo
- goos:
- - linux
- goarch:
- - amd64
-
-# add a source archive at release time
-source:
- enabled: true
-
-# Archives
-archives:
- - format: tar.gz
- wrap_in_directory: true
- format_overrides:
- - goos: windows
- format: zip
- name_template: '{{.ProjectName}}-{{.Version}}_{{.Os}}_{{.Arch}}'
- files:
- - README.md
-
-checksum:
- name_template: checksums.txt
-
-# Add a changelog
-changelog:
- sort: asc
-
-dockers:
- # Docker AMD64
- - goos: linux
- goarch: amd64
- image_templates:
- - 'ghcr.io/synapsecns/sanguine/release-copier-action:latest'
- - 'ghcr.io/synapsecns/sanguine/release-copier-action:{{ .FullCommit }}'
- - 'ghcr.io/synapsecns/sanguine/release-copier-action:{{ .Tag }}'
- build_flag_templates:
- - '--label=org.opencontainers.image.created={{.Date}}'
- - '--label=org.opencontainers.image.name={{.ProjectName}}'
- - '--label=org.opencontainers.image.revision={{.FullCommit}}'
- - '--label=org.opencontainers.image.version={{.Version}}'
- - '--label=org.opencontainers.image.source={{.GitURL}}'
- dockerfile: ../../docker/release-copier-action.Dockerfile
- ids:
- - release-copier-action
-
-# track sizes
-report_sizes: true
-
-# modified timestamps
-metadata:
- # Set the modified timestamp on the metadata files.
- #
- # Templates: allowed.
- mod_timestamp: '{{ .CommitTimestamp }}'
-
-# produce software bill of lading
-sboms:
- - artifacts: archive
-
diff --git a/contrib/release-copier-action/Makefile b/contrib/release-copier-action/Makefile
deleted file mode 120000
index 15e4536f4b..0000000000
--- a/contrib/release-copier-action/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../make/go.Makefile
\ No newline at end of file
diff --git a/contrib/release-copier-action/README.md b/contrib/release-copier-action/README.md
deleted file mode 100644
index e13f692ca3..0000000000
--- a/contrib/release-copier-action/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Release Copier
-
-[![Go Reference](https://pkg.go.dev/badge/github.com/synapsecns/sanguine/contrib/release-copier-action.svg)](https://pkg.go.dev/github.com/synapsecns/sanguine/contrib/release-copier-action)
-[![Go Report Card](https://goreportcard.com/badge/github.com/synapsecns/sanguine/contrib/release-copier-action)](https://goreportcard.com/report/github.com/synapsecns/sanguine/contrib/release-copier-action)
-
-This is a tool to help with the release process. It copies the release from a tag to a new repository. This is used for terraform releases since terraform requires a separate repository for each provider in a specific format. It should be able to be used for any other release you want to copy.
-
-## Usage
-
-
-```yaml
- - name: Bump version and push tag
- id: tag_version
- if: steps.branch-name.outputs.is_default == 'true'
- uses: mathieudutour/github-tag-action@v6.0
- with:
- github_token: ${{ secrets.GITHUB_TOKEN }}
- tag_prefix: my-package-prefix/v
- release_branches: master
- fetch_all_tags: true
- - name: Copy Releases
- uses: docker://ghcr.io/synapsecns/sanguine/release-copier-action:latest
- with:
- # this token must have access to both the original repository and the new repository so GITHUB_TOKEN will not work
- github_token: ${{ secrets.PUBLISH_TOKEN }}
- # destination repo
- destination_repo: 'my-destination-repo/destination-package'
- # you can take this from anywhere
- tag_name: ${{ steps.tag_version.outputs.new_tag }}
- # we strip away anything package relative here
- strip_prefix: 'my-package-prefix/'
-```
-
-## A note on actions
-
-This action is currently not published to the marketplace, partially because the [requirements](https://docs.github.com/en/actions/creating-actions/publishing-actions-in-github-marketplace#about-publishing-actions) require that each repository contain a single action and the action.yml must be in the root directory. We can get around this with a subdirectory copier in a future version.
diff --git a/contrib/release-copier-action/copier/copier.go b/contrib/release-copier-action/copier/copier.go
deleted file mode 100644
index bcdd3315a0..0000000000
--- a/contrib/release-copier-action/copier/copier.go
+++ /dev/null
@@ -1,210 +0,0 @@
-package copier
-
-import (
- "context"
- "errors"
- "fmt"
- "github.com/google/go-github/v41/github"
- "golang.org/x/oauth2"
- "io"
- "net/http"
- "os"
- "strings"
- "sync"
-)
-
-// ReleaseCopier contains the release copier client.
-type ReleaseCopier struct {
- client *github.Client
- sourceOwner, sourceRepo, targetOwner, targetRepo string
- // mux ensures only one copy can be made at a time
- mux sync.Mutex
-}
-
-// NewReleaseCopier creates a new release copier client.
-func NewReleaseCopier(ctx context.Context, token string) *ReleaseCopier {
- ts := oauth2.StaticTokenSource(
- &oauth2.Token{AccessToken: token})
-
- tc := oauth2.NewClient(ctx, ts)
-
- return &ReleaseCopier{
- client: github.NewClient(tc),
- }
-}
-
-// CopyRelease copies a release from a sourceRepo to a targetRepo and strips a prefix.
-// nolint: cyclop
-func (r *ReleaseCopier) CopyRelease(ctx context.Context, sourceOwner, sourceRepo, targetOwner, targetRepo, tagName, stripPrefix string) error {
- // make sure only one copy process runs at a time
- r.mux.Lock()
- defer r.mux.Unlock()
-
- r.sourceRepo = sourceRepo
- r.sourceOwner = sourceOwner
- r.targetOwner = targetOwner
- r.targetRepo = targetRepo
-
- // Get the release
- ogRelease, _, err := r.client.Repositories.GetReleaseByTag(ctx, sourceOwner, sourceRepo, tagName)
- if err != nil {
- return fmt.Errorf("could not get origin release: %w", err)
- }
-
- // Get the tag for the release
- ogTag, err := r.GetTagForRelease(ctx, ogRelease)
- if err != nil {
- return fmt.Errorf("could not get tag for release: %w", err)
- }
-
- if ogRelease.TagName == nil {
- return errors.New("could not get origin release tag name, tag is required for copying a release")
- }
-
- strippedTag := strings.TrimPrefix(tagName, stripPrefix)
- // releaes name is optional, so we only set it if it exists
- // we also strip the prefix here
- name := ""
- if ogRelease.Name != nil {
- name = strings.TrimPrefix(*ogRelease.Name, stripPrefix)
- }
-
- commits, _, err := r.client.Repositories.ListCommits(ctx, targetOwner, targetRepo, &github.CommitsListOptions{})
- if err != nil {
- return fmt.Errorf("could not get commits for repo %s/%s: %w", targetOwner, targetRepo, err)
- }
- if len(commits) == 0 {
- return errors.New("at least one commit is required for a release")
- }
-
- // Create the tag
- tag, _, err := r.client.Git.CreateTag(ctx, targetOwner, targetRepo, &github.Tag{
- Tag: &strippedTag,
- Message: ogTag.Commit.Message,
- Object: &github.GitObject{
- Type: github.String("commit"),
- SHA: commits[0].SHA,
- URL: commits[0].URL,
- },
- })
- if err != nil {
- return fmt.Errorf("could not create tag %s: %w", strippedTag, err)
- }
-
- // Create the release
- newRelease := &github.RepositoryRelease{
- TagName: tag.Tag,
- Name: &name,
- Body: ogRelease.Body,
- }
-
- newRelease, _, err = r.client.Repositories.CreateRelease(ctx, targetOwner, targetRepo, newRelease)
- if err != nil {
- return fmt.Errorf("could not create release: %w", err)
- }
-
- for _, asset := range ogRelease.Assets {
- err = r.copyReleaseAsset(ctx, asset, newRelease)
- if err != nil {
- return fmt.Errorf("could not copy release asset: %w", err)
- }
- }
- return nil
-}
-
-// GetTagForRelease gets the tag for a given release. It does this by iterating through all tags to find
-// a matching tag name. We need to do this because the github api does not return the tag by name
-// only sha.
-func (r *ReleaseCopier) GetTagForRelease(ctx context.Context, release *github.RepositoryRelease) (*github.RepositoryTag, error) {
- page := 1
- for {
- tags, res, err := r.client.Repositories.ListTags(ctx, r.sourceOwner, r.sourceRepo, &github.ListOptions{
- PerPage: 100,
- Page: page,
- })
- if err != nil {
- return nil, fmt.Errorf("could not get tags: %w", err)
- }
-
- for _, tag := range tags {
- if tag.GetName() == release.GetTagName() {
- // some fields aren't populated in this response, so we need to get the full tag commit metadata
- commit, _, err := r.client.Git.GetCommit(ctx, r.sourceOwner, r.sourceRepo, tag.GetCommit().GetSHA())
- if err != nil {
- return nil, fmt.Errorf("could not get commit: %w", err)
- }
-
- tag.Commit = commit
-
- return tag, nil
- }
- }
-
- if page == res.LastPage {
- return nil, fmt.Errorf("could not find tag for release %s/%s", r.sourceOwner, r.sourceRepo)
- }
- page = res.NextPage
- }
-}
-
-// copyReleaseAsset copies a release asset from the source repo to the target repo.
-func (r *ReleaseCopier) copyReleaseAsset(ctx context.Context, asset *github.ReleaseAsset, targetRelease *github.RepositoryRelease) error {
- // Download the original release asset
- reader, _, err := r.client.Repositories.DownloadReleaseAsset(ctx, r.sourceOwner, r.sourceRepo, *asset.ID, http.DefaultClient)
- if err != nil {
- return fmt.Errorf("could not download asset %s: %w", *asset.Name, err)
- }
-
- folderName, err := os.MkdirTemp("", "release-copier")
- if err != nil {
- return fmt.Errorf("could not create temp folder: %w", err)
- }
-
- // create a temp file, we'll use this to store the contents of the original
- fileName := fmt.Sprintf("%s/%s", folderName, *asset.Name)
-
- //nolint: gosec
- tmpFile, err := os.OpenFile(fileName, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0755)
- if err != nil {
- return fmt.Errorf("could not create temp file %s: %w", fileName, err)
- }
-
- defer func() {
- _ = tmpFile.Close()
- _ = os.Remove(tmpFile.Name())
- }()
-
- toWrite, err := io.ReadAll(reader)
- if err != nil {
- return fmt.Errorf("could not read asset %s: %w", *asset.Name, err)
- }
-
- _, err = tmpFile.Write(toWrite)
- if err != nil {
- return fmt.Errorf("could not write asset %s: %w", *asset.Name, err)
- }
-
- // release the file handle
- _ = tmpFile.Close()
-
- // open as readonly
- //nolint:gosec
- tmpFile, err = os.Open(fileName)
- if err != nil {
- return fmt.Errorf("could not open temp file %s: %w", fileName, err)
- }
-
- // Upload the resulting release asset
- _, res, err := r.client.Repositories.UploadReleaseAsset(ctx, r.targetOwner, r.targetRepo, targetRelease.GetID(), &github.UploadOptions{
- Name: asset.GetName(),
- Label: asset.GetLabel(),
- }, tmpFile)
-
- if err != nil {
- return fmt.Errorf("could not upload: %w", err)
- }
-
- _ = res
-
- return nil
-}
diff --git a/contrib/release-copier-action/copier/copy_test.go b/contrib/release-copier-action/copier/copy_test.go
deleted file mode 100644
index e020119126..0000000000
--- a/contrib/release-copier-action/copier/copy_test.go
+++ /dev/null
@@ -1,60 +0,0 @@
-package copier_test
-
-import (
- "github.com/brianvoe/gofakeit/v6"
- "github.com/google/go-github/v41/github"
- "github.com/migueleliasweb/go-github-mock/src/mock"
- . "github.com/stretchr/testify/assert"
- "github.com/synapsecns/sanguine/contrib/release-copier-action/copier"
-)
-
-func makeRepoTags(count int) []github.RepositoryTag {
- var tags []github.RepositoryTag
- for i := 0; i < count; i++ {
- tags = append(tags, github.RepositoryTag{
- Name: github.String(gofakeit.Name()),
- })
- }
- return tags
-}
-
-func (c *CopierSuite) TestGetTagsForRelease() {
- const targetTag = "v1.0.0"
- const targetCommit = "i-am-a-commit"
- const targetMessage = "i-am-a-message"
-
- mockedHTTPClient := mock.NewMockedHTTPClient(
- mock.WithRequestMatchPages(
- mock.GetReposTagsByOwnerByRepo,
- makeRepoTags(50),
- makeRepoTags(50),
- []github.RepositoryTag{
- {
- Name: github.String(targetTag),
- Commit: &github.Commit{
- SHA: github.String(targetCommit),
- },
- },
- },
- ),
- mock.WithRequestMatch(
- mock.GetReposGitCommitsByOwnerByRepoByCommitSha,
- github.Commit{
- SHA: github.String(targetCommit),
- Message: github.String(targetMessage),
- },
- ))
-
- cp := copier.NewReleaseCopier(c.GetTestContext(), "")
- cp.SetSourceOwner("testowner")
- cp.SetSourceRepo("testrepo")
-
- cp.SetClient(github.NewClient(mockedHTTPClient))
-
- tag, err := cp.GetTagForRelease(c.GetTestContext(), &github.RepositoryRelease{
- TagName: github.String("v1.0.0"),
- })
-
- Nil(c.T(), err)
- Equal(c.T(), targetMessage, tag.GetCommit().GetMessage())
-}
diff --git a/contrib/release-copier-action/copier/doc.go b/contrib/release-copier-action/copier/doc.go
deleted file mode 100644
index cf65066cc5..0000000000
--- a/contrib/release-copier-action/copier/doc.go
+++ /dev/null
@@ -1,3 +0,0 @@
-// Package copier provides a client for copying Github releases from one repository to another.
-// It uses the Github API to get a release by its tag name, create a new tag and release in the target repository, and upload the assets of the original release in the target release.
-package copier
diff --git a/contrib/release-copier-action/copier/export_test.go b/contrib/release-copier-action/copier/export_test.go
deleted file mode 100644
index 653213cfa0..0000000000
--- a/contrib/release-copier-action/copier/export_test.go
+++ /dev/null
@@ -1,28 +0,0 @@
-package copier
-
-import "github.com/google/go-github/v41/github"
-
-// SetClient allows the client ot be overridden so we can take advantage of mocking.
-func (r *ReleaseCopier) SetClient(client *github.Client) {
- r.client = client
-}
-
-// SetSourceOwner allows the source owner to be overridden so we can take advantage of mocking.
-func (r *ReleaseCopier) SetSourceOwner(sourceOwner string) {
- r.sourceOwner = sourceOwner
-}
-
-// SetSourceRepo allows the source repo to be overridden so we can take advantage of mocking.
-func (r *ReleaseCopier) SetSourceRepo(sourceRepo string) {
- r.sourceRepo = sourceRepo
-}
-
-// SetTargetOwner allows the target owner to be overridden so we can take advantage of mocking.
-func (r *ReleaseCopier) SetTargetOwner(targetOwner string) {
- r.targetOwner = targetOwner
-}
-
-// SetTargetRepo allows the target repo to be overridden so we can take advantage of mocking.
-func (r *ReleaseCopier) SetTargetRepo(targetRepo string) {
- r.targetRepo = targetRepo
-}
diff --git a/contrib/release-copier-action/copier/suite_test.go b/contrib/release-copier-action/copier/suite_test.go
deleted file mode 100644
index 8bbfa75638..0000000000
--- a/contrib/release-copier-action/copier/suite_test.go
+++ /dev/null
@@ -1,25 +0,0 @@
-package copier_test
-
-import (
- "github.com/stretchr/testify/suite"
- "github.com/synapsecns/sanguine/core/testsuite"
- "testing"
-)
-
-// CopierSuite defines the basic test suite.
-type CopierSuite struct {
- *testsuite.TestSuite
-}
-
-// NewTestSuite creates a new test suite and performs some basic checks afterward.
-// Every test suite in the synapse library should inherit from this suite and override where necessary.
-func NewTestSuite(tb testing.TB) *CopierSuite {
- tb.Helper()
- return &CopierSuite{
- testsuite.NewTestSuite(tb),
- }
-}
-
-func TestCopierSuite(t *testing.T) {
- suite.Run(t, NewTestSuite(t))
-}
diff --git a/contrib/release-copier-action/go.mod b/contrib/release-copier-action/go.mod
deleted file mode 100644
index 0d0426f3d2..0000000000
--- a/contrib/release-copier-action/go.mod
+++ /dev/null
@@ -1,48 +0,0 @@
-module github.com/synapsecns/sanguine/contrib/release-copier-action
-
-go 1.21
-
-require (
- github.com/brianvoe/gofakeit/v6 v6.27.0
- github.com/google/go-github/v41 v41.0.0
- github.com/migueleliasweb/go-github-mock v0.0.16
- github.com/sethvargo/go-githubactions v1.1.0
- github.com/stretchr/testify v1.8.4
- github.com/synapsecns/sanguine/core v0.0.0-00010101000000-000000000000
- golang.org/x/oauth2 v0.16.0
-)
-
-require (
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
- github.com/gogo/protobuf v1.3.3 // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/go-github/v50 v50.0.0 // indirect
- github.com/google/go-querystring v1.1.0 // indirect
- github.com/gorilla/mux v1.8.1 // indirect
- github.com/ipfs/go-log v1.0.5 // indirect
- github.com/ipfs/go-log/v2 v2.5.1 // indirect
- github.com/kr/pretty v0.3.1 // indirect
- github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/opentracing/opentracing-go v1.2.0 // indirect
- github.com/pmezard/go-difflib v1.0.0 // indirect
- github.com/rogpeppe/go-internal v1.11.0 // indirect
- github.com/sethvargo/go-envconfig v0.8.0 // indirect
- go.uber.org/multierr v1.11.0 // indirect
- go.uber.org/zap v1.27.0 // indirect
- golang.org/x/crypto v0.19.0 // indirect
- golang.org/x/sys v0.17.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/protobuf v1.32.0 // indirect
- gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect
- gopkg.in/yaml.v3 v3.0.1 // indirect
- k8s.io/apimachinery v0.25.5 // indirect
- k8s.io/klog/v2 v2.80.1 // indirect
- k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect
-)
-
-replace (
- github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
- github.com/synapsecns/sanguine/core => ../../core
-)
diff --git a/contrib/release-copier-action/go.sum b/contrib/release-copier-action/go.sum
deleted file mode 100644
index f0ef03c687..0000000000
--- a/contrib/release-copier-action/go.sum
+++ /dev/null
@@ -1,228 +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/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
-github.com/brianvoe/gofakeit/v6 v6.27.0 h1:rI6rhEtXnMfdRHc1pE1tdXN/LRnDlRzFZXL2ArDV3Wk=
-github.com/brianvoe/gofakeit/v6 v6.27.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs=
-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/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/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/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/go-kit/log v0.2.0/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.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ=
-github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
-github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
-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.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk=
-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=
-github.com/google/go-cmp v0.5.2/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.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/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/v50 v50.0.0 h1:gdO1AeuSZZK4iYWwVbjni7zg8PIQhp7QfmPunr016Jk=
-github.com/google/go-github/v50 v50.0.0/go.mod h1:Ev4Tre8QoKiolvbpOSG3FIi4Mlon3S2Nt9W5JYqKiwA=
-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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
-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/ipfs/go-log v1.0.5 h1:2dOuUCB1Z7uoczMWgAyDck5JLb72zHzrMnGnCNNbvY8=
-github.com/ipfs/go-log v1.0.5/go.mod h1:j0b8ZoR+7+R99LD9jZ6+AJsrzkPbSXbZfGakb5JPtIo=
-github.com/ipfs/go-log/v2 v2.1.3/go.mod h1:/8d0SH3Su5Ooc31QlL1WysJhvyOTDCjcCZ9Axpmri6g=
-github.com/ipfs/go-log/v2 v2.5.1 h1:1XdUzF7048prq4aBjDQQ4SL5RxftpRGdXhNRwKSAlcY=
-github.com/ipfs/go-log/v2 v2.5.1/go.mod h1:prSpmC1Gpllc9UYWxDiZDreBYw7zp4Iqp1kOLU9U5UI=
-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/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/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94=
-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/migueleliasweb/go-github-mock v0.0.16 h1:iEx6iqYASRJVoEO5eMOYpQZFTc00cZ6ysynOArUKM3A=
-github.com/migueleliasweb/go-github-mock v0.0.16/go.mod h1:CjrgPd8s5sf5g3XSESAQqxufae+PZbgM/F317C3uD7g=
-github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
-github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
-github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
-github.com/pkg/errors v0.8.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/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4=
-github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI=
-github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-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/sethvargo/go-envconfig v0.8.0 h1:AcmdAewSFAc7pQ1Ghz+vhZkilUtxX559QlDuLLiSkdI=
-github.com/sethvargo/go-envconfig v0.8.0/go.mod h1:Iz1Gy1Sf3T64TQlJSvee81qDhf7YIlt8GMUX6yyNFs0=
-github.com/sethvargo/go-githubactions v1.1.0 h1:mg03w+b+/s5SMS298/2G6tHv8P0w0VhUFaqL1THIqzY=
-github.com/sethvargo/go-githubactions v1.1.0/go.mod h1:qIboSF7yq2Qnaw2WXDsqCReM0Lo1gU4QXUWmhBC3pxE=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-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.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
-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.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
-github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
-go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ=
-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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
-go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU=
-go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
-go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
-go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ=
-go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
-go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
-go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
-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-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-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.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=
-golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc=
-golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
-golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/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-20200226121028-0de0cce0169b/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
-golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
-golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-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/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-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/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/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-20210330210617-4fbd30eecc44/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-20210630005230-0f9fa26af87c/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.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/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.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/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-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
-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-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
-golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
-golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
-golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
-golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/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=
-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/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-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-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.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
-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=
-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/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.8/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.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=
-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=
-honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
-k8s.io/apimachinery v0.25.5 h1:SQomYHvv+aO43qdu3QKRf9YuI0oI8w3RrOQ1qPbAUGY=
-k8s.io/apimachinery v0.25.5/go.mod h1:1S2i1QHkmxc8+EZCIxe/fX5hpldVXk4gvnJInMEb8D4=
-k8s.io/klog/v2 v2.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=
-k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y=
-k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
diff --git a/contrib/release-copier-action/main.go b/contrib/release-copier-action/main.go
deleted file mode 100644
index 85bec356bd..0000000000
--- a/contrib/release-copier-action/main.go
+++ /dev/null
@@ -1,34 +0,0 @@
-// Package main provides an entrypoint for a Github Action to copy a release from one repository to another.
-// It uses the Github API to get a release by its tag name, create a new tag and release in the target repository, and upload the assets of the original release in the target release.
-package main
-
-import (
- "context"
- "github.com/sethvargo/go-githubactions"
- "github.com/synapsecns/sanguine/contrib/release-copier-action/copier"
- "github.com/synapsecns/sanguine/contrib/release-copier-action/util"
- "os"
-)
-
-func main() {
- // here we parse a number of variables we use in the action:
- //
- // GITHUB_TOKEN: the github access token
- // GITHUB_REPOSITORY: the repository we are running the action on in the format owner/repo
- repoOwner, repoPath := util.ParseGithubRepository(os.Getenv("GITHUB_REPOSITORY"))
- token := githubactions.GetInput("github_token")
-
- // we also parse the source and target repositories
- destOwner, destRepo := util.ParseGithubRepository(githubactions.GetInput("destination_repo"))
- // and the tag to copy
- tagName := githubactions.GetInput("tag_name")
- // the prefix to strip
- stripPrefix := githubactions.GetInput("strip_prefix")
-
- client := copier.NewReleaseCopier(context.Background(), token)
-
- err := client.CopyRelease(context.Background(), repoOwner, repoPath, destOwner, destRepo, tagName, stripPrefix)
- if err != nil {
- panic(err)
- }
-}
diff --git a/contrib/release-copier-action/util/parse.go b/contrib/release-copier-action/util/parse.go
deleted file mode 100644
index d3b2ded62d..0000000000
--- a/contrib/release-copier-action/util/parse.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// Package util contains utility functions for parsing action inputs
-package util
-
-import "strings"
-
-// ParseGithubRepository parses ghte igthub repository from the GITHUB_REPOSITORY environment variable
-// this comes in the format owner/repo. This function returns the owner and repo as separate strings.
-func ParseGithubRepository(githubRepo string) (repoOwner, repoName string) {
- //nolint: gocritic
- repoOwner = githubRepo[:strings.Index(githubRepo, "/")]
- repoName = githubRepo[strings.Index(githubRepo, "/")+1:]
- return
-}
diff --git a/contrib/release-copier-action/util/parse_test.go b/contrib/release-copier-action/util/parse_test.go
deleted file mode 100644
index 088ae1895f..0000000000
--- a/contrib/release-copier-action/util/parse_test.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package util_test
-
-import (
- . "github.com/stretchr/testify/assert"
- "github.com/synapsecns/sanguine/contrib/release-copier-action/util"
- "testing"
-)
-
-func TestParseGithubRepository(t *testing.T) {
- testCase := "octocat/Hello-World"
- repoOwner, repoName := util.ParseGithubRepository(testCase)
- Equal(t, repoOwner, "octocat")
- Equal(t, repoName, "Hello-World")
-}
diff --git a/contrib/terraform-provider-helmproxy/.gitignore b/contrib/terraform-provider-helmproxy/.gitignore
deleted file mode 100644
index 0526cc68e3..0000000000
--- a/contrib/terraform-provider-helmproxy/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-terraform-provider-helmproxy
-.terraform.lock.hcl
diff --git a/contrib/terraform-provider-helmproxy/.goreleaser.yml b/contrib/terraform-provider-helmproxy/.goreleaser.yml
deleted file mode 100644
index d70e6288c9..0000000000
--- a/contrib/terraform-provider-helmproxy/.goreleaser.yml
+++ /dev/null
@@ -1,75 +0,0 @@
-project_name: terraform-provider-helmproxy
-
-monorepo:
- tag_prefix: contrib/terraform-provider-helmproxy/
- dir: contrib/terraform-provider-helmproxy/
-
-builds:
- - env:
- # goreleaser does not work with CGO, it could also complicate
- # usage by users in CI/CD systems like Terraform Cloud where
- # they are unable to install libraries.
- - CGO_ENABLED=0
- mod_timestamp: '{{ .CommitTimestamp }}'
- flags:
- - -trimpath
- ldflags:
- - '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
- goos:
-# TODO: reenable
-# - freebsd
-# - windows
- - linux
- - darwin
- goarch:
- - amd64
-# - '386'
-# - arm
- - arm64
- ignore:
- - goos: darwin
- goarch: '386'
- binary: '{{ .ProjectName }}_v{{ .Version }}'
-archives:
- - format: zip
- name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
-checksum:
- extra_files:
- - glob: 'terraform-registry-manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS'
- algorithm: sha256
-signs:
- - artifacts: checksum
- args:
- # if you are using this in a GitHub action or some other automated pipeline, you
- # need to pass the batch flag to indicate its not interactive.
- - '--batch'
- - '--local-user'
- - '{{ .Env.GPG_FINGERPRINT }}' # set this environment variable for your signing key
- - '--output'
- - '${signature}'
- - '--detach-sign'
- - '${artifact}'
-release:
- extra_files:
- - glob: 'terraform-registry-manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
- # If you want to manually examine the release before its live, uncomment this line:
- # draft: true
-
-
-# track sizes
-report_sizes: true
-
-# modified timestamps
-metadata:
- # Set the modified timestamp on the metadata files.
- #
- # Templates: allowed.
- mod_timestamp: '{{ .CommitTimestamp }}'
-
-# produce software bill of lading
-sboms:
- - artifacts: archive
-
diff --git a/contrib/terraform-provider-helmproxy/Makefile b/contrib/terraform-provider-helmproxy/Makefile
deleted file mode 100644
index 0340e715e3..0000000000
--- a/contrib/terraform-provider-helmproxy/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-include ../../make/go.Makefile
-
-install-plugin-local: # will install the terraform provider as a local plugin for testing.
- ./scripts/build-tf.sh
-
-run-example: install-plugin-local cleanup-examples # runs an example
- echo "running terraform init, if this fails, you might have to specify amd64 as the arch before using terraform, please see: https://github.com/tfutils/tfenv/issues/337"
- echo "on osx arm64, you can run run-example-m1 as a workaround."
- cd examples && terraform init
-
-cleanup-examples:
- rm -rf examples/.terraform rm -rf examples/.terraform.lock.hcl
-
-run-example-m1: install-plugin-local cleanup-examples # runs an example on osx arm64
- ./scripts/add-tfmac.sh
- source ~/.zshrc
- echo "please run: cd examples && tfmac init"
-
-
-tfenv-install:
- @#Brew - MacOS
- @if [ "$(shell which tflint)" = "" ] && [ "$(shell which brew)" != "" ]; then brew install rflint; fi;
- # default
- @if [ "$(shell which tflint)" = "" ]; then curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash; fi;
-
-
-lint-tf: tfenv-install ## Run golangci-lint and go fmt ./...
- cd examples && tflint --init
- cd examples && tflint
diff --git a/contrib/terraform-provider-helmproxy/examples/google.tf b/contrib/terraform-provider-helmproxy/examples/google.tf
deleted file mode 100644
index bc5727f544..0000000000
--- a/contrib/terraform-provider-helmproxy/examples/google.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-# google provider used for kube access
-provider "google" {
-}
-
-# token
-data "google_service_account_access_token" "kube_sa" {
- target_service_account = var.service_account
- lifetime = "1000s"
- scopes = [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/userinfo.email"
- ]
-}
diff --git a/contrib/terraform-provider-helmproxy/examples/main.tf b/contrib/terraform-provider-helmproxy/examples/main.tf
deleted file mode 100644
index 5555e660ef..0000000000
--- a/contrib/terraform-provider-helmproxy/examples/main.tf
+++ /dev/null
@@ -1,30 +0,0 @@
-terraform {
- required_providers {
- helmproxy = {
- version = "~> 1.0.0"
- source = "example-helm.com/provider/helmproxy"
- }
- }
-}
-
-
-provider "helmproxy" {
- instance = var.instance
- zone = var.zone
- interface = var.interface
- project = var.project
- remote_port = var.remote_port
-
- kubernetes {
- // TODO: this needs to be changed to work cross cluster
- host = ""
- token = data.google_service_account_access_token.kube_sa.access_token
- config_path = var.config_path
- config_context = var.config_context
- }
-}
-
-resource "helmproxy_release" "omnirpc_example" {
- name = "omnirpc-example"
- chart = "../../../charts/omnirpc/"
-}
diff --git a/contrib/terraform-provider-helmproxy/examples/variables.tf b/contrib/terraform-provider-helmproxy/examples/variables.tf
deleted file mode 100644
index f807da14b8..0000000000
--- a/contrib/terraform-provider-helmproxy/examples/variables.tf
+++ /dev/null
@@ -1,47 +0,0 @@
-variable "service_account" {
- type = string
- description = "The service account to impersonate"
-}
-
-variable "config_path" {
- type = string
- description = "The path to the kube config file"
- default = "~/.kube/config"
-}
-
-variable "config_context" {
- type = string
- description = "The context to use in the kube config file"
-}
-
-variable "zone" {
- type = string
- description = "The zone of the bastion proxy"
-}
-
-
-variable "instance" {
- type = string
- description = "The instance to use for the bastion proxy"
- default = "rpc-bastion"
-}
-
-variable "interface" {
- type = string
- description = "The interface to use for the bastion proxy"
- default = "nic0"
-}
-
-variable "project" {
- type = string
- description = "The project of the bastion proxy"
-}
-
-variable "remote_port" {
- type = string
- description = "The remote_port of the bastion proxy"
- # tiny proxy default
- default = 8888
-}
-
-
diff --git a/contrib/terraform-provider-helmproxy/go.mod b/contrib/terraform-provider-helmproxy/go.mod
deleted file mode 100644
index 1bf6a97fbc..0000000000
--- a/contrib/terraform-provider-helmproxy/go.mod
+++ /dev/null
@@ -1,236 +0,0 @@
-module github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy
-
-go 1.21
-
-replace (
- github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
- github.com/synapsecns/sanguine/contrib/tfcore => ../../contrib/tfcore
- golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783
- k8s.io/kubectl => k8s.io/kubectl v0.24.2
-)
-
-require (
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1
- github.com/hashicorp/terraform-provider-helm v1.3.3-0.20230117165241-19fa52fdcd9a
- github.com/synapsecns/sanguine/contrib/tfcore v0.0.0-00010101000000-000000000000
-)
-
-require (
- bitbucket.org/creachadair/stringset v0.0.8 // indirect
- cloud.google.com/go v0.111.0 // indirect
- cloud.google.com/go/bigtable v1.10.1 // 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.5 // indirect
- cloud.google.com/go/longrunning v0.5.4 // indirect
- dario.cat/mergo v1.0.0 // indirect
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
- github.com/Azure/go-autorest v14.2.0+incompatible // indirect
- github.com/Azure/go-autorest/autorest v0.11.28 // indirect
- github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
- github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
- github.com/Azure/go-autorest/logger v0.2.1 // indirect
- github.com/Azure/go-autorest/tracing v0.6.0 // indirect
- github.com/BurntSushi/toml v1.3.2 // indirect
- github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518 // indirect
- github.com/MakeNowJust/heredoc v1.0.0 // indirect
- github.com/Masterminds/goutils v1.1.1 // indirect
- github.com/Masterminds/semver/v3 v3.1.1 // indirect
- github.com/Masterminds/sprig/v3 v3.2.2 // indirect
- github.com/Masterminds/squirrel v1.5.3 // indirect
- github.com/Microsoft/go-winio v0.6.1 // indirect
- github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
- github.com/agext/levenshtein v1.2.3 // indirect
- github.com/apparentlymart/go-cidr v1.1.0 // 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/cenkalti/backoff v2.2.1+incompatible // indirect
- github.com/cespare/xxhash/v2 v2.2.0 // indirect
- github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect
- github.com/containerd/cgroups v1.1.0 // indirect
- github.com/containerd/containerd v1.6.14 // indirect
- github.com/cyphar/filepath-securejoin v0.2.4 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/docker/cli v20.10.17+incompatible // indirect
- github.com/docker/distribution v2.8.1+incompatible // indirect
- github.com/docker/docker v20.10.23+incompatible // indirect
- github.com/docker/docker-credential-helpers v0.7.0 // indirect
- github.com/docker/go-connections v0.4.0 // indirect
- github.com/docker/go-metrics v0.0.1 // indirect
- github.com/docker/go-units v0.5.0 // indirect
- github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a // indirect
- github.com/emicklei/go-restful/v3 v3.10.1 // indirect
- github.com/emirpasic/gods v1.18.1 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
- github.com/fatih/color v1.13.0 // indirect
- github.com/felixge/httpsnoop v1.0.3 // indirect
- github.com/frankban/quicktest v1.14.6 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
- github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 // indirect
- github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 // indirect
- github.com/gartnera/gcloud v0.0.15 // 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.5.0 // indirect
- github.com/go-gorp/gorp/v3 v3.0.2 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
- github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.5 // indirect
- github.com/go-openapi/jsonreference v0.20.0 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
- github.com/go-sql-driver/mysql v1.7.0 // indirect
- github.com/gobwas/glob v0.2.3 // indirect
- github.com/gogo/protobuf v1.3.3 // indirect
- github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
- github.com/golang/glog v1.1.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/gomodule/redigo v2.0.0+incompatible // indirect
- github.com/google/btree v1.1.2 // indirect
- github.com/google/gnostic v0.6.9 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
- github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // 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/gorilla/mux v1.8.1 // indirect
- github.com/gorilla/websocket v1.5.1 // indirect
- github.com/gosuri/uitable v0.0.4 // indirect
- github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
- github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-checkpoint v0.5.0 // indirect
- github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
- github.com/hashicorp/go-hclog v1.4.0 // indirect
- github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-plugin v1.4.8 // indirect
- github.com/hashicorp/go-uuid v1.0.3 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
- github.com/hashicorp/hc-install v0.4.0 // indirect
- github.com/hashicorp/hcl/v2 v2.15.0 // indirect
- github.com/hashicorp/logutils v1.0.0 // indirect
- github.com/hashicorp/terraform-exec v0.17.3 // indirect
- github.com/hashicorp/terraform-json v0.14.0 // indirect
- github.com/hashicorp/terraform-plugin-go v0.14.2 // indirect
- github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect
- github.com/hashicorp/terraform-provider-google/v4 v4.2.0 // indirect
- github.com/hashicorp/terraform-registry-address v0.1.0 // indirect
- github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
- github.com/huandu/xstrings v1.3.2 // indirect
- github.com/imdario/mergo v0.3.13 // indirect
- github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jmoiron/sqlx v1.3.5 // 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
- github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f // indirect
- github.com/klauspost/compress v1.17.6 // indirect
- github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
- github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
- github.com/lib/pq v1.10.6 // indirect
- github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // 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.20 // indirect
- github.com/mattn/go-runewidth v0.0.13 // indirect
- github.com/mattn/go-sqlite3 v2.0.3+incompatible // indirect
- github.com/mitchellh/copystructure v1.2.0 // indirect
- github.com/mitchellh/go-homedir v1.1.0 // indirect
- github.com/mitchellh/go-testing-interface v1.14.1 // indirect
- github.com/mitchellh/go-wordwrap v1.0.1 // indirect
- github.com/mitchellh/hashstructure v1.1.0 // indirect
- github.com/mitchellh/mapstructure v1.5.0 // indirect
- github.com/mitchellh/reflectwalk v1.0.2 // indirect
- github.com/moby/locker v1.0.1 // indirect
- github.com/moby/spdystream v0.2.0 // indirect
- github.com/moby/sys/mountinfo v0.6.2 // indirect
- github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
- github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
- github.com/morikuni/aec v1.0.0 // indirect
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
- github.com/oklog/run v1.1.0 // indirect
- github.com/onsi/ginkgo v1.16.5 // indirect
- github.com/onsi/ginkgo/v2 v2.15.0 // indirect
- github.com/onsi/gomega v1.30.0 // indirect
- github.com/opencontainers/go-digest v1.0.0 // indirect
- github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 // indirect
- github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
- github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 // indirect
- github.com/pjbgf/sha1cd v0.3.0 // indirect
- github.com/pkg/errors v0.9.1 // indirect
- github.com/prometheus/client_golang v1.18.0 // indirect
- github.com/prometheus/client_model v0.6.0 // indirect
- github.com/prometheus/common v0.47.0 // indirect
- github.com/prometheus/procfs v0.12.0 // indirect
- github.com/rivo/uniseg v0.2.0 // indirect
- github.com/rubenv/sql-migrate v1.1.1 // indirect
- github.com/russross/blackfriday v1.6.0 // indirect
- github.com/shopspring/decimal v1.3.1 // indirect
- github.com/sirupsen/logrus v1.9.0 // indirect
- github.com/skeema/knownhosts v1.2.1 // indirect
- github.com/spf13/cast v1.5.0 // indirect
- github.com/spf13/cobra v1.6.1 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
- github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
- github.com/vmihailenco/tagparser v0.1.2 // indirect
- github.com/xanzy/ssh-agent v0.3.3 // indirect
- github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f // indirect
- github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
- github.com/xeipuuv/gojsonschema v1.2.0 // indirect
- github.com/xlab/treeprint v1.2.0 // indirect
- github.com/zclconf/go-cty v1.12.1 // indirect
- go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/otel v1.23.1 // indirect
- go.opentelemetry.io/otel/metric v1.23.1 // indirect
- go.opentelemetry.io/otel/trace v1.23.1 // indirect
- go.starlark.net v0.0.0-20221205180719-3fd0dac74452 // indirect
- golang.org/x/crypto v0.19.0 // indirect
- golang.org/x/mod v0.15.0 // indirect
- golang.org/x/net v0.21.0 // indirect
- golang.org/x/oauth2 v0.16.0 // indirect
- golang.org/x/sync v0.6.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
- golang.org/x/time v0.3.0 // indirect
- golang.org/x/tools v0.18.0 // indirect
- google.golang.org/api v0.149.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240108191215-35c7eff3a6b1 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 // indirect
- google.golang.org/grpc v1.60.1 // indirect
- google.golang.org/protobuf v1.32.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
- helm.sh/helm/v3 v3.9.4 // indirect
- k8s.io/api v0.25.5 // indirect
- k8s.io/apiextensions-apiserver v0.25.5 // indirect
- k8s.io/apimachinery v0.25.5 // indirect
- k8s.io/apiserver v0.25.5 // indirect
- k8s.io/cli-runtime v0.25.5 // indirect
- k8s.io/client-go v0.25.5 // indirect
- k8s.io/component-base v0.25.5 // indirect
- k8s.io/klog/v2 v2.80.1 // indirect
- k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 // indirect
- k8s.io/kubectl v0.25.5 // indirect
- k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect
- oras.land/oras-go v1.2.0 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/kustomize/api v0.12.1 // indirect
- sigs.k8s.io/kustomize/kyaml v0.13.9 // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
-)
diff --git a/contrib/terraform-provider-helmproxy/go.sum b/contrib/terraform-provider-helmproxy/go.sum
deleted file mode 100644
index 215cd0f8c7..0000000000
--- a/contrib/terraform-provider-helmproxy/go.sum
+++ /dev/null
@@ -1,2042 +0,0 @@
-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=
-bitbucket.org/creachadair/stringset v0.0.8 h1:gQqe4vs8XWgMyijfyKE6K8o4TcyGGrRXe0JvHgx5H+M=
-bitbucket.org/creachadair/stringset v0.0.8/go.mod h1:AgthVMyMxC/6FK1KBJ2ALdqkZObGN8hOetgpwXyMn34=
-cloud.google.com/go v0.26.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.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU=
-cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw=
-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.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=
-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.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM=
-cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU=
-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/bigtable v1.10.1 h1:QKcRHeAsraxIlrdCZ3LLobXKBvITqcOEnSbHG2rzL9g=
-cloud.google.com/go/bigtable v1.10.1/go.mod h1:cyHeKlx6dcZCO0oSQucYdauseD8kIENGuDOJPKMCVg8=
-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.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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
-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.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=
-cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI=
-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.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
-contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc=
-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/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
-github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
-github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
-github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
-github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
-github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
-github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
-github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U=
-github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
-github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
-github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
-github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
-github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
-github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
-github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
-github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
-github.com/BurntSushi/toml v1.3.2 h1:o7IhLm0Msx3BaB+n3Ag7L8EVlByGnpq14C4YWiu/gL8=
-github.com/BurntSushi/toml v1.3.2/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
-github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
-github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
-github.com/DATA-DOG/go-sqlmock v1.5.0/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
-github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
-github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518 h1:tFdFasG+VDpnn+BfVbZrfGcoH6pw6s7ODYlZlhTO3UM=
-github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518/go.mod h1:oEeBHikdF/NrnUy0ornVaY1OT+jGvTqm+LQS0+ZDKzU=
-github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
-github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
-github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
-github.com/Masterminds/goutils v1.1.0/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU=
-github.com/Masterminds/goutils v1.1.1 h1:5nUrii3FMTL5diU80unEVvNevw1nH4+ZV4DSLVJLSYI=
-github.com/Masterminds/goutils v1.1.1/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/semver/v3 v3.1.1 h1:hLg3sBzpNErnxhQtUy/mmLR2I9foDujNK030IGemrRc=
-github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs=
-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/Masterminds/sprig/v3 v3.2.2 h1:17jRggJu518dr3QaafizSXOjKYp94wKfABxUmyxvxX8=
-github.com/Masterminds/sprig/v3 v3.2.2/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk=
-github.com/Masterminds/squirrel v1.5.3 h1:YPpoceAcxuzIljlr5iWpNKaql7hLeG1KLSrhvdHpkZc=
-github.com/Masterminds/squirrel v1.5.3/go.mod h1:NNaOrjSoIDfDA40n7sr2tPNZRfjzjA400rg+riTZj10=
-github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA=
-github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
-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/Microsoft/hcsshim v0.9.6 h1:VwnDOgLeoi2du6dAznfmspNqTiwczvjv4K7NxuY9jsY=
-github.com/Microsoft/hcsshim v0.9.6/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc=
-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/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM=
-github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
-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/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d h1:UrqY+r/OJnIp5u0s1SbQ8dVfLCZJsnvazdBP5hS4iRs=
-github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ=
-github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-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/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
-github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
-github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
-github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
-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/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
-github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE=
-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/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
-github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=
-github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
-github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
-github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
-github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/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/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/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-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/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/augustoroman/hexdump v0.0.0-20190827031536-6506f4163e93 h1:z6k1vb5L2wqLK4SIk3fpUiXnhNWSZ6Oyy8AaLqr0B+A=
-github.com/augustoroman/hexdump v0.0.0-20190827031536-6506f4163e93/go.mod h1:ps2Vk8wMZarkeIPtUqW/FUvwVVdeRDbewMYz+EmuEgk=
-github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
-github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.25.3/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.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
-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/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/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/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
-github.com/bshuster-repo/logrus-logstash-hook v1.0.0 h1:e+C0SB5R1pu//O4MQ3f9cFuPGoOVeF2fE4Og9otCc70=
-github.com/bshuster-repo/logrus-logstash-hook v1.0.0/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk=
-github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0=
-github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd h1:rFt+Y/IK1aEZkEHchZRSq9OQbsSzIT/OrI8YFFmRIng=
-github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
-github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b h1:otBG+dV+YK+Soembjv71DPz3uX/V/6MMlSyD9JBQ6kQ=
-github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50=
-github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0 h1:nvj0OLI3YqYXer/kZD8Ri1aaunCxIEsOst1BVJswV0o=
-github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
-github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
-github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
-github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/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 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8=
-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/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/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/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/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
-github.com/containerd/cgroups v1.1.0 h1:v8rEWFl6EoqHB+swVNjVoCJE8o3jX7e8nqBGPLaDFBM=
-github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw=
-github.com/containerd/containerd v1.6.14 h1:W+d0AJKVG3ioTZZyQwcw1Y3vvo6ZDYzAcjDcY4tkgGI=
-github.com/containerd/containerd v1.6.14/go.mod h1:U2NnBPIhzJDm59xF7xB2MMHnKtggpZ+phKg8o2TKj2c=
-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-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-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/creachadair/staticfile v0.1.2/go.mod h1:a3qySzCIXEprDGxk6tSxSI+dBBdLzqeBOMhZ+o2d3pM=
-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/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
-github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
-github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
-github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
-github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc=
-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/denisenkom/go-mssqldb v0.9.0/go.mod h1:xbL0rPBG9cCiLr28tMa8zpbdarY27NDyej4t/EjAShU=
-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/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269 h1:hbCT8ZPPMqefiAWD2ZKjn7ypokIGViTvBBg/ExLSdCk=
-github.com/distribution/distribution/v3 v3.0.0-20220526142353-ffbd94cbe269/go.mod h1:28YO/VJk9/64+sTGNuYaBjWxrXTPrj0C0XmgTIOjxX4=
-github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
-github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
-github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M=
-github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/distribution v2.8.1+incompatible h1:Q50tZOPR6T/hjNsyc9g8/syEs6bk8XXApsHjKukMl68=
-github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker v20.10.23+incompatible h1:1ZQUUYAdh+oylOT85aA2ZcfRp22jmLhoaEcVEfK8dyA=
-github.com/docker/docker v20.10.23+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
-github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
-github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
-github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
-github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
-github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c h1:+pKlWGMw7gf6bQ+oDZB4KHQFypsfjYlq/C4rfL7D3g8=
-github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
-github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8=
-github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
-github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
-github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1 h1:ZClxb8laGDf5arXfYcAtECDFgAgHklGI8CxgjHnXKJ4=
-github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
-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-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
-github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/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/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ=
-github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-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=
-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.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.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/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4=
-github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
-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/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.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/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM=
-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.0.0-20180920172122-f6adf94963e4 h1:R+19WKQClnfMXS60cP5BmMe1wjZ4u0evY2p2Ar0ZTXo=
-github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI=
-github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 h1:EipXK6U05IQ2wtuFRn4k3h0+2lXypzItoXGVyf4r9Io=
-github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w=
-github.com/gartnera/gcloud v0.0.15 h1:/PkEnxPczVRS78MkMDz6wfdRR8YDDjzr0VF6ri6cGVs=
-github.com/gartnera/gcloud v0.0.15/go.mod h1:i9wWa1ndPbE8AhduqRMX9nAv9X9HqN9xgqydfEdFLGo=
-github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
-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.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/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
-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.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-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/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-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.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
-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.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM=
-github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
-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-gorp/gorp/v3 v3.0.2 h1:ULqJXIekoqMx29FI5ekXXFoH1dT2Vc8UhnRzBg+Emz4=
-github.com/go-gorp/gorp/v3 v3.0.2/go.mod h1:BJ3q1ejpV8cVALtcXvXaXyTOlMmJhWDxTmncaR6rwBY=
-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-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/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.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.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro=
-github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
-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.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/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.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-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-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-sql-driver/mysql v1.7.0 h1:ueSltNNllEqE3qcWBTD0iQd3IpL/6U+mJxLkazJ7YPc=
-github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-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-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/logger v1.0.6 h1:nnZNpxYo0zx+Aj9RfMPBm+x9zAU2OayFh/xrAWi34HU=
-github.com/gobuffalo/logger v1.0.6/go.mod h1:J31TBEHR1QLV2683OXTAItYIg8pv2JMHnF/quuAbMjs=
-github.com/gobuffalo/packd v1.0.1 h1:U2wXfRr4E9DH8IdsDLlRFwTZTK7hLfq9qT/QHXGVe/0=
-github.com/gobuffalo/packd v1.0.1/go.mod h1:PP2POP3p3RXGz7Jh6eYEf93S7vA2za6xM7QT85L4+VY=
-github.com/gobuffalo/packr/v2 v2.8.3 h1:xE1yzvnO56cUC0sTpKR3DIbxZgB54AftTFMhB2XEWlY=
-github.com/gobuffalo/packr/v2 v2.8.3/go.mod h1:0SahksCVcx4IMnigTjiFuyldmTrdTctXsOdiU5KwbKc=
-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/godror/godror v0.24.2/go.mod h1:wZv/9vPiUib6tkoDl+AZ/QLf5YZgMravZ7jxH2eQWAE=
-github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
-github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
-github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
-github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
-github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0=
-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-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/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=
-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.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.3/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/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk=
-github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
-github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
-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/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
-github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-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/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/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.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/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-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=
-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-20210506205249-923b5ab0fc1a/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-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo=
-github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
-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/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
-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/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.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.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-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.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.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/gnostic v0.5.1/go.mod h1:6U4PtQXGIEt/Z3h5MAT7FNofLnw9vXk2cUuW7uA/OeU=
-github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ=
-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/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH4=
-github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
-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/gorilla/websocket v0.0.0-20170926233335-4201258b820c/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/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
-github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
-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/gosuri/uitable v0.0.4 h1:IG2xLKRvErL3uhY6e1BylFzG+aJiwQviDDTfOKeKTpY=
-github.com/gosuri/uitable v0.0.4/go.mod h1:tKR86bXuXPZazfOTG1FIzvjIdXzd0mo4Vtn16vt0PJo=
-github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
-github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/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.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
-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.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-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 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-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
-github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
-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 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
-github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI=
-github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
-github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY=
-github.com/hashicorp/go-getter v1.5.0/go.mod h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM=
-github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
-github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I=
-github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
-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-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0=
-github.com/hashicorp/go-plugin v1.4.0/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
-github.com/hashicorp/go-plugin v1.4.8 h1:CHGwpxYDOttQOY7HOWgETU9dyVjOXzniXDqJcYJE1zM=
-github.com/hashicorp/go-plugin v1.4.8/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-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-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
-github.com/hashicorp/go-uuid v1.0.3/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.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.3.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=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hc-install v0.4.0 h1:cZkRFr1WVa0Ty6x5fTvL1TuO1flul231rWkGH92oYYk=
-github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8=
-github.com/hashicorp/hcl/v2 v2.6.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY=
-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/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/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-exec v0.12.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8=
-github.com/hashicorp/terraform-exec v0.13.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8=
-github.com/hashicorp/terraform-exec v0.17.3 h1:MX14Kvnka/oWGmIkyuyvL6POx25ZmKrjlaclkx3eErU=
-github.com/hashicorp/terraform-exec v0.17.3/go.mod h1:+NELG0EqQekJzhvikkeQsOAZpsw0cv/03rbeQJqscAI=
-github.com/hashicorp/terraform-json v0.8.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE=
-github.com/hashicorp/terraform-json v0.12.0/go.mod h1:pmbq9o4EuL43db5+0ogX10Yofv1nozM+wskr/bGFJpI=
-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/terraform-plugin-go v0.1.0/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
-github.com/hashicorp/terraform-plugin-go v0.2.1/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
-github.com/hashicorp/terraform-plugin-go v0.14.2 h1:rhsVEOGCnY04msNymSvbUsXfRLKh9znXZmHlf5e8mhE=
-github.com/hashicorp/terraform-plugin-go v0.14.2/go.mod h1:Q12UjumPNGiFsZffxOsA40Tlz1WVXt2Evh865Zj0+UA=
-github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs=
-github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.0/go.mod h1:JBItawj+j8Ssla5Ib6BC/W9VQkOucBfnX7VRtyx1vw8=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.5.0/go.mod h1:z+cMZ0iswzZOahBJ3XmNWgWkVnAd2bl8g+FhyyuPDH4=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 h1:zHcMbxY0+rFO9gY99elV/XC/UnQVg7FhRCbj1i5b7vM=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1/go.mod h1:+tNlb0wkfdsDJ7JEiERLz4HzM19HyiuIoGzTsM7rPpw=
-github.com/hashicorp/terraform-provider-google/v4 v4.2.0 h1:w0r/YEy7ZM5mTMAarRUpS7eyYrXTN5mazwHtLnEGAk8=
-github.com/hashicorp/terraform-provider-google/v4 v4.2.0/go.mod h1:eUbSXbhfBMNiOuofFo688iPhk42O782vze8drAN2sPA=
-github.com/hashicorp/terraform-provider-helm v1.3.3-0.20230117165241-19fa52fdcd9a h1:044aeLPQougT2CWVPGK7PmHnrmCfEjl4S0Gtt65G31A=
-github.com/hashicorp/terraform-provider-helm v1.3.3-0.20230117165241-19fa52fdcd9a/go.mod h1:U3NK7vWlemvAEagGY2pZsyfG0wThfm8D3TY4xesp9eg=
-github.com/hashicorp/terraform-registry-address v0.1.0 h1:W6JkV9wbum+m516rCl5/NjKxCyTVaaUBbzYcMzBDO3U=
-github.com/hashicorp/terraform-registry-address v0.1.0/go.mod h1:EnyO2jYO6j29DTHbJcm00E5nQTFeTtyZH3H5ycydQ5A=
-github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
-github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
-github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
-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/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-github.com/huandu/xstrings v1.3.2 h1:L18LIDzqlW6xN2rEkpdV8+oL/IXWJ1APd+vsdYy4Wdw=
-github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE=
-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.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-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/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-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/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.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-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.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
-github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4=
-github.com/jhump/protoreflect v1.14.1 h1:N88q7JkxTHWFEqReuTsYH1dPIwXxA0ITNQp7avLY10s=
-github.com/jhump/protoreflect v1.14.1/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
-github.com/jingyugao/rowserrcheck v0.0.0-20210315055705-d907ca737bb1/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA=
-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-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-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/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
-github.com/jmoiron/sqlx v1.3.5/go.mod h1:nRVWtLre0KfCLJvgxzCsLVMogSvQ1zNJtpYr2Ccp0mQ=
-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=
-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/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.16.1 h1:DynhcF+bztK8gooS0+NDJFrdNZjJ3gzVzC545UNA9iw=
-github.com/karrick/godirwalk v1.16.1/go.mod h1:j4mkqPuvaLI8mp1DroR3P6ad7cyYd4c1qeJ3RV7ULlk=
-github.com/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-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/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
-github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU=
-github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0=
-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.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.17.6 h1:60eq2E/jlfwQXtvZEeBUYADs+BwKBWURIY+Gj2eRGjI=
-github.com/klauspost/compress v1.17.6/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM=
-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/kortschak/utter v1.0.1/go.mod h1:vSmSjbyrlKjjsL71193LmzBOKgwePk9DH6uFaWHIInc=
-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/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/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/lann/builder v0.0.0-20180802200727-47ae307949d0 h1:SOEGU9fKiNWd/HOJuq6+3iTQz8KNCLtVX6idSoTLdUw=
-github.com/lann/builder v0.0.0-20180802200727-47ae307949d0/go.mod h1:dXGbAdH5GtBTC4WfIxhKZfyBF/HBFgRZSWwZ9g/He9o=
-github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 h1:P6pPBnrTSX3DEVR4fDembhRWSsG5rVo6hYhAB/ADZrk=
-github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0/go.mod h1:vmVJ0l/dxyfGW6FmdpVm2joNMFikkuWg0EoCKLGUMNw=
-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.2.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/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs=
-github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
-github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
-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/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
-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/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/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU=
-github.com/markbates/errx v1.1.0 h1:QDFeR+UP95dO12JgW+tgi2UVfo0V8YBHiUIOaeBPiEI=
-github.com/markbates/errx v1.1.0/go.mod h1:PLa46Oex9KNbVDZhKel8v1OT7hD5JZ2eI7AHhA0wswc=
-github.com/markbates/oncer v1.0.0 h1:E83IaVAHygyndzPimgUYJjbshhDTALZyXxvk9FOlQRY=
-github.com/markbates/oncer v1.0.0/go.mod h1:Z59JA581E9GP6w96jai+TGqafHPW+cPfRxz2aSZ0mcI=
-github.com/markbates/safe v1.0.1 h1:yjZkbvRM6IzKj9tlu/zMJLS0n/V351OZWRnF3QfaUxI=
-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.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-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/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-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.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/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.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
-github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
-github.com/mattn/go-oci8 v0.1.1/go.mod h1:wjDx6Xm9q7dFtHJvIlrI99JytznLw5wQ4R+9mNXJwGI=
-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/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/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-github.com/mattn/go-sqlite3 v1.14.6/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU=
-github.com/mattn/go-sqlite3 v2.0.3+incompatible h1:gXHsfypPkaMZrKbD5209QV9jbUTJKjyR5WD3HYQSd+U=
-github.com/mattn/go-sqlite3 v2.0.3+incompatible/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-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.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/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
-github.com/mitchellh/cli v1.1.2/go.mod h1:6iaV0fGdElS6dPBx0EApTxHrcWvmJphyh2n8YBLPPZ4=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
-github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
-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-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
-github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-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-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=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0=
-github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA=
-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/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/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/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
-github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg=
-github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
-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/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78=
-github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI=
-github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
-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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
-github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
-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/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=
-github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
-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/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/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs=
-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/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
-github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
-github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-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.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA=
-github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
-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.3/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/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg=
-github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY=
-github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM=
-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.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
-github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
-github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799 h1:rc3tiVYb5z54aKaDfakKn0dDjIyPpTtszkjuMzyt7ec=
-github.com/opencontainers/image-spec v1.0.3-0.20211202183452-c5a74bcca799/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-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.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
-github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=
-github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
-github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-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/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
-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/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/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/poy/onpar v0.0.0-20190519213022-ee068f8ea4d1 h1:oL4IBbcqwhhNWh31bjOX8C/OCy0zs9906d/VUru+bqg=
-github.com/poy/onpar v0.0.0-20190519213022-ee068f8ea4d1/go.mod h1:nSbFQvMj97ZyhFRSJYtut+msi4sOY6zJDGCdSc+/rZU=
-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_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.18.0 h1:HzFfmkOzH5Q8L8G+kSJKUx5dtG87sewO+FoDDqP5Tbk=
-github.com/prometheus/client_golang v1.18.0/go.mod h1:T+GXkCk5wSJyOqMIzVgvvjFDlkOQntgjkJWKrN5txjA=
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
-github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
-github.com/prometheus/client_model v0.6.0 h1:k1v3CzpSRUTrKMppY35TLwPvxHqBu0bYgxZzqGIgaos=
-github.com/prometheus/client_model v0.6.0/go.mod h1:NTQHnmxFpouOD0DpvP4XujX3CdOAGQPoaGhyTchlyt8=
-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/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc=
-github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls=
-github.com/prometheus/common v0.47.0 h1:p5Cz0FNHo7SnWOmWmoRozVcjEp0bIVU8cV7OShpjL1k=
-github.com/prometheus/common v0.47.0/go.mod h1:0/KsvlIEfPQCQ5I2iNSAWKPZziNCvRs5EC6ILDTlAPc=
-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.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ=
-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.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo=
-github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo=
-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/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4=
-github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI=
-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-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/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE=
-github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs=
-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/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
-github.com/rubenv/sql-migrate v1.1.1 h1:haR5Hn8hbW9/SpAICrXoZqXnywS7Q5WijwkQENPeNWY=
-github.com/rubenv/sql-migrate v1.1.1/go.mod h1:/7TZymwxN8VWumcIxw1jjHEcR1djpdkMHQPT4FWdnbQ=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
-github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
-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/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE=
-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/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/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/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/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
-github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8=
-github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o=
-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.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/sirupsen/logrus v1.9.0/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/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/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
-github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
-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/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w=
-github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU=
-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.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/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.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/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/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 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-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.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.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
-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/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/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/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
-github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-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/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/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.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
-github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
-github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
-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/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc=
-github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
-github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
-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/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c=
-github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/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-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg=
-github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
-github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-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/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/yvasiyarov/go-metrics v0.0.0-20140926110328-57bccd1ccd43 h1:+lm10QQTNSBd8DVTNGHx7o/IKu9HYDvLMffDhbyLccI=
-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 h1:hlE8//ciYMztlGpl/VA+Zm1AcTPHYkHJPbHqE6WJUXE=
-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 h1:ERexzlUfuTvpE74urLSbIQW0Z/6hF9t8U4NsJLaioAY=
-github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg=
-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.5.1/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ=
-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=
-github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs=
-github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0=
-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/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k=
-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/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o=
-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 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/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo=
-go.opentelemetry.io/otel v1.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY=
-go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA=
-go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM=
-go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU=
-go.opentelemetry.io/otel/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo=
-go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI=
-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.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
-go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
-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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8=
-go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI=
-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.starlark.net v0.0.0-20221205180719-3fd0dac74452 h1:JZtNuL6LPB+scU5yaQ6hqRlJFRiddZm2FwRt2AQqtHA=
-go.starlark.net v0.0.0-20221205180719-3fd0dac74452/go.mod h1:kIVgS18CjmEC3PqMd5kaJSGEifyV/CeB9x506ZJ1Vbk=
-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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-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.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 v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
-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=
-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=
-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-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-20190325154230-a5d413f7728c/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-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-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
-golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/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-20210616213533-5ff15b29337e/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-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.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/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-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-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.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
-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.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-20180530234432-1e491301e022/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-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-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-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-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-20191009170851-d66e71096ffb/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-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-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-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-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/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-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.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.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-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.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/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/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-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-20190801041406-cbf593c0f2f3/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-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-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-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-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=
-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-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=
-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-20210503080704-8803ae5d1324/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-20210601080250-7ecdf8ef093b/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-20210908233432-aa78b53d3365/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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-20220114195835-da31bd327af9/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-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.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.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-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.0.0-20220526004731-065cf7ba2467/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.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
-golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-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.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/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-20220210224613-90d013bbcef8/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-20180525024113-a5b4c53f6e8b/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-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-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-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-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-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-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=
-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-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=
-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-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-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-20200713011307-fd294ab11aed/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-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-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.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
-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.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
-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-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=
-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.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=
-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.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=
-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.60.0/go.mod h1:d7rl65NZAkEQ90JFzqBjcRq1TVeG5ZoGV3sSpEnnVb4=
-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.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.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.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/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-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-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-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=
-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-20200324203455-a04cca1dde73/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=
-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-20200711021454-869866162049/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-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-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210601144548-a796c710e9b6/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-20211021150943-2b146023228c/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-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-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-20240108191215-35c7eff3a6b1 h1:OPXtXn7fNMaXwO3JvOmF1QyTc00jsSFFz1vXXBOdCDo=
-google.golang.org/genproto/googleapis/api v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA=
-google.golang.org/grpc v1.8.0/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.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.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=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/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.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
-google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
-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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
-google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
-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/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.27/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.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
-gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-gopkg.in/ini.v1 v1.62.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 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-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-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/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=
-gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
-gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
-gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
-helm.sh/helm/v3 v3.9.4 h1:TCI1QhJUeLVOdccfdw+vnSEO3Td6gNqibptB04QtExY=
-helm.sh/helm/v3 v3.9.4/go.mod h1:3eaWAIqzvlRSD06gR9MMwmp2KBKwlu9av1/1BZpjeWY=
-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=
-honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
-k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg=
-k8s.io/api v0.25.5 h1:mqyHf7aoaYMpdvO87mqpol+Qnsmo+y09S0PMIXwiZKo=
-k8s.io/api v0.25.5/go.mod h1:RzplZX0Z8rV/WhSTfEvnyd91bBhBQTRWo85qBQwRmb8=
-k8s.io/apiextensions-apiserver v0.25.5 h1:iHkMyFGzRgXO8AQlCYPVTVsKLqXvruswirIW8hRji+g=
-k8s.io/apiextensions-apiserver v0.25.5/go.mod h1:TWAHgFssGm050Oe6MhN+Jaeav+ISEl9M/qWsPzq2s3k=
-k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
-k8s.io/apimachinery v0.25.5 h1:SQomYHvv+aO43qdu3QKRf9YuI0oI8w3RrOQ1qPbAUGY=
-k8s.io/apimachinery v0.25.5/go.mod h1:1S2i1QHkmxc8+EZCIxe/fX5hpldVXk4gvnJInMEb8D4=
-k8s.io/apiserver v0.25.5 h1:oC6pd5Z/q8WKksJApbnnK0mODqIz/jKWw3Jk4QqIVXM=
-k8s.io/apiserver v0.25.5/go.mod h1:iCRtEN+C0EsNBcbhmDJp41M7cspJM54VWoKyl62gGOU=
-k8s.io/cli-runtime v0.24.2/go.mod h1:1LIhKL2RblkhfG4v5lZEt7FtgFG5mVb8wqv5lE9m5qY=
-k8s.io/cli-runtime v0.25.5 h1:5Q37ITYtPtSw2JQcN6EBsdOQBnGvvo/D1g93Da4ceYI=
-k8s.io/cli-runtime v0.25.5/go.mod h1:o7lT2rFyfbLrQOzTFsV828OyxKsTE/FmVc3ag1nx0IU=
-k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30=
-k8s.io/client-go v0.25.5 h1:7QWVK0Ph4bLn0UwotPTc2FTgm8shreQXyvXnnHDd8rE=
-k8s.io/client-go v0.25.5/go.mod h1:bOeoaUUdpyz3WDFGo+Xm3nOQFh2KuYXRDwrvbAPtFQA=
-k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w=
-k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM=
-k8s.io/component-base v0.25.5 h1:tVni0kgpceq71MDMBSixp8Y621YGvTS/1zq3RABgX9A=
-k8s.io/component-base v0.25.5/go.mod h1:9J+e9uIUwUOG2x5q5+aaOR0b8QI5OIqwqPAbeODkYpc=
-k8s.io/component-helpers v0.24.2/go.mod h1:TRQPBQKfmqkmV6c0HAmUs8cXVNYYYLsXy4zu8eODi9g=
-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/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.60.1/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-20220328201542-3ee0da9b0b42/go.mod h1:Z/45zLw8lUo4wdiUkI+v/ImEGAvu3WatcZl3lPMR4Rk=
-k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 h1:tBEbstoM+K0FiBV5KGAKQ0kuvf54v/hwpldiJt69w1s=
-k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4=
-k8s.io/kubectl v0.24.2 h1:+RfQVhth8akUmIc2Ge8krMl/pt66V7210ka3RE/p0J4=
-k8s.io/kubectl v0.24.2/go.mod h1:+HIFJc0bA6Tzu5O/YcuUt45APAxnNL8LeMuXwoiGsPg=
-k8s.io/metrics v0.24.2/go.mod h1:5NWURxZ6Lz5gj8TFU83+vdWIVASx7W8lwPpHYCqopMo=
-k8s.io/utils v0.0.0-20210802155522-efc7438f0176/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-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y=
-k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-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=
-oras.land/oras-go v1.2.0 h1:yoKosVIbsPoFMqAIFHTnrmOuafHal+J/r+I5bdbVWu4=
-oras.land/oras-go v1.2.0/go.mod h1:pFNs7oHp2dYsYMSS82HaX5l4mpnGO7hbpPN6EWH2ltc=
-rsc.io/binaryregexp v0.2.0 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
-rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
-rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
-rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
-sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2/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.11.4/go.mod h1:k+8RsqYbgpkIrJ4p9jcdPqe8DprLxFUUO0yNOq8C+xI=
-sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM=
-sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s=
-sigs.k8s.io/kustomize/cmd/config v0.10.6/go.mod h1:/S4A4nUANUa4bZJ/Edt7ZQTyKOY9WCER0uBS1SW2Rco=
-sigs.k8s.io/kustomize/kustomize/v4 v4.5.4/go.mod h1:Zo/Xc5FKD6sHl0lilbrieeGeZHVYCA4BzxeAaLI05Bg=
-sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg=
-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/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/contrib/terraform-provider-helmproxy/main.go b/contrib/terraform-provider-helmproxy/main.go
deleted file mode 100644
index 06a65f0090..0000000000
--- a/contrib/terraform-provider-helmproxy/main.go
+++ /dev/null
@@ -1,17 +0,0 @@
-// Package main starts the terraform provider
-package main
-
-import (
- "github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy/provider"
-)
-
-// Generate the Terraform provider documentation using `tfplugindocs`:
-// this is temporarily disabled until tfexec compatibility issue is fixed (this was removed in 0.16.0)
-// we can do this manually for now
-// go:generate go run github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
-
-func main() {
- plugin.Serve(&plugin.ServeOpts{
- ProviderFunc: provider.Provider})
-}
diff --git a/contrib/terraform-provider-helmproxy/provider/provider.go b/contrib/terraform-provider-helmproxy/provider/provider.go
deleted file mode 100644
index 7d4bef3aba..0000000000
--- a/contrib/terraform-provider-helmproxy/provider/provider.go
+++ /dev/null
@@ -1,89 +0,0 @@
-// Package provider gets the provider for the iap tunnel.
-package provider
-
-import (
- "context"
- provider_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-provider-helm/helm"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/google"
- "github.com/synapsecns/sanguine/contrib/tfcore/utils"
- "log"
- "os"
-)
-
-type configuredProvider struct {
- // googleIface is the google interface
- googleIface *google.Config
- // helmIface is the helm interface
- helmIface *helm.Meta
-}
-
-func (c configuredProvider) GoogleProvider() interface{} {
- return c.googleIface
-}
-
-func (c configuredProvider) UnderlyingProvider() interface{} {
- return c.helmIface
-}
-
-var _ utils.WrappedProvider = &configuredProvider{}
-
-// Provider gets the provider for the iap tunnel.
-func Provider() *schema.Provider {
- combinedSchema := utils.CombineSchemas(google.Provider(), helm.Provider(), "helm", "helmproxy")
- underlyingGoogleProvider := google.Provider()
- underlyingHelmProvider := helm.Provider()
- return &schema.Provider{
- Schema: combinedSchema.Schema,
- ProviderMetaSchema: combinedSchema.MetaSchema,
- ResourcesMap: combinedSchema.ResourceMap,
- DataSourcesMap: combinedSchema.DataSourceMap,
- ConfigureContextFunc: func(ctx context.Context, data *schema.ResourceData) (_ interface{}, dg provider_diag.Diagnostics) {
- cp := &configuredProvider{}
- var gdg, hdg provider_diag.Diagnostics
- var giface, hiface interface{}
- var ok bool
-
- giface, gdg = underlyingGoogleProvider.ConfigureContextFunc(ctx, data)
- if gdg.HasError() {
- return nil, gdg
- }
- dg = append(dg, gdg...)
- cp.googleIface, ok = giface.(*google.Config)
- if !ok {
- return nil, append(gdg, provider_diag.Diagnostic{
- Severity: provider_diag.Error,
- Summary: "failed to cast google interface",
- })
- }
-
- hiface, hdg = underlyingHelmProvider.ConfigureContextFunc(ctx, data)
- if hdg.HasError() {
- return nil, hdg
- }
- cp.helmIface, ok = hiface.(*helm.Meta)
- if !ok {
- return nil, append(gdg, provider_diag.Diagnostic{
- Severity: provider_diag.Error,
- Summary: "failed to cast helm interface",
- })
- }
-
- proxyURL, err := utils.StartTunnel(ctx, data, cp.googleIface)
- if err != nil {
- return nil, append(gdg, provider_diag.FromErr(err)[0])
- }
-
- // set the proxy url
- log.Printf("[INFO] setting proxy url to %s", proxyURL)
- err = os.Setenv("KUBE_PROXY_URL", proxyURL)
- if err != nil {
- return nil, append(gdg, provider_diag.FromErr(err)[0])
- }
-
- dg = append(dg, hdg...)
- return cp, dg
- },
- }
-}
diff --git a/contrib/terraform-provider-helmproxy/provider/provider_test.go b/contrib/terraform-provider-helmproxy/provider/provider_test.go
deleted file mode 100644
index 73f59fc98f..0000000000
--- a/contrib/terraform-provider-helmproxy/provider/provider_test.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package provider_test
-
-import (
- "github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy/provider"
- "testing"
-)
-
-// Make sure the provider loads.
-func TestProviderLoad(t *testing.T) {
- prov := provider.Provider()
- if prov == nil {
- t.Fatal("Provider should not be nil")
- }
-}
diff --git a/contrib/terraform-provider-helmproxy/readme.md b/contrib/terraform-provider-helmproxy/readme.md
deleted file mode 100644
index 5a5e69daaa..0000000000
--- a/contrib/terraform-provider-helmproxy/readme.md
+++ /dev/null
@@ -1,22 +0,0 @@
-# Terraform IAP Proxy Provider
-
-[![Go Reference](https://pkg.go.dev/badge/github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy.svg)](https://pkg.go.dev/github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy)
-[![Go Report Card](https://goreportcard.com/badge/github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy)](https://goreportcard.com/report/github.com/synapsecns/sanguine/contrib/terraform-provider-helmproxy)
-
-This provider is a wrapper for the Helm provider that allows for the use of an IAP (Identity-Aware Proxy) when interacting with GCP resources. This is necessary because Terraform resources are short-lived, so spinning up the IAP proxy separately and having it provide access to the resources is not an option.
-
-## Why use an IAP proxy?
-IAP (Identity-Aware Proxy) is a feature of GCP that allows you to authenticate and authorize access to resources in a more fine-grained manner than just using a service account. By using IAP, you can ensure that only authorized users and applications can access your resources.
-
-## How does the provider work?
-The provider wraps the Helm provider and combines the schemas of the two providers. It also adds some new fields to the schema, such as the project, zone, service_account, instance, and remote_port fields, which are necessary for configuring the IAP proxy.
-
-When the provider is used to create or update resources, it first starts the IAP proxy on the specified instance, using the specified service account and project. It then passes the requests for resources through the proxy, allowing for authenticated and authorized access.
-
-When the resources are destroyed, the provider stops the IAP proxy on the specified instance.
-
-## How to use the provider
-
-To use the provider, you will need to specify the project, zone, service_account, instance, and remote_port fields in your Terraform configuration. You will also need to provide credentials for the service account that will be used to start the IAP proxy. Please see the example folder for an example.
-
-
diff --git a/contrib/terraform-provider-helmproxy/scripts/add-tfmac.sh b/contrib/terraform-provider-helmproxy/scripts/add-tfmac.sh
deleted file mode 100755
index 4067060a39..0000000000
--- a/contrib/terraform-provider-helmproxy/scripts/add-tfmac.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/zsh
-
-# if not already present in zshrc
-if [ "$(grep -c -w "alias tfmac='TFENV_ARCH=arm64 TFENV_TERRAFORM_VERSION=latest:^1.3 terraform'" ~/.zshrc)" -le 0 ]; then
- echo "adding tfmac command to zshrc. You might have to source ~/.zshrc or open a new tab"
- echo "alias tfmac='TFENV_ARCH=arm64 TFENV_TERRAFORM_VERSION=latest:^1.3 terraform'" >> ~/.zshrc
-fi
diff --git a/contrib/terraform-provider-helmproxy/scripts/build-tf.sh b/contrib/terraform-provider-helmproxy/scripts/build-tf.sh
deleted file mode 100755
index 9b26dfc09a..0000000000
--- a/contrib/terraform-provider-helmproxy/scripts/build-tf.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# shellcheck disable=SC2086
-
-# This gets the arch prefix we use when building a terraform plugin
-TF_PREFIX=$( go version | awk '{print $NF}' | sed 's/\//_/')
-
-# define the plugin directory
-PLUGIN_DIR=$(realpath -m ~/.terraform.d/plugins/example-helm.com/provider/helmproxy/1.0.0/$TF_PREFIX)
-
-# fixes async problems on arm64 https://github.com/hashicorp/terraform-provider-aws/issues/20274#issuecomment-996795241
-# we don't need this for production builds, just darwinarm64.
-GODEBUG=asyncpreemptoff=1 go build .
-
-# make the plugin directory if it doesn't exist
-rm -rf $PLUGIN_DIR
-mkdir -p $PLUGIN_DIR
-cp terraform-provider-helmproxy $PLUGIN_DIR
diff --git a/contrib/terraform-provider-helmproxy/terraform-registry-manifest.json b/contrib/terraform-provider-helmproxy/terraform-registry-manifest.json
deleted file mode 100644
index 295001a07f..0000000000
--- a/contrib/terraform-provider-helmproxy/terraform-registry-manifest.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "version": 1,
- "metadata": {
- "protocol_versions": ["6.0"]
- }
-}
diff --git a/contrib/terraform-provider-iap/.gitignore b/contrib/terraform-provider-iap/.gitignore
deleted file mode 100644
index 3f879e420c..0000000000
--- a/contrib/terraform-provider-iap/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-terraform-provider-iap
-examples/.terraform.lock.hcl
diff --git a/contrib/terraform-provider-iap/.goreleaser.yml b/contrib/terraform-provider-iap/.goreleaser.yml
deleted file mode 100644
index fd8cc97b7d..0000000000
--- a/contrib/terraform-provider-iap/.goreleaser.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-project_name: terraform-provider-iap
-
-monorepo:
- tag_prefix: contrib/terraform-provider-iap/
- dir: contrib/terraform-provider-iap/
-
-builds:
- - env:
- # goreleaser does not work with CGO, it could also complicate
- # usage by users in CI/CD systems like Terraform Cloud where
- # they are unable to install libraries.
- - CGO_ENABLED=0
- mod_timestamp: '{{ .CommitTimestamp }}'
- flags:
- - -trimpath
- ldflags:
- - '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
- goos:
- - freebsd
- - windows
- - linux
- - darwin
- goarch:
- - amd64
- - '386'
- - arm
- - arm64
- ignore:
- - goos: darwin
- goarch: '386'
- binary: '{{ .ProjectName }}_v{{ .Version }}'
-archives:
- - format: zip
- name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
-checksum:
- extra_files:
- - glob: 'terraform-registry-manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS'
- algorithm: sha256
-signs:
- - artifacts: checksum
- args:
- # if you are using this in a GitHub action or some other automated pipeline, you
- # need to pass the batch flag to indicate its not interactive.
- - '--batch'
- - '--local-user'
- - '{{ .Env.GPG_FINGERPRINT }}' # set this environment variable for your signing key
- - '--output'
- - '${signature}'
- - '--detach-sign'
- - '${artifact}'
-release:
- extra_files:
- - glob: 'terraform-registry-manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
- # If you want to manually examine the release before its live, uncomment this line:
- # draft: true
-
-
-# track sizes
-report_sizes: true
-
-# modified timestamps
-metadata:
- # Set the modified timestamp on the metadata files.
- #
- # Templates: allowed.
- mod_timestamp: '{{ .CommitTimestamp }}'
-
-# produce software bill of lading
-sboms:
- - artifacts: archive
-
diff --git a/contrib/terraform-provider-iap/Makefile b/contrib/terraform-provider-iap/Makefile
deleted file mode 100644
index 0340e715e3..0000000000
--- a/contrib/terraform-provider-iap/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-include ../../make/go.Makefile
-
-install-plugin-local: # will install the terraform provider as a local plugin for testing.
- ./scripts/build-tf.sh
-
-run-example: install-plugin-local cleanup-examples # runs an example
- echo "running terraform init, if this fails, you might have to specify amd64 as the arch before using terraform, please see: https://github.com/tfutils/tfenv/issues/337"
- echo "on osx arm64, you can run run-example-m1 as a workaround."
- cd examples && terraform init
-
-cleanup-examples:
- rm -rf examples/.terraform rm -rf examples/.terraform.lock.hcl
-
-run-example-m1: install-plugin-local cleanup-examples # runs an example on osx arm64
- ./scripts/add-tfmac.sh
- source ~/.zshrc
- echo "please run: cd examples && tfmac init"
-
-
-tfenv-install:
- @#Brew - MacOS
- @if [ "$(shell which tflint)" = "" ] && [ "$(shell which brew)" != "" ]; then brew install rflint; fi;
- # default
- @if [ "$(shell which tflint)" = "" ]; then curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash; fi;
-
-
-lint-tf: tfenv-install ## Run golangci-lint and go fmt ./...
- cd examples && tflint --init
- cd examples && tflint
diff --git a/contrib/terraform-provider-iap/README.md b/contrib/terraform-provider-iap/README.md
deleted file mode 100644
index d7b8b898a8..0000000000
--- a/contrib/terraform-provider-iap/README.md
+++ /dev/null
@@ -1,21 +0,0 @@
-# IAP Tunnel Provider
-
-[![Go Reference](https://pkg.go.dev/badge/github.com/synapsecns/sanguine/contrib/terraform-provider-iap.svg)](https://pkg.go.dev/github.com/synapsecns/sanguine/contrib/terraform-provider-iap)
-[![Go Report Card](https://goreportcard.com/badge/github.com/synapsecns/sanguine/contrib/terraform-provider-iap)](https://goreportcard.com/report/github.com/synapsecns/sanguine/contrib/terraform-provider-iap)
-
-The goal of the iap provider is to allow the use of an identity-aware proxy to connect to a GCP through a bastion host using terraform. This looks like this:
-
-![Architecture Diagram](./assets/img.png)
-
-This provider is written in pure go and is based on the google terraform provider.
-
-## Future Work
-
- - *SSH Tunnels*: Right now: this works for creating a proxy through an ip tunnel. Eventually, we want to allow the use of an ssh tunnel using os-loging to connect through the bastion host with more robust logging. The challenge here is `gcloud compute beta ssh --tunel-through-iap` (which this provider has been reverse engineered from) uses a stdio proxy, so we need to implement our ssh provider using that mechanism. This will be implemented in a future version
- - *Public Provider*: This is going to require mirroring to another repo to work with [the requirements](https://developer.hashicorp.com/terraform/cloud-docs/registry/publish-providers) around publishing
- - *Better Documentation*: This is a first pass at documentation, but it needs to be improved, including references to examples folder
-
-## Disadvantages:
-
-Terraform resources are limited to the lifecycle of the proxy. This means that if you want to use this to connect to a GCP instance, you need to create a proxy resource, then create a compute instance resource, then create a connection resource. This is because the proxy resource is ephemeral and will be destroyed when the connection resource is destroyed. This is a limitation of the IAP tunneling mechanism, not the provider. The helm provider is exported witha configurable proxy for this reason
-
diff --git a/contrib/terraform-provider-iap/assets/img.png b/contrib/terraform-provider-iap/assets/img.png
deleted file mode 100644
index 5f6b5d1bb1..0000000000
Binary files a/contrib/terraform-provider-iap/assets/img.png and /dev/null differ
diff --git a/contrib/terraform-provider-iap/docs/data-sources/tunnel_proxy.md b/contrib/terraform-provider-iap/docs/data-sources/tunnel_proxy.md
deleted file mode 100644
index d51732b5dd..0000000000
--- a/contrib/terraform-provider-iap/docs/data-sources/tunnel_proxy.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "iap_tunnel_proxy Data Source - terraform-provider-iap"
-subcategory: ""
-description: |-
-
----
-
-# iap_tunnel_proxy (Data Source)
-
-
-
-
-
-
-## Schema
-
-### Required
-
-- `hostname` (String)
-- `instance` (String)
-- `interface` (String)
-- `project` (String)
-- `remote_port` (Number)
-- `zone` (String)
-
-### Read-Only
-
-- `id` (String) The ID of this resource.
-- `proxy_url` (String)
-
-
diff --git a/contrib/terraform-provider-iap/docs/index.md b/contrib/terraform-provider-iap/docs/index.md
deleted file mode 100644
index a189779380..0000000000
--- a/contrib/terraform-provider-iap/docs/index.md
+++ /dev/null
@@ -1,119 +0,0 @@
----
-# generated by https://github.com/hashicorp/terraform-plugin-docs
-page_title: "iap Provider"
-subcategory: ""
-description: |-
-
----
-
-# iap Provider
-
-
-
-
-
-
-## Schema
-
-### Optional
-
-- `access_approval_custom_endpoint` (String)
-- `access_context_manager_custom_endpoint` (String)
-- `access_token` (String)
-- `active_directory_custom_endpoint` (String)
-- `apigee_custom_endpoint` (String)
-- `app_engine_custom_endpoint` (String)
-- `assured_workloads_custom_endpoint` (String)
-- `batching` (Block List, Max: 1) (see [below for nested schema](#nestedblock--batching))
-- `big_query_custom_endpoint` (String)
-- `bigquery_data_transfer_custom_endpoint` (String)
-- `bigquery_reservation_custom_endpoint` (String)
-- `bigtable_custom_endpoint` (String)
-- `billing_custom_endpoint` (String)
-- `billing_project` (String)
-- `binary_authorization_custom_endpoint` (String)
-- `cloud_asset_custom_endpoint` (String)
-- `cloud_billing_custom_endpoint` (String)
-- `cloud_build_custom_endpoint` (String)
-- `cloud_functions_custom_endpoint` (String)
-- `cloud_identity_custom_endpoint` (String)
-- `cloud_iot_custom_endpoint` (String)
-- `cloud_resource_manager_custom_endpoint` (String)
-- `cloud_run_custom_endpoint` (String)
-- `cloud_scheduler_custom_endpoint` (String)
-- `cloud_tasks_custom_endpoint` (String)
-- `composer_custom_endpoint` (String)
-- `compute_custom_endpoint` (String)
-- `container_analysis_custom_endpoint` (String)
-- `container_custom_endpoint` (String)
-- `credentials` (String)
-- `data_catalog_custom_endpoint` (String)
-- `data_loss_prevention_custom_endpoint` (String)
-- `dataflow_custom_endpoint` (String)
-- `dataproc_custom_endpoint` (String)
-- `datastore_custom_endpoint` (String)
-- `deployment_manager_custom_endpoint` (String)
-- `dialogflow_custom_endpoint` (String)
-- `dialogflow_cx_custom_endpoint` (String)
-- `dns_custom_endpoint` (String)
-- `essential_contacts_custom_endpoint` (String)
-- `eventarc_custom_endpoint` (String)
-- `filestore_custom_endpoint` (String)
-- `firestore_custom_endpoint` (String)
-- `game_services_custom_endpoint` (String)
-- `gke_hub_custom_endpoint` (String)
-- `gkehub_feature_custom_endpoint` (String)
-- `healthcare_custom_endpoint` (String)
-- `iam_credentials_custom_endpoint` (String)
-- `iam_custom_endpoint` (String)
-- `iap_custom_endpoint` (String)
-- `identity_platform_custom_endpoint` (String)
-- `impersonate_service_account` (String)
-- `impersonate_service_account_delegates` (List of String)
-- `kms_custom_endpoint` (String)
-- `logging_custom_endpoint` (String)
-- `memcache_custom_endpoint` (String)
-- `ml_engine_custom_endpoint` (String)
-- `monitoring_custom_endpoint` (String)
-- `network_management_custom_endpoint` (String)
-- `network_services_custom_endpoint` (String)
-- `notebooks_custom_endpoint` (String)
-- `org_policy_custom_endpoint` (String)
-- `os_config_custom_endpoint` (String)
-- `os_login_custom_endpoint` (String)
-- `privateca_custom_endpoint` (String)
-- `project` (String)
-- `pubsub_custom_endpoint` (String)
-- `pubsub_lite_custom_endpoint` (String)
-- `redis_custom_endpoint` (String)
-- `region` (String)
-- `request_reason` (String)
-- `request_timeout` (String)
-- `resource_manager_custom_endpoint` (String)
-- `resource_manager_v2_custom_endpoint` (String)
-- `scopes` (List of String)
-- `secret_manager_custom_endpoint` (String)
-- `security_center_custom_endpoint` (String)
-- `service_management_custom_endpoint` (String)
-- `service_networking_custom_endpoint` (String)
-- `service_usage_custom_endpoint` (String)
-- `source_repo_custom_endpoint` (String)
-- `spanner_custom_endpoint` (String)
-- `sql_custom_endpoint` (String)
-- `storage_custom_endpoint` (String)
-- `storage_transfer_custom_endpoint` (String)
-- `tags_custom_endpoint` (String)
-- `tpu_custom_endpoint` (String)
-- `user_project_override` (Boolean)
-- `vertex_ai_custom_endpoint` (String)
-- `vpc_access_custom_endpoint` (String)
-- `workflows_custom_endpoint` (String)
-- `zone` (String)
-
-
-### Nested Schema for `batching`
-
-Optional:
-
-- `enable_batching` (Boolean)
-- `send_after` (String)
diff --git a/contrib/terraform-provider-iap/examples/google.tf b/contrib/terraform-provider-iap/examples/google.tf
deleted file mode 100644
index bc5727f544..0000000000
--- a/contrib/terraform-provider-iap/examples/google.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-# google provider used for kube access
-provider "google" {
-}
-
-# token
-data "google_service_account_access_token" "kube_sa" {
- target_service_account = var.service_account
- lifetime = "1000s"
- scopes = [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/userinfo.email"
- ]
-}
diff --git a/contrib/terraform-provider-iap/examples/main.tf b/contrib/terraform-provider-iap/examples/main.tf
deleted file mode 100644
index 0f072f81e5..0000000000
--- a/contrib/terraform-provider-iap/examples/main.tf
+++ /dev/null
@@ -1,54 +0,0 @@
-terraform {
- required_providers {
- iap = {
- version = "~> 1.0.0"
- source = "example-iap.com/provider/iap"
- }
- }
-}
-
-provider "iap" {
-}
-
-
-provider "kubernetes" {
- // TODO: this needs to be changed to work cross cluster
- host = ""
- token = data.google_service_account_access_token.kube_sa.access_token
- proxy_url=resource.iap_tunnel_proxy.tunnel_proxy.proxy_url
- config_path=var.config_path
- config_context=var.config_context
-}
-
-
-resource "iap_tunnel_proxy" "tunnel_proxy" {
- zone = var.zone
- instance = var.instance
- interface = var.interface
- project = var.project
- remote_port = var.remote_port
-}
-
-output "tunnel_proxy" {
- value = resource.iap_tunnel_proxy.tunnel_proxy.proxy_url
-}
-
-
-# this will likely error witha permission/not found error. This means the proxy is working
-data "kubernetes_storage_class" "example" {
- metadata {
- name = "terraform-example"
- }
-
- depends_on = [resource.iap_tunnel_proxy.tunnel_proxy]
-}
-
-data "iap_tunnel_keep_alive" "keep_alive" {
- # keep alive for at least 100 seconds
- timeout = 100
- proxy_url = resource.iap_tunnel_proxy.tunnel_proxy
-
- for_each = {
- timestamp = "${timestamp()}"
- }
-}
diff --git a/contrib/terraform-provider-iap/examples/variables.tf b/contrib/terraform-provider-iap/examples/variables.tf
deleted file mode 100644
index abccbb3172..0000000000
--- a/contrib/terraform-provider-iap/examples/variables.tf
+++ /dev/null
@@ -1,46 +0,0 @@
-variable "service_account" {
- type = string
- description = "The service account to impersonate"
-}
-
-variable "config_path" {
- type = string
- description = "The path to the kube config file"
- default = "~/.kube/config"
-}
-
-variable "config_context" {
- type = string
- description = "The context to use in the kube config file"
-}
-
-variable "zone" {
- type = string
- description = "The zone of the bastion proxy"
-}
-
-
-variable "instance" {
- type = string
- description = "The instance to use for the bastion proxy"
-}
-
-variable "interface" {
- type = string
- description = "The interface to use for the bastion proxy"
- default = "nic0"
-}
-
-variable "project" {
- type = string
- description = "The project of the bastion proxy"
-}
-
-variable "remote_port" {
- type = string
- description = "The remote_port of the bastion proxy"
- # tiny proxy default
- default = 8888
-}
-
-
diff --git a/contrib/terraform-provider-iap/go.mod b/contrib/terraform-provider-iap/go.mod
deleted file mode 100644
index 17ede04eae..0000000000
--- a/contrib/terraform-provider-iap/go.mod
+++ /dev/null
@@ -1,118 +0,0 @@
-module github.com/synapsecns/sanguine/contrib/terraform-provider-iap
-
-go 1.21
-
-require (
- github.com/google/uuid v1.5.0
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1
- github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5
- github.com/synapsecns/sanguine/contrib/tfcore v0.0.0-00010101000000-000000000000
-)
-
-require (
- bitbucket.org/creachadair/stringset v0.0.8 // indirect
- cloud.google.com/go v0.111.0 // indirect
- cloud.google.com/go/bigtable v1.10.1 // 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.5 // indirect
- cloud.google.com/go/longrunning v0.5.4 // indirect
- dario.cat/mergo v1.0.0 // indirect
- github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518 // indirect
- github.com/Microsoft/go-winio v0.6.1 // indirect
- github.com/ProtonMail/go-crypto v0.0.0-20230828082145-3c4c8a2d2371 // indirect
- github.com/agext/levenshtein v1.2.3 // indirect
- github.com/apparentlymart/go-cidr v1.1.0 // indirect
- github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
- github.com/cenkalti/backoff v2.2.1+incompatible // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/docker/cli v20.10.17+incompatible // indirect
- github.com/docker/docker-credential-helpers v0.7.0 // indirect
- github.com/emirpasic/gods v1.18.1 // indirect
- github.com/fatih/color v1.13.0 // indirect
- github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 // indirect
- github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 // indirect
- github.com/gartnera/gcloud v0.0.15 // 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-logr/logr v1.4.1 // indirect
- github.com/go-logr/stdr v1.2.2 // indirect
- github.com/golang/glog v1.1.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
- github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
- github.com/googleapis/gax-go/v2 v2.12.0 // indirect
- github.com/gorilla/websocket v1.5.1 // indirect
- github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-checkpoint v0.5.0 // indirect
- github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 // indirect
- github.com/hashicorp/go-hclog v1.4.0 // indirect
- github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-plugin v1.4.8 // indirect
- github.com/hashicorp/go-uuid v1.0.3 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
- github.com/hashicorp/hc-install v0.4.0 // indirect
- github.com/hashicorp/hcl/v2 v2.15.0 // indirect
- github.com/hashicorp/logutils v1.0.0 // indirect
- github.com/hashicorp/terraform-exec v0.17.3 // indirect
- github.com/hashicorp/terraform-json v0.14.0 // indirect
- github.com/hashicorp/terraform-plugin-go v0.14.2 // indirect
- github.com/hashicorp/terraform-plugin-log v0.7.0 // indirect
- github.com/hashicorp/terraform-provider-google/v4 v4.2.0 // indirect
- github.com/hashicorp/terraform-registry-address v0.1.0 // indirect
- github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
- github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/kevinburke/ssh_config v1.2.0 // indirect
- github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f // indirect
- github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/mattn/go-colorable v0.1.13 // indirect
- github.com/mattn/go-isatty v0.0.20 // indirect
- github.com/mitchellh/copystructure v1.2.0 // indirect
- github.com/mitchellh/go-homedir v1.1.0 // indirect
- github.com/mitchellh/go-testing-interface v1.14.1 // indirect
- github.com/mitchellh/go-wordwrap v1.0.1 // indirect
- github.com/mitchellh/hashstructure v1.1.0 // indirect
- github.com/mitchellh/mapstructure v1.5.0 // indirect
- github.com/mitchellh/reflectwalk v1.0.2 // indirect
- github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
- github.com/oklog/run v1.1.0 // indirect
- github.com/pjbgf/sha1cd v0.3.0 // indirect
- github.com/pkg/errors v0.9.1 // indirect
- github.com/sirupsen/logrus v1.9.0 // indirect
- github.com/skeema/knownhosts v1.2.1 // indirect
- github.com/spf13/cobra v1.6.1 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
- github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
- github.com/vmihailenco/tagparser v0.1.2 // indirect
- github.com/xanzy/ssh-agent v0.3.3 // indirect
- github.com/zclconf/go-cty v1.12.1 // indirect
- go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/otel v1.23.1 // indirect
- go.opentelemetry.io/otel/metric v1.23.1 // indirect
- go.opentelemetry.io/otel/trace v1.23.1 // indirect
- golang.org/x/crypto v0.19.0 // indirect
- golang.org/x/mod v0.15.0 // indirect
- golang.org/x/net v0.21.0 // indirect
- golang.org/x/oauth2 v0.16.0 // indirect
- golang.org/x/sync v0.6.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/api v0.149.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240108191215-35c7eff3a6b1 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 // indirect
- google.golang.org/grpc v1.60.1 // indirect
- google.golang.org/protobuf v1.32.0 // indirect
-)
-
-replace (
- github.com/synapsecns/sanguine/contrib/tfcore => ../tfcore
- golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783
-)
diff --git a/contrib/terraform-provider-iap/go.sum b/contrib/terraform-provider-iap/go.sum
deleted file mode 100644
index 8f5b4e79d4..0000000000
--- a/contrib/terraform-provider-iap/go.sum
+++ /dev/null
@@ -1,1568 +0,0 @@
-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=
-bitbucket.org/creachadair/stringset v0.0.8 h1:gQqe4vs8XWgMyijfyKE6K8o4TcyGGrRXe0JvHgx5H+M=
-bitbucket.org/creachadair/stringset v0.0.8/go.mod h1:AgthVMyMxC/6FK1KBJ2ALdqkZObGN8hOetgpwXyMn34=
-cloud.google.com/go v0.26.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.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU=
-cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw=
-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.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=
-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.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM=
-cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU=
-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/bigtable v1.10.1 h1:QKcRHeAsraxIlrdCZ3LLobXKBvITqcOEnSbHG2rzL9g=
-cloud.google.com/go/bigtable v1.10.1/go.mod h1:cyHeKlx6dcZCO0oSQucYdauseD8kIENGuDOJPKMCVg8=
-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.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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
-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.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=
-cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI=
-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.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
-contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc=
-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/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs=
-github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518 h1:tFdFasG+VDpnn+BfVbZrfGcoH6pw6s7ODYlZlhTO3UM=
-github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518/go.mod h1:oEeBHikdF/NrnUy0ornVaY1OT+jGvTqm+LQS0+ZDKzU=
-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/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
-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/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM=
-github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
-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/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-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/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
-github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
-github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
-github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
-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/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE=
-github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
-github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE=
-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/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
-github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=
-github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
-github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
-github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
-github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/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/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/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
-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/augustoroman/hexdump v0.0.0-20190827031536-6506f4163e93 h1:z6k1vb5L2wqLK4SIk3fpUiXnhNWSZ6Oyy8AaLqr0B+A=
-github.com/augustoroman/hexdump v0.0.0-20190827031536-6506f4163e93/go.mod h1:ps2Vk8wMZarkeIPtUqW/FUvwVVdeRDbewMYz+EmuEgk=
-github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
-github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.25.3/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.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
-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/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4=
-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/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI=
-github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
-github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
-github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
-github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
-github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-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/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/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/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/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
-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-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/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 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.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o=
-github.com/creachadair/staticfile v0.1.2/go.mod h1:a3qySzCIXEprDGxk6tSxSI+dBBdLzqeBOMhZ+o2d3pM=
-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/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
-github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
-github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc=
-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/denis-tingajkin/go-header v0.4.2/go.mod h1:eLRHAVXzE5atsKAnNRDB90WHCFFnBUn4RN0nRcs1LJA=
-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/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
-github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
-github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M=
-github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
-github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
-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/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=
-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.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/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/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc=
-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/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM=
-github.com/fzipp/gocyclo v0.3.1/go.mod h1:DJHO6AUmbdqj2ET4Z9iArSuwWgYDRryYt2wASxc7x3E=
-github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 h1:R+19WKQClnfMXS60cP5BmMe1wjZ4u0evY2p2Ar0ZTXo=
-github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI=
-github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 h1:EipXK6U05IQ2wtuFRn4k3h0+2lXypzItoXGVyf4r9Io=
-github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w=
-github.com/gartnera/gcloud v0.0.15 h1:/PkEnxPczVRS78MkMDz6wfdRR8YDDjzr0VF6ri6cGVs=
-github.com/gartnera/gcloud v0.0.15/go.mod h1:i9wWa1ndPbE8AhduqRMX9nAv9X9HqN9xgqydfEdFLGo=
-github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
-github.com/gliderlabs/ssh v0.2.2/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0=
-github.com/go-critic/go-critic v0.5.6/go.mod h1:cVjj0DfqewQVIlIAGexPCaGaZDAqGE29PYDDADIVNEo=
-github.com/go-git/gcfg v1.5.0/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
-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.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-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/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-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.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
-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.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM=
-github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
-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-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 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/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
-github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
-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.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-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/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/gofrs/flock v0.8.0/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
-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.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/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-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/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=
-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.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.3/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/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/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
-github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-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/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/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-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=
-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-20210506205249-923b5ab0fc1a/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/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
-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/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.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.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-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.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.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/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ=
-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/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.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
-github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
-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-20190611155906-901d90724c79/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.2.2/go.mod h1:EaizFBKfUKtMIF5iaDEhniwNedqGo9FuLFzppDr3uwI=
-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.12.1/go.mod h1:8XEsbTttt/W+VvjtQhLACqCisSPWTxCZ7sBRjU6iH9c=
-github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-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 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-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
-github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
-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 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
-github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI=
-github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
-github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY=
-github.com/hashicorp/go-getter v1.5.0/go.mod h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM=
-github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
-github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I=
-github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
-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-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0=
-github.com/hashicorp/go-plugin v1.4.0/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
-github.com/hashicorp/go-plugin v1.4.8 h1:CHGwpxYDOttQOY7HOWgETU9dyVjOXzniXDqJcYJE1zM=
-github.com/hashicorp/go-plugin v1.4.8/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-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-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
-github.com/hashicorp/go-uuid v1.0.3/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.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.3.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=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hc-install v0.4.0 h1:cZkRFr1WVa0Ty6x5fTvL1TuO1flul231rWkGH92oYYk=
-github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8=
-github.com/hashicorp/hcl/v2 v2.6.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY=
-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/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/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-exec v0.12.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8=
-github.com/hashicorp/terraform-exec v0.13.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8=
-github.com/hashicorp/terraform-exec v0.17.3 h1:MX14Kvnka/oWGmIkyuyvL6POx25ZmKrjlaclkx3eErU=
-github.com/hashicorp/terraform-exec v0.17.3/go.mod h1:+NELG0EqQekJzhvikkeQsOAZpsw0cv/03rbeQJqscAI=
-github.com/hashicorp/terraform-json v0.8.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE=
-github.com/hashicorp/terraform-json v0.12.0/go.mod h1:pmbq9o4EuL43db5+0ogX10Yofv1nozM+wskr/bGFJpI=
-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/terraform-plugin-go v0.1.0/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
-github.com/hashicorp/terraform-plugin-go v0.2.1/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
-github.com/hashicorp/terraform-plugin-go v0.14.2 h1:rhsVEOGCnY04msNymSvbUsXfRLKh9znXZmHlf5e8mhE=
-github.com/hashicorp/terraform-plugin-go v0.14.2/go.mod h1:Q12UjumPNGiFsZffxOsA40Tlz1WVXt2Evh865Zj0+UA=
-github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs=
-github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.0/go.mod h1:JBItawj+j8Ssla5Ib6BC/W9VQkOucBfnX7VRtyx1vw8=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.5.0/go.mod h1:z+cMZ0iswzZOahBJ3XmNWgWkVnAd2bl8g+FhyyuPDH4=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 h1:zHcMbxY0+rFO9gY99elV/XC/UnQVg7FhRCbj1i5b7vM=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1/go.mod h1:+tNlb0wkfdsDJ7JEiERLz4HzM19HyiuIoGzTsM7rPpw=
-github.com/hashicorp/terraform-provider-google/v4 v4.2.0 h1:w0r/YEy7ZM5mTMAarRUpS7eyYrXTN5mazwHtLnEGAk8=
-github.com/hashicorp/terraform-provider-google/v4 v4.2.0/go.mod h1:eUbSXbhfBMNiOuofFo688iPhk42O782vze8drAN2sPA=
-github.com/hashicorp/terraform-registry-address v0.1.0 h1:W6JkV9wbum+m516rCl5/NjKxCyTVaaUBbzYcMzBDO3U=
-github.com/hashicorp/terraform-registry-address v0.1.0/go.mod h1:EnyO2jYO6j29DTHbJcm00E5nQTFeTtyZH3H5ycydQ5A=
-github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
-github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
-github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
-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/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.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.9/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
-github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-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/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.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-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.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
-github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4=
-github.com/jhump/protoreflect v1.14.1 h1:N88q7JkxTHWFEqReuTsYH1dPIwXxA0ITNQp7avLY10s=
-github.com/jhump/protoreflect v1.14.1/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
-github.com/jingyugao/rowserrcheck v0.0.0-20210315055705-d907ca737bb1/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA=
-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-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-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/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
-github.com/jonboulle/clockwork v0.2.0/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8=
-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/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/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/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-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/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
-github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU=
-github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0=
-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.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.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-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/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.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/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/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
-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/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU=
-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.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-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/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-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.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/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.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.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/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
-github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-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/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.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/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
-github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
-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-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
-github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-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-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=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0=
-github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA=
-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.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/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/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
-github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
-github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
-github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=
-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/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/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/nakabonne/nestif v0.3.0/go.mod h1:dI314BppzXjJ4HsCnbo7XzrJHPszZsjnk5wEBSYHI2c=
-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/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs=
-github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
-github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
-github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
-github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
-github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-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/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
-github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg=
-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.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-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/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=
-github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
-github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-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/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/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_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-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/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/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/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.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
-github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-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/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
-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/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE=
-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/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/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/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.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/sirupsen/logrus v1.9.0/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/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/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
-github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
-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.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo=
-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/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.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
-github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
-github.com/ssgreg/nlreturn/v2 v2.1.0/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I=
-github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-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.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.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
-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/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/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/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
-github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-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/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/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.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
-github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
-github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
-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/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc=
-github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
-github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
-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/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-github.com/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/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.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.5.1/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ=
-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.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ=
-go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k=
-go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o=
-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/otel v1.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY=
-go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA=
-go.opentelemetry.io/otel/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo=
-go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI=
-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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8=
-go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI=
-go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI=
-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/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/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
-go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
-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=
-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-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-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-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-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-20210616213533-5ff15b29337e/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-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.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/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-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-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.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-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.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-20180530234432-1e491301e022/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-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-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-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-20190813141303-74dc4d7220e7/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-20191009170851-d66e71096ffb/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-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-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-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-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.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.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-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.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/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/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-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-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-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-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-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-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-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-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=
-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-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-20210503080704-8803ae5d1324/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-20210601080250-7ecdf8ef093b/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-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-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.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.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-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/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.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/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/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-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-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-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-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-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-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=
-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-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=
-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-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-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-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-20200713011307-fd294ab11aed/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-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-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.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.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.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ=
-golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg=
-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=
-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.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=
-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.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=
-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.60.0/go.mod h1:d7rl65NZAkEQ90JFzqBjcRq1TVeG5ZoGV3sSpEnnVb4=
-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.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.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.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/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-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-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-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=
-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-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=
-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-20200711021454-869866162049/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-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-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210601144548-a796c710e9b6/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-20211021150943-2b146023228c/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-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-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-20240108191215-35c7eff3a6b1 h1:OPXtXn7fNMaXwO3JvOmF1QyTc00jsSFFz1vXXBOdCDo=
-google.golang.org/genproto/googleapis/api v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA=
-google.golang.org/grpc v1.8.0/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.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.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=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/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.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
-google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
-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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
-google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
-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/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.27/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.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
-gopkg.in/ini.v1 v1.51.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.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-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=
-gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
-gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
-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=
-honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
-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 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
-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/yaml v1.1.0/go.mod h1:UJmg0vDUVViEyp3mgSv9WPwZCDxu4rQW1olrI1uml+o=
diff --git a/contrib/terraform-provider-iap/main.go b/contrib/terraform-provider-iap/main.go
deleted file mode 100644
index 3c8fa87d13..0000000000
--- a/contrib/terraform-provider-iap/main.go
+++ /dev/null
@@ -1,17 +0,0 @@
-// Terraform provider iap is a provider that allows you to create and manage long lived iap tunnels in terraform.
-package main
-
-import (
- "github.com/hashicorp/terraform-plugin-sdk/v2/plugin"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-iap/provider"
-)
-
-// Generate the Terraform provider documentation using `tfplugindocs`:
-// this is temporarily disabled until tfexec compatibility issue is fixed (this was removed in 0.16.0)
-// we can do this manually for now
-// go:generate go run github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
-
-func main() {
- plugin.Serve(&plugin.ServeOpts{
- ProviderFunc: provider.Provider})
-}
diff --git a/contrib/terraform-provider-iap/provider/iap-tunnel.go b/contrib/terraform-provider-iap/provider/iap-tunnel.go
deleted file mode 100644
index 5e8cc897c0..0000000000
--- a/contrib/terraform-provider-iap/provider/iap-tunnel.go
+++ /dev/null
@@ -1,183 +0,0 @@
-package provider
-
-import (
- "context"
- "fmt"
- "github.com/google/uuid"
- provider_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/phayes/freeport"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/google"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/tunnel"
- "log"
- "net/http"
- "net/url"
- "time"
-)
-
-// dataSourceProxyURL generates a proxy over an iap bastion host.
-func dataSourceProxyURL() *schema.Resource {
- return &schema.Resource{
- Read: dataSourceProxy,
- CreateContext: func(ctx context.Context, data *schema.ResourceData, i interface{}) provider_diag.Diagnostics {
- err := dataSourceProxy(data, i)
- if err != nil {
- return provider_diag.FromErr(err)
- }
- return provider_diag.Diagnostics{}
- },
- Delete: dataSourceProxyDelete,
-
- Schema: map[string]*schema.Schema{
- // project of the bastion host
- "project": {
- Type: schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- // zone of the bastion host
- "zone": {
- Type: schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- // zone of the bastion host
- "instance": {
- Type: schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- // network interface to use
- "interface": {
- Type: schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- // port of the host to connect to
- "remote_port": {
- Type: schema.TypeInt,
- Required: true,
- ValidateFunc: validatePort,
- ForceNew: true,
- },
- // output proxy url
- "proxy_url": {
- Type: schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceProxyDelete(d *schema.ResourceData, meta interface{}) error {
- // Delete the proxy URL.
- // This could involve making a call to an API to delete the proxy, or just
- // cleaning up any resources created on your end.
- // ...
-
- // Remove all fields in the dataSourceProxyURL resource
- d.SetId("")
- for k := range dataSourceProxyURL().Schema {
- _ = d.Set(k, nil)
- }
- return nil
-}
-
-// nolint: cyclop
-func dataSourceProxy(d *schema.ResourceData, meta interface{}) error {
- config, ok := meta.(*google.Config)
- if !ok {
- return fmt.Errorf("could not cast config of type %T to %T", meta, config)
- }
-
- project, ok := d.Get("project").(string)
- if !ok {
- return fmt.Errorf("could not cast project of type %T to %T", d.Get("project"), project)
- }
- zone, ok := d.Get("zone").(string)
- if !ok {
- return fmt.Errorf("could not cast zone of type %T to %T", d.Get("zone"), zone)
- }
- instance, ok := d.Get("instance").(string)
- if !ok {
- return fmt.Errorf("could not cast instance of type %T to %T", d.Get("instance"), instance)
- }
- iface, ok := d.Get("interface").(string)
- if !ok {
- return fmt.Errorf("could not cast interface of type %T to %T", d.Get("interface"), iface)
- }
- remotePort, ok := d.Get("remote_port").(int)
- if !ok {
- return fmt.Errorf("could not cast remote_port of type %T to %T", d.Get("remote_port"), remotePort)
- }
-
- localPort, err := freeport.GetFreePort()
- if err != nil {
- return fmt.Errorf("could not get a free port: %w", err)
- }
-
- tm := tunnel.TunnelManager{
- Project: project,
- RemotePort: remotePort,
- LocalPort: localPort,
- Zone: zone,
- Instance: instance,
- Interface: iface,
- }
-
- tm.SetTokenSource(config.GetTokenSource())
-
- errChan := make(chan error)
-
- log.Printf("[INFO] creating tunnel")
- go func() {
- startTime := time.Now()
- err := tm.StartProxy(context.Background())
- if err != nil {
- fmt.Println(err)
- log.Printf("[DEBUG] Proxy Error %v", err)
- errChan <- err
- }
-
- log.Printf("[DEBUG] Proxy closed after %s", time.Since(startTime))
- }()
-
- select {
- // wait 5 seconds for an error, otherwise just log since this will run in the background for the course of the apply
- case <-time.NewTimer(time.Second * 5).C:
- break
- case err := <-errChan:
- log.Printf("[ERROR] Received error while booting provider: %v", err)
- return err
- }
-
- log.Printf("[DEBUG] Finished creating proxy on port %d", localPort)
-
- id := uuid.New().String()
- log.Printf("[DEBUG] setting proxy id to %s", id)
- d.SetId(id)
-
- proxyURL := fmt.Sprintf("http://localhost:%d", localPort)
- log.Printf("[DEBUG] setting proxy url to %s", proxyURL)
- err = d.Set("proxy_url", proxyURL)
- if err != nil {
- return fmt.Errorf("could not set proxy_url: %w", err)
- }
-
- // test the tunnel
- parsedURL, err := url.Parse(proxyURL)
- if err != nil {
- log.Printf("[ERROR] could not parse proxy url %s: %v", proxyURL, err)
- return fmt.Errorf("could not parse url: %w", err)
- }
- testClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(parsedURL)}}
- //nolint: noctx
- resp, err := testClient.Get("https://www.google.com/")
- if err != nil {
- log.Printf("[ERROR] could not connect through proxy %s: %v", proxyURL, err)
- }
-
- _ = resp.Body.Close()
-
- return nil
-}
diff --git a/contrib/terraform-provider-iap/provider/keep_alive.go b/contrib/terraform-provider-iap/provider/keep_alive.go
deleted file mode 100644
index bb5ce5fac8..0000000000
--- a/contrib/terraform-provider-iap/provider/keep_alive.go
+++ /dev/null
@@ -1,96 +0,0 @@
-package provider
-
-import (
- "fmt"
- "github.com/google/uuid"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/google"
- "log"
- "net/http"
- "net/url"
- "time"
-)
-
-// keepAlive is a resource that keeps a tunnel alive
-// by delaying the read of the datasource until the timeout is finished.
-func keepAlive() *schema.Resource {
- return &schema.Resource{
- Read: dataSourceKeepAlive,
- Schema: map[string]*schema.Schema{
- // timeout in seconds
- "timeout": {
- Type: schema.TypeInt,
- Required: true,
- },
- // port of the host to connect to
- "proxy_url": {
- Type: schema.TypeString,
- Required: true,
- },
- // wether or not the keep alive has timed out
- "timed_out": {
- Type: schema.TypeBool,
- Computed: true,
- },
- },
- }
-}
-
-// nolint: cyclop
-func dataSourceKeepAlive(d *schema.ResourceData, meta interface{}) error {
- config, ok := meta.(*google.Config)
- if !ok {
- return fmt.Errorf("could not cast config of type %T to %T", meta, config)
- }
-
- timeout, ok := d.Get("timeout").(int)
- if !ok {
- return fmt.Errorf("could not cast timeout of type %T to %T", d.Get("timeout"), timeout)
- }
-
- proxyURL, ok := d.Get("proxy_url").(string)
- if !ok {
- return fmt.Errorf("could not cast remote_port of type %T to %T", d.Get("proxy_url"), proxyURL)
- }
-
- // test the tunnel
- parsedURL, err := url.Parse(proxyURL)
- if err != nil {
- log.Printf("[ERROR] could not parse proxy url %s: %v", proxyURL, err)
- return fmt.Errorf("could not parse proxy url %s: %w", proxyURL, err)
- }
-
- id := uuid.New().String()
- log.Printf("[DEBUG] setting proxy id to %s", id)
- d.SetId(id)
-
- log.Printf("[INFO] waiting for %d seconds", timeout)
-
- timer := time.After(time.Duration(timeout) * time.Second)
-
- for {
- select {
- case <-timer:
- log.Printf("[INFO] finished waiting %d seconds", timeout)
- err := d.Set("timed_out", true)
- if err != nil {
- return fmt.Errorf("could not set timed_out to true: %w", err)
- }
- return nil
- case <-time.After(time.Second * 5):
- log.Printf("[INFO] testing proxy %s", proxyURL)
- testClient := &http.Client{Transport: &http.Transport{Proxy: http.ProxyURL(parsedURL)}}
- //nolint: noctx
- resp, err := testClient.Get("https://www.google.com/")
- if err != nil {
- log.Printf("[ERROR] could not connect through proxy %s: %v", proxyURL, err)
- }
- _ = resp.Body.Close()
- log.Printf("[INFO] successfully connected through proxy %s", proxyURL)
- continue
- case <-config.GetContext().Done():
- log.Printf("[ERROR] contet canceled before timeout (%d seconds)", timeout)
- return fmt.Errorf("context was canceled")
- }
- }
-}
diff --git a/contrib/terraform-provider-iap/provider/provider.go b/contrib/terraform-provider-iap/provider/provider.go
deleted file mode 100644
index b324835ab9..0000000000
--- a/contrib/terraform-provider-iap/provider/provider.go
+++ /dev/null
@@ -1,23 +0,0 @@
-// Package provider gets the provider for the iap tunnel.
-package provider
-
-import (
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/google"
-)
-
-// Provider gets the provider for the iap tunnel.
-func Provider() *schema.Provider {
- underlyingProvider := google.Provider()
- return &schema.Provider{
- Schema: underlyingProvider.Schema,
- ProviderMetaSchema: underlyingProvider.ProviderMetaSchema,
- ConfigureContextFunc: underlyingProvider.ConfigureContextFunc,
- ResourcesMap: map[string]*schema.Resource{
- "iap_tunnel_proxy": dataSourceProxyURL(),
- },
- DataSourcesMap: map[string]*schema.Resource{
- "iap_tunnel_keep_alive": keepAlive(),
- },
- }
-}
diff --git a/contrib/terraform-provider-iap/provider/provider_test.go b/contrib/terraform-provider-iap/provider/provider_test.go
deleted file mode 100644
index b6b412b99d..0000000000
--- a/contrib/terraform-provider-iap/provider/provider_test.go
+++ /dev/null
@@ -1,14 +0,0 @@
-package provider_test
-
-import (
- "github.com/synapsecns/sanguine/contrib/terraform-provider-iap/provider"
- "testing"
-)
-
-// Make sure the provider loads.
-func TestProviderLoad(t *testing.T) {
- prov := provider.Provider()
- if prov == nil {
- t.Fatal("Provider should not be nil")
- }
-}
diff --git a/contrib/terraform-provider-iap/provider/validate.go b/contrib/terraform-provider-iap/provider/validate.go
deleted file mode 100644
index a13e77f22d..0000000000
--- a/contrib/terraform-provider-iap/provider/validate.go
+++ /dev/null
@@ -1,18 +0,0 @@
-package provider
-
-import (
- "fmt"
-)
-
-// TODO: test.
-func validatePort(v interface{}, k string) (ws []string, errors []error) {
- value, ok := v.(int)
- if !ok {
- errors = append(errors, fmt.Errorf("expected type of %s to be int", k))
- return
- }
- if value < 1 || value > 65535 {
- errors = append(errors, fmt.Errorf("%q must be between 1 and 65535, got: %d", k, value))
- }
- return
-}
diff --git a/contrib/terraform-provider-iap/scripts/add-tfmac.sh b/contrib/terraform-provider-iap/scripts/add-tfmac.sh
deleted file mode 100755
index 4067060a39..0000000000
--- a/contrib/terraform-provider-iap/scripts/add-tfmac.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/zsh
-
-# if not already present in zshrc
-if [ "$(grep -c -w "alias tfmac='TFENV_ARCH=arm64 TFENV_TERRAFORM_VERSION=latest:^1.3 terraform'" ~/.zshrc)" -le 0 ]; then
- echo "adding tfmac command to zshrc. You might have to source ~/.zshrc or open a new tab"
- echo "alias tfmac='TFENV_ARCH=arm64 TFENV_TERRAFORM_VERSION=latest:^1.3 terraform'" >> ~/.zshrc
-fi
diff --git a/contrib/terraform-provider-iap/scripts/build-tf.sh b/contrib/terraform-provider-iap/scripts/build-tf.sh
deleted file mode 100755
index 7cc26c7061..0000000000
--- a/contrib/terraform-provider-iap/scripts/build-tf.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# shellcheck disable=SC2086
-
-# This gets the arch prefix we use when building a terraform plugin
-TF_PREFIX=$( go version | awk '{print $NF}' | sed 's/\//_/')
-
-# define the plugin directory
-PLUGIN_DIR=$(realpath -m ~/.terraform.d/plugins/example-iap.com/provider/iap/1.0.0/$TF_PREFIX)
-
-# fixes async problems on arm64 https://github.com/hashicorp/terraform-provider-aws/issues/20274#issuecomment-996795241
-# we don't need this for production builds, just darwinarm64.
-GODEBUG=asyncpreemptoff=1 go build .
-
-# make the plugin directory if it doesn't exist
-rm -rf $PLUGIN_DIR
-mkdir -p $PLUGIN_DIR
-cp terraform-provider-iap $PLUGIN_DIR
diff --git a/contrib/terraform-provider-iap/terraform-registry-manifest.json b/contrib/terraform-provider-iap/terraform-registry-manifest.json
deleted file mode 100644
index 295001a07f..0000000000
--- a/contrib/terraform-provider-iap/terraform-registry-manifest.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "version": 1,
- "metadata": {
- "protocol_versions": ["6.0"]
- }
-}
diff --git a/contrib/terraform-provider-kubeproxy/.gitignore b/contrib/terraform-provider-kubeproxy/.gitignore
deleted file mode 100644
index 15253d13be..0000000000
--- a/contrib/terraform-provider-kubeproxy/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-terraform-provider-kubeproxy
diff --git a/contrib/terraform-provider-kubeproxy/.goreleaser.yml b/contrib/terraform-provider-kubeproxy/.goreleaser.yml
deleted file mode 100644
index 4e60b5a29f..0000000000
--- a/contrib/terraform-provider-kubeproxy/.goreleaser.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-project_name: terraform-provider-kubeproxy
-
-monorepo:
- tag_prefix: contrib/terraform-provider-kubeproxy/
- dir: contrib/terraform-provider-kubeproxy/
-
-builds:
- - env:
- # goreleaser does not work with CGO, it could also complicate
- # usage by users in CI/CD systems like Terraform Cloud where
- # they are unable to install libraries.
- - CGO_ENABLED=0
- mod_timestamp: '{{ .CommitTimestamp }}'
- flags:
- - -trimpath
- ldflags:
- - '-s -w -X main.version={{.Version}} -X main.commit={{.Commit}}'
- goos:
- - freebsd
- - windows
- - linux
- - darwin
- goarch:
- - amd64
- - '386'
- - arm
- - arm64
- ignore:
- - goos: darwin
- goarch: '386'
- binary: '{{ .ProjectName }}_v{{ .Version }}'
-archives:
- - format: zip
- name_template: '{{ .ProjectName }}_{{ .Version }}_{{ .Os }}_{{ .Arch }}'
-checksum:
- extra_files:
- - glob: 'terraform-registry-manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_SHA256SUMS'
- algorithm: sha256
-signs:
- - artifacts: checksum
- args:
- # if you are using this in a GitHub action or some other automated pipeline, you
- # need to pass the batch flag to indicate its not interactive.
- - '--batch'
- - '--local-user'
- - '{{ .Env.GPG_FINGERPRINT }}' # set this environment variable for your signing key
- - '--output'
- - '${signature}'
- - '--detach-sign'
- - '${artifact}'
-release:
- extra_files:
- - glob: 'terraform-registry-manifest.json'
- name_template: '{{ .ProjectName }}_{{ .Version }}_manifest.json'
- # If you want to manually examine the release before its live, uncomment this line:
- # draft: true
-
-
-# track sizes
-report_sizes: true
-
-# modified timestamps
-metadata:
- # Set the modified timestamp on the metadata files.
- #
- # Templates: allowed.
- mod_timestamp: '{{ .CommitTimestamp }}'
-
-# produce software bill of lading
-sboms:
- - artifacts: archive
-
diff --git a/contrib/terraform-provider-kubeproxy/Makefile b/contrib/terraform-provider-kubeproxy/Makefile
deleted file mode 100644
index 0340e715e3..0000000000
--- a/contrib/terraform-provider-kubeproxy/Makefile
+++ /dev/null
@@ -1,29 +0,0 @@
-include ../../make/go.Makefile
-
-install-plugin-local: # will install the terraform provider as a local plugin for testing.
- ./scripts/build-tf.sh
-
-run-example: install-plugin-local cleanup-examples # runs an example
- echo "running terraform init, if this fails, you might have to specify amd64 as the arch before using terraform, please see: https://github.com/tfutils/tfenv/issues/337"
- echo "on osx arm64, you can run run-example-m1 as a workaround."
- cd examples && terraform init
-
-cleanup-examples:
- rm -rf examples/.terraform rm -rf examples/.terraform.lock.hcl
-
-run-example-m1: install-plugin-local cleanup-examples # runs an example on osx arm64
- ./scripts/add-tfmac.sh
- source ~/.zshrc
- echo "please run: cd examples && tfmac init"
-
-
-tfenv-install:
- @#Brew - MacOS
- @if [ "$(shell which tflint)" = "" ] && [ "$(shell which brew)" != "" ]; then brew install rflint; fi;
- # default
- @if [ "$(shell which tflint)" = "" ]; then curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash; fi;
-
-
-lint-tf: tfenv-install ## Run golangci-lint and go fmt ./...
- cd examples && tflint --init
- cd examples && tflint
diff --git a/contrib/terraform-provider-kubeproxy/README.md b/contrib/terraform-provider-kubeproxy/README.md
deleted file mode 100644
index 6488169243..0000000000
--- a/contrib/terraform-provider-kubeproxy/README.md
+++ /dev/null
@@ -1,30 +0,0 @@
-# Terraform Kubernetes IAP Proxy Provider
-
-[![Go Reference](https://pkg.go.dev/badge/github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy.svg)](https://pkg.go.dev/github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy)
-[![Go Report Card](https://goreportcard.com/badge/github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy)](https://goreportcard.com/report/github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy)
-
-This provider is a wrapper for the Kubernetes provider that allows for the use of an IAP (Identity-Aware Proxy) when interacting with GCP Kubernetes clusters. This is necessary because Terraform resources are short-lived, so spinning up the IAP proxy separately and having it provide access to the resources is not an option.
-
-## Why use an IAP proxy?
-IAP (Identity-Aware Proxy) is a feature of GCP that allows you to authenticate and authorize access to resources in a more fine-grained manner than just using a service account. By using IAP, you can ensure that only authorized users and applications can access your resources.
-
-## How does the provider work?
-The provider wraps the Kubernetes provider and adds some new fields to the schema, such as the project, zone, service_account, instance, and remote_port fields, which are necessary for configuring the IAP proxy.
-
-When the provider is used to create or update resources, it first starts the IAP proxy on the specified instance, using the specified service account and project. It then sets the KUBECONFIG environment variable to use the proxy to access the Kubernetes cluster.
-
-When the resources are destroyed, the provider stops the IAP proxy on the specified instance.
-
-## How to use the provider
-To use the provider, you will need to specify the project, zone, service_account, instance, and remote_port fields in your Terraform configuration. You will also need to provide credentials for the service account that will be used to start the IAP proxy.
-
-After configuring the provider, you can use it in your Terraform resources just like you would use the Kubernetes provider. The provider will automatically handle starting and stopping the IAP proxy as needed.
-
-## Conclusion
-The Terraform Kubernetes IAP Proxy Provider allows you to use an IAP proxy when interacting with GCP Kubernetes clusters in Terraform, allowing for more fine-grained authentication and authorization of access to your resources. It is easy to use and seamlessly integrates with the Kubernetes provider, making it a great choice for securing your GCP Kubernetes clusters in Terraform.
-
-It's good to note that this is a conceptual explanation and the implementation may differ and depend on the specific details of the kubernetes provider and how it interacts with the gcp iap.
-
-## Incompatibilities
-
-This provider does not support kubernetes_manifest resources. The kubectl provider should be used for this
diff --git a/contrib/terraform-provider-kubeproxy/examples/.terraform.lock.hcl b/contrib/terraform-provider-kubeproxy/examples/.terraform.lock.hcl
deleted file mode 100644
index 0934bb6af3..0000000000
--- a/contrib/terraform-provider-kubeproxy/examples/.terraform.lock.hcl
+++ /dev/null
@@ -1,29 +0,0 @@
-# This file is maintained automatically by "terraform init".
-# Manual edits may be lost in future updates.
-
-provider "example-kube.com/provider/kubeproxy" {
- version = "1.0.0"
- constraints = "~> 1.0.0"
- hashes = [
- "h1:Wcf94AqnYUSfFMJS7RWUaDgfmbHbh29bgLcZgFfvtL8=",
- ]
-}
-
-provider "registry.terraform.io/hashicorp/google" {
- version = "4.50.0"
- hashes = [
- "h1:IEgdWy6HHxu7Dnfzm0PeJVTTMJXSdmhYp+snARJWfkk=",
- "zh:051b7d64b9808296606475f16cb6848577ba559c704c04af7d24789a7ba96e36",
- "zh:2c6af345add3fa4c92521ce49f52c72c1724afad2f47908bcd878136b03436b9",
- "zh:2daad7d49bcbf2fe036790249c8504e67b03dded3ea9f00fc0822ae1892d8292",
- "zh:3b5d0996f35d251ec5723b300337af17bf229838f6f6b77eb09516676236956f",
- "zh:462eeb217fcc0d15453369be1bec8ad9fa59957e7398ef8e82fcf931058805f7",
- "zh:5141ef282f69854622221d3bf7580d73d389676fb7362f73c8132f1b82a4f561",
- "zh:9a83ab13cd57f50a9ac93fed4b02a3fdb525e69a971b0519583ffefbcdf60ba7",
- "zh:b1cd0e10dcef0b7e7f8f4c51296bbe08767671b145d55e38f011f6c52c78f144",
- "zh:bc135972d274d8af2c3434ef09ca4028f4ead6cfddb20bfb13809034b0b70730",
- "zh:db3b4ce4e864b8246edc9e7c5f3581e2c2f6269740307c254b0e5c37fd6665ee",
- "zh:f384bf5749bdabf9419ada9d3c73a5937ee989753bb40f7060dc586973faa3d3",
- "zh:f569b65999264a9416862bca5cd2a6177d94ccb0424f3a4ef424428912b9cb3c",
- ]
-}
diff --git a/contrib/terraform-provider-kubeproxy/examples/google.tf b/contrib/terraform-provider-kubeproxy/examples/google.tf
deleted file mode 100644
index bc5727f544..0000000000
--- a/contrib/terraform-provider-kubeproxy/examples/google.tf
+++ /dev/null
@@ -1,13 +0,0 @@
-# google provider used for kube access
-provider "google" {
-}
-
-# token
-data "google_service_account_access_token" "kube_sa" {
- target_service_account = var.service_account
- lifetime = "1000s"
- scopes = [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/userinfo.email"
- ]
-}
diff --git a/contrib/terraform-provider-kubeproxy/examples/main.tf b/contrib/terraform-provider-kubeproxy/examples/main.tf
deleted file mode 100644
index ab66b69b5e..0000000000
--- a/contrib/terraform-provider-kubeproxy/examples/main.tf
+++ /dev/null
@@ -1,50 +0,0 @@
-terraform {
- required_providers {
- kubeproxy = {
- version = "~> 1.0.0"
- source = "example-kube.com/provider/kubeproxy"
- }
- }
-}
-
-
-provider "kubeproxy" {
- instance = var.instance
- zone = var.zone
- interface = var.interface
- project = var.project
- remote_port = var.remote_port
-
- // TODO: this needs to be changed to work cross cluster
- host = ""
- token = data.google_service_account_access_token.kube_sa.access_token
- config_path = var.config_path
- config_context = var.config_context
-}
-
-resource "kubeproxy_secret" "example" {
- metadata {
- name = "basic-auth"
- }
-
- data = {
- username = "admin"
- password = "P4ssw0rd"
- }
-
- type = "kubernetes.io/basic-auth"
-}
-
-data "kubeproxy_resource" "example" {
- api_version = "v1"
- kind = "ConfigMap"
-
- metadata {
- name = "example"
- namespace = "default"
- }
-}
-
-output "test" {
- value = data.kubeproxy_resource.example.object.data.TEST
-}
diff --git a/contrib/terraform-provider-kubeproxy/examples/variables.tf b/contrib/terraform-provider-kubeproxy/examples/variables.tf
deleted file mode 100644
index f807da14b8..0000000000
--- a/contrib/terraform-provider-kubeproxy/examples/variables.tf
+++ /dev/null
@@ -1,47 +0,0 @@
-variable "service_account" {
- type = string
- description = "The service account to impersonate"
-}
-
-variable "config_path" {
- type = string
- description = "The path to the kube config file"
- default = "~/.kube/config"
-}
-
-variable "config_context" {
- type = string
- description = "The context to use in the kube config file"
-}
-
-variable "zone" {
- type = string
- description = "The zone of the bastion proxy"
-}
-
-
-variable "instance" {
- type = string
- description = "The instance to use for the bastion proxy"
- default = "rpc-bastion"
-}
-
-variable "interface" {
- type = string
- description = "The interface to use for the bastion proxy"
- default = "nic0"
-}
-
-variable "project" {
- type = string
- description = "The project of the bastion proxy"
-}
-
-variable "remote_port" {
- type = string
- description = "The remote_port of the bastion proxy"
- # tiny proxy default
- default = 8888
-}
-
-
diff --git a/contrib/terraform-provider-kubeproxy/generated/configschema/configschema_gen.go b/contrib/terraform-provider-kubeproxy/generated/configschema/configschema_gen.go
deleted file mode 100644
index b0278e63ba..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/configschema/configschema_gen.go
+++ /dev/null
@@ -1,411 +0,0 @@
-// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
-// nolint
-package configschema
-
-import (
- coerce_value_fmt "fmt"
- nestingmode_string_strconv "strconv"
-
- coerce_value_cty "github.com/hashicorp/go-cty/cty"
- empty_value_cty "github.com/hashicorp/go-cty/cty"
- implied_type_cty "github.com/hashicorp/go-cty/cty"
- schema_cty "github.com/hashicorp/go-cty/cty"
- coerce_value_convert "github.com/hashicorp/go-cty/cty/convert"
-)
-
-func (b *Block) CoerceValue(in coerce_value_cty.Value) (coerce_value_cty.Value, error) {
- var path coerce_value_cty.Path
- return b.coerceValue(in, path)
-}
-
-func (b *Block) coerceValue(in coerce_value_cty.Value, path coerce_value_cty.Path) (coerce_value_cty.Value, error) {
- switch {
- case in.IsNull():
- return coerce_value_cty.NullVal(b.ImpliedType()), nil
- case !in.IsKnown():
- return coerce_value_cty.UnknownVal(b.ImpliedType()), nil
- }
-
- ty := in.Type()
- if !ty.IsObjectType() {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("an object is required")
- }
-
- for name := range ty.AttributeTypes() {
- if _, defined := b.Attributes[name]; defined {
- continue
- }
- if _, defined := b.BlockTypes[name]; defined {
- continue
- }
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("unexpected attribute %q", name)
- }
-
- attrs := make(map[string]coerce_value_cty.Value)
-
- for name, attrS := range b.Attributes {
- var val coerce_value_cty.Value
- switch {
- case ty.HasAttribute(name):
- val = in.GetAttr(name)
- case attrS.Computed || attrS.Optional:
- val = coerce_value_cty.NullVal(attrS.Type)
- default:
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("attribute %q is required", name)
- }
-
- val, err := attrS.coerceValue(val, append(path, coerce_value_cty.GetAttrStep{Name: name}))
- if err != nil {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), err
- }
-
- attrs[name] = val
- }
- for typeName, blockS := range b.BlockTypes {
- switch blockS.Nesting {
-
- case NestingSingle, NestingGroup:
- switch {
- case ty.HasAttribute(typeName):
- var err error
- val := in.GetAttr(typeName)
- attrs[typeName], err = blockS.coerceValue(val, append(path, coerce_value_cty.GetAttrStep{Name: typeName}))
- if err != nil {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), err
- }
- default:
- attrs[typeName] = blockS.EmptyValue()
- }
-
- case NestingList:
- switch {
- case ty.HasAttribute(typeName):
- coll := in.GetAttr(typeName)
-
- switch {
- case coll.IsNull():
- attrs[typeName] = coerce_value_cty.NullVal(coerce_value_cty.List(blockS.ImpliedType()))
- continue
- case !coll.IsKnown():
- attrs[typeName] = coerce_value_cty.UnknownVal(coerce_value_cty.List(blockS.ImpliedType()))
- continue
- }
-
- if !coll.CanIterateElements() {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("must be a list")
- }
- l := coll.LengthInt()
-
- if l == 0 {
- attrs[typeName] = coerce_value_cty.ListValEmpty(blockS.ImpliedType())
- continue
- }
- elems := make([]coerce_value_cty.Value, 0, l)
- {
- path = append(path, coerce_value_cty.GetAttrStep{Name: typeName})
- for it := coll.ElementIterator(); it.Next(); {
- var err error
- idx, val := it.Element()
- val, err = blockS.coerceValue(val, append(path, coerce_value_cty.IndexStep{Key: idx}))
- if err != nil {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), err
- }
- elems = append(elems, val)
- }
- }
- attrs[typeName] = coerce_value_cty.ListVal(elems)
- default:
- attrs[typeName] = coerce_value_cty.ListValEmpty(blockS.ImpliedType())
- }
-
- case NestingSet:
- switch {
- case ty.HasAttribute(typeName):
- coll := in.GetAttr(typeName)
-
- switch {
- case coll.IsNull():
- attrs[typeName] = coerce_value_cty.NullVal(coerce_value_cty.Set(blockS.ImpliedType()))
- continue
- case !coll.IsKnown():
- attrs[typeName] = coerce_value_cty.UnknownVal(coerce_value_cty.Set(blockS.ImpliedType()))
- continue
- }
-
- if !coll.CanIterateElements() {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("must be a set")
- }
- l := coll.LengthInt()
-
- if l == 0 {
- attrs[typeName] = coerce_value_cty.SetValEmpty(blockS.ImpliedType())
- continue
- }
- elems := make([]coerce_value_cty.Value, 0, l)
- {
- path = append(path, coerce_value_cty.GetAttrStep{Name: typeName})
- for it := coll.ElementIterator(); it.Next(); {
- var err error
- idx, val := it.Element()
- val, err = blockS.coerceValue(val, append(path, coerce_value_cty.IndexStep{Key: idx}))
- if err != nil {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), err
- }
- elems = append(elems, val)
- }
- }
- attrs[typeName] = coerce_value_cty.SetVal(elems)
- default:
- attrs[typeName] = coerce_value_cty.SetValEmpty(blockS.ImpliedType())
- }
-
- case NestingMap:
- switch {
- case ty.HasAttribute(typeName):
- coll := in.GetAttr(typeName)
-
- switch {
- case coll.IsNull():
- attrs[typeName] = coerce_value_cty.NullVal(coerce_value_cty.Map(blockS.ImpliedType()))
- continue
- case !coll.IsKnown():
- attrs[typeName] = coerce_value_cty.UnknownVal(coerce_value_cty.Map(blockS.ImpliedType()))
- continue
- }
-
- if !coll.CanIterateElements() {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("must be a map")
- }
- l := coll.LengthInt()
- if l == 0 {
- attrs[typeName] = coerce_value_cty.MapValEmpty(blockS.ImpliedType())
- continue
- }
- elems := make(map[string]coerce_value_cty.Value)
- {
- path = append(path, coerce_value_cty.GetAttrStep{Name: typeName})
- for it := coll.ElementIterator(); it.Next(); {
- var err error
- key, val := it.Element()
- if key.Type() != coerce_value_cty.String || key.IsNull() || !key.IsKnown() {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), path.NewErrorf("must be a map")
- }
- val, err = blockS.coerceValue(val, append(path, coerce_value_cty.IndexStep{Key: key}))
- if err != nil {
- return coerce_value_cty.UnknownVal(b.ImpliedType()), err
- }
- elems[key.AsString()] = val
- }
- }
-
- useObject := false
- switch {
- case coll.Type().IsObjectType():
- useObject = true
- default:
-
- ety := coll.Type().ElementType()
- for _, v := range elems {
- if !v.Type().Equals(ety) {
- useObject = true
- break
- }
- }
- }
-
- if useObject {
- attrs[typeName] = coerce_value_cty.ObjectVal(elems)
- } else {
- attrs[typeName] = coerce_value_cty.MapVal(elems)
- }
- default:
- attrs[typeName] = coerce_value_cty.MapValEmpty(blockS.ImpliedType())
- }
-
- default:
-
- panic(coerce_value_fmt.Errorf("unsupported nesting mode %#v", blockS.Nesting))
- }
- }
-
- return coerce_value_cty.ObjectVal(attrs), nil
-}
-
-func (a *Attribute) coerceValue(in coerce_value_cty.Value, path coerce_value_cty.Path) (coerce_value_cty.Value, error) {
- val, err := coerce_value_convert.Convert(in, a.Type)
- if err != nil {
- return coerce_value_cty.UnknownVal(a.Type), path.NewError(err)
- }
- return val, nil
-}
-
-func (b *Block) EmptyValue() empty_value_cty.Value {
- vals := make(map[string]empty_value_cty.Value)
- for name, attrS := range b.Attributes {
- vals[name] = attrS.EmptyValue()
- }
- for name, blockS := range b.BlockTypes {
- vals[name] = blockS.EmptyValue()
- }
- return empty_value_cty.ObjectVal(vals)
-}
-
-func (a *Attribute) EmptyValue() empty_value_cty.Value {
- return empty_value_cty.NullVal(a.Type)
-}
-
-func (b *NestedBlock) EmptyValue() empty_value_cty.Value {
- switch b.Nesting {
- case NestingSingle:
- return empty_value_cty.NullVal(b.Block.ImpliedType())
- case NestingGroup:
- return b.Block.EmptyValue()
- case NestingList:
- if ty := b.Block.ImpliedType(); ty.HasDynamicTypes() {
- return empty_value_cty.EmptyTupleVal
- } else {
- return empty_value_cty.ListValEmpty(ty)
- }
- case NestingMap:
- if ty := b.Block.ImpliedType(); ty.HasDynamicTypes() {
- return empty_value_cty.EmptyObjectVal
- } else {
- return empty_value_cty.MapValEmpty(ty)
- }
- case NestingSet:
- return empty_value_cty.SetValEmpty(b.Block.ImpliedType())
- default:
-
- return empty_value_cty.NullVal(empty_value_cty.DynamicPseudoType)
- }
-}
-
-func (b *Block) ImpliedType() implied_type_cty.Type {
- if b == nil {
- return implied_type_cty.EmptyObject
- }
-
- atys := make(map[string]implied_type_cty.Type)
-
- for name, attrS := range b.Attributes {
- atys[name] = attrS.Type
- }
-
- for name, blockS := range b.BlockTypes {
- if _, exists := atys[name]; exists {
- panic("invalid schema, blocks and attributes cannot have the same name")
- }
-
- childType := blockS.Block.ImpliedType()
-
- switch blockS.Nesting {
- case NestingSingle, NestingGroup:
- atys[name] = childType
- case NestingList:
-
- if childType.HasDynamicTypes() {
- atys[name] = implied_type_cty.DynamicPseudoType
- } else {
- atys[name] = implied_type_cty.List(childType)
- }
- case NestingSet:
- if childType.HasDynamicTypes() {
- panic("can't use cty.DynamicPseudoType inside a block type with NestingSet")
- }
- atys[name] = implied_type_cty.Set(childType)
- case NestingMap:
-
- if childType.HasDynamicTypes() {
- atys[name] = implied_type_cty.DynamicPseudoType
- } else {
- atys[name] = implied_type_cty.Map(childType)
- }
- default:
- panic("invalid nesting type")
- }
- }
-
- return implied_type_cty.Object(atys)
-}
-
-func _() {
-
- var x [1]struct{}
- _ = x[nestingModeInvalid-0]
- _ = x[NestingSingle-1]
- _ = x[NestingGroup-2]
- _ = x[NestingList-3]
- _ = x[NestingSet-4]
- _ = x[NestingMap-5]
-}
-
-const _NestingMode_name = "nestingModeInvalidNestingSingleNestingGroupNestingListNestingSetNestingMap"
-
-var _NestingMode_index = [...]uint8{0, 18, 31, 43, 54, 64, 74}
-
-func (i NestingMode) String() string {
- if i < 0 || i >= NestingMode(len(_NestingMode_index)-1) {
- return "NestingMode(" + nestingmode_string_strconv.FormatInt(int64(i), 10) + ")"
- }
- return _NestingMode_name[_NestingMode_index[i]:_NestingMode_index[i+1]]
-}
-
-type StringKind int
-
-const (
- StringPlain StringKind = iota
-
- StringMarkdown
-)
-
-type Block struct {
- Attributes map[string]*Attribute
-
- BlockTypes map[string]*NestedBlock
-
- Description string
- DescriptionKind StringKind
-
- Deprecated bool
-}
-
-type Attribute struct {
- Type schema_cty.Type
-
- Description string
- DescriptionKind StringKind
-
- Required bool
-
- Optional bool
-
- Computed bool
-
- Sensitive bool
-
- Deprecated bool
-}
-
-type NestedBlock struct {
- Block
-
- Nesting NestingMode
-
- MinItems, MaxItems int
-}
-
-type NestingMode int
-
-const (
- nestingModeInvalid NestingMode = iota
-
- NestingSingle
-
- NestingGroup
-
- NestingList
-
- NestingSet
-
- NestingMap
-)
diff --git a/contrib/terraform-provider-kubeproxy/generated/configschema/generate.go b/contrib/terraform-provider-kubeproxy/generated/configschema/generate.go
deleted file mode 100644
index 1a1f0cd724..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/configschema/generate.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package configschema
-
-// Note: we can't actually exclude this module from codeanalysis since we import it
-//go:generate go run github.com/synapsecns/sanguine/tools/bundle -prefix "" -pkg configschema -o configschema_gen.go github.com/hashicorp/terraform-plugin-sdk/v2/internal/configs/configschema
diff --git a/contrib/terraform-provider-kubeproxy/generated/convert/convert_gen.go b/contrib/terraform-provider-kubeproxy/generated/convert/convert_gen.go
deleted file mode 100644
index bcb3ca4326..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/convert/convert_gen.go
+++ /dev/null
@@ -1,444 +0,0 @@
-// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
-// nolint
-package convert
-
-import (
- diagnostics_context "context"
- schema_context "context"
- schema_fmt "fmt"
- schema_reflect "reflect"
- schema_sort "sort"
-
- diagnostics_cty "github.com/hashicorp/go-cty/cty"
- schema_cty "github.com/hashicorp/go-cty/cty"
- diagnostics_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- schema_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- diagnostics_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- schema_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- diagnostics_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- schema_configschema "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/configschema"
- diagnostics_logging "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/logging"
- schema_logging "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/logging"
-)
-
-func AppendProtoDiag(ctx diagnostics_context.Context, diags []*diagnostics_tfprotov5.Diagnostic, d interface{}) []*diagnostics_tfprotov5.Diagnostic {
- switch d := d.(type) {
- case diagnostics_cty.PathError:
- ap := PathToAttributePath(d.Path)
- diagnostic := &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityError,
- Summary: d.Error(),
- Attribute: ap,
- }
-
- if diagnostic.Summary == "" {
- diagnostics_logging.HelperSchemaWarn(ctx, "detected empty error string for diagnostic in AppendProtoDiag for cty.PathError type")
- diagnostic.Summary = "Empty Error String"
- diagnostic.Detail = "This is always a bug in the provider and should be reported to the provider developers."
- }
-
- diags = append(diags, diagnostic)
- case diagnostics_diag.Diagnostics:
- diags = append(diags, DiagsToProto(d)...)
- case error:
- if d == nil {
- diagnostics_logging.HelperSchemaDebug(ctx, "skipping diagnostic for nil error in AppendProtoDiag")
- return diags
- }
-
- diagnostic := &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityError,
- Summary: d.Error(),
- }
-
- if diagnostic.Summary == "" {
- diagnostics_logging.HelperSchemaWarn(ctx, "detected empty error string for diagnostic in AppendProtoDiag for error type")
- diagnostic.Summary = "Error Missing Message"
- diagnostic.Detail = "This is always a bug in the provider and should be reported to the provider developers."
- }
-
- diags = append(diags, diagnostic)
- case string:
- if d == "" {
- diagnostics_logging.HelperSchemaDebug(ctx, "skipping diagnostic for empty string in AppendProtoDiag")
- return diags
- }
-
- diags = append(diags, &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityWarning,
- Summary: d,
- })
- case *diagnostics_tfprotov5.Diagnostic:
- diags = append(diags, d)
- case []*diagnostics_tfprotov5.Diagnostic:
- diags = append(diags, d...)
- }
- return diags
-}
-
-func ProtoToDiags(ds []*diagnostics_tfprotov5.Diagnostic) diagnostics_diag.Diagnostics {
- var diags diagnostics_diag.Diagnostics
- for _, d := range ds {
- var severity diagnostics_diag.Severity
-
- switch d.Severity {
- case diagnostics_tfprotov5.DiagnosticSeverityError:
- severity = diagnostics_diag.Error
- case diagnostics_tfprotov5.DiagnosticSeverityWarning:
- severity = diagnostics_diag.Warning
- }
-
- diags = append(diags, diagnostics_diag.Diagnostic{
- Severity: severity,
- Summary: d.Summary,
- Detail: d.Detail,
- AttributePath: AttributePathToPath(d.Attribute),
- })
- }
-
- return diags
-}
-
-func DiagsToProto(diags diagnostics_diag.Diagnostics) []*diagnostics_tfprotov5.Diagnostic {
- var ds []*diagnostics_tfprotov5.Diagnostic
- for _, d := range diags {
- protoDiag := &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityError,
- Summary: d.Summary,
- Detail: d.Detail,
- Attribute: PathToAttributePath(d.AttributePath),
- }
- if d.Severity == diagnostics_diag.Warning {
- protoDiag.Severity = diagnostics_tfprotov5.DiagnosticSeverityWarning
- }
- if d.Summary == "" {
- protoDiag.Summary = "Empty Summary: This is always a bug in the provider and should be reported to the provider developers."
- }
- ds = append(ds, protoDiag)
- }
- return ds
-}
-
-func AttributePathToPath(ap *diagnostics_tftypes.AttributePath) diagnostics_cty.Path {
- var p diagnostics_cty.Path
- if ap == nil {
- return p
- }
- for _, step := range ap.Steps() {
- switch step := step.(type) {
- case diagnostics_tftypes.AttributeName:
- p = p.GetAttr(string(step))
- case diagnostics_tftypes.ElementKeyString:
- p = p.Index(diagnostics_cty.StringVal(string(step)))
- case diagnostics_tftypes.ElementKeyInt:
- p = p.Index(diagnostics_cty.NumberIntVal(int64(step)))
- }
- }
- return p
-}
-
-func PathToAttributePath(p diagnostics_cty.Path) *diagnostics_tftypes.AttributePath {
- if p == nil || len(p) < 1 {
- return nil
- }
- ap := diagnostics_tftypes.NewAttributePath()
- for _, step := range p {
- switch selector := step.(type) {
- case diagnostics_cty.GetAttrStep:
- ap = ap.WithAttributeName(selector.Name)
-
- case diagnostics_cty.IndexStep:
- key := selector.Key
- switch key.Type() {
- case diagnostics_cty.String:
- ap = ap.WithElementKeyString(key.AsString())
- case diagnostics_cty.Number:
- v, _ := key.AsBigFloat().Int64()
- ap = ap.WithElementKeyInt(int(v))
- default:
-
- return ap
- }
- }
- }
- return ap
-}
-
-func tftypeFromCtyType(in schema_cty.Type) (schema_tftypes.Type, error) {
- switch {
- case in.Equals(schema_cty.String):
- return schema_tftypes.String, nil
- case in.Equals(schema_cty.Number):
- return schema_tftypes.Number, nil
- case in.Equals(schema_cty.Bool):
- return schema_tftypes.Bool, nil
- case in.Equals(schema_cty.DynamicPseudoType):
- return schema_tftypes.DynamicPseudoType, nil
- case in.IsSetType():
- elemType, err := tftypeFromCtyType(in.ElementType())
- if err != nil {
- return nil, err
- }
- return schema_tftypes.Set{
- ElementType: elemType,
- }, nil
- case in.IsListType():
- elemType, err := tftypeFromCtyType(in.ElementType())
- if err != nil {
- return nil, err
- }
- return schema_tftypes.List{
- ElementType: elemType,
- }, nil
- case in.IsTupleType():
- elemTypes := make([]schema_tftypes.Type, 0, in.Length())
- for _, typ := range in.TupleElementTypes() {
- elemType, err := tftypeFromCtyType(typ)
- if err != nil {
- return nil, err
- }
- elemTypes = append(elemTypes, elemType)
- }
- return schema_tftypes.Tuple{
- ElementTypes: elemTypes,
- }, nil
- case in.IsMapType():
- elemType, err := tftypeFromCtyType(in.ElementType())
- if err != nil {
- return nil, err
- }
- return schema_tftypes.Map{
- ElementType: elemType,
- }, nil
- case in.IsObjectType():
- attrTypes := make(map[string]schema_tftypes.Type)
- for key, typ := range in.AttributeTypes() {
- attrType, err := tftypeFromCtyType(typ)
- if err != nil {
- return nil, err
- }
- attrTypes[key] = attrType
- }
- return schema_tftypes.Object{
- AttributeTypes: attrTypes,
- }, nil
- }
- return nil, schema_fmt.Errorf("unknown cty type %s", in.GoString())
-}
-
-func ctyTypeFromTFType(in schema_tftypes.Type) (schema_cty.Type, error) {
- switch {
- case in.Is(schema_tftypes.String):
- return schema_cty.String, nil
- case in.Is(schema_tftypes.Bool):
- return schema_cty.Bool, nil
- case in.Is(schema_tftypes.Number):
- return schema_cty.Number, nil
- case in.Is(schema_tftypes.DynamicPseudoType):
- return schema_cty.DynamicPseudoType, nil
- case in.Is(schema_tftypes.List{}):
- elemType, err := ctyTypeFromTFType(in.(schema_tftypes.List).ElementType)
- if err != nil {
- return schema_cty.Type{}, err
- }
- return schema_cty.List(elemType), nil
- case in.Is(schema_tftypes.Set{}):
- elemType, err := ctyTypeFromTFType(in.(schema_tftypes.Set).ElementType)
- if err != nil {
- return schema_cty.Type{}, err
- }
- return schema_cty.Set(elemType), nil
- case in.Is(schema_tftypes.Map{}):
- elemType, err := ctyTypeFromTFType(in.(schema_tftypes.Map).ElementType)
- if err != nil {
- return schema_cty.Type{}, err
- }
- return schema_cty.Map(elemType), nil
- case in.Is(schema_tftypes.Tuple{}):
- elemTypes := make([]schema_cty.Type, 0, len(in.(schema_tftypes.Tuple).ElementTypes))
- for _, typ := range in.(schema_tftypes.Tuple).ElementTypes {
- elemType, err := ctyTypeFromTFType(typ)
- if err != nil {
- return schema_cty.Type{}, err
- }
- elemTypes = append(elemTypes, elemType)
- }
- return schema_cty.Tuple(elemTypes), nil
- case in.Is(schema_tftypes.Object{}):
- attrTypes := make(map[string]schema_cty.Type, len(in.(schema_tftypes.Object).AttributeTypes))
- for k, v := range in.(schema_tftypes.Object).AttributeTypes {
- attrType, err := ctyTypeFromTFType(v)
- if err != nil {
- return schema_cty.Type{}, err
- }
- attrTypes[k] = attrType
- }
- return schema_cty.Object(attrTypes), nil
- }
- return schema_cty.Type{}, schema_fmt.Errorf("unknown tftypes.Type %s", in)
-}
-
-func ConfigSchemaToProto(ctx schema_context.Context, b *schema_configschema.Block) *schema_tfprotov5.SchemaBlock {
- block := &schema_tfprotov5.SchemaBlock{
- Description: b.Description,
- DescriptionKind: protoStringKind(ctx, b.DescriptionKind),
- Deprecated: b.Deprecated,
- }
-
- for _, name := range sortedKeys(b.Attributes) {
- a := b.Attributes[name]
-
- attr := &schema_tfprotov5.SchemaAttribute{
- Name: name,
- Description: a.Description,
- DescriptionKind: protoStringKind(ctx, a.DescriptionKind),
- Optional: a.Optional,
- Computed: a.Computed,
- Required: a.Required,
- Sensitive: a.Sensitive,
- Deprecated: a.Deprecated,
- }
-
- var err error
- attr.Type, err = tftypeFromCtyType(a.Type)
- if err != nil {
- panic(err)
- }
-
- block.Attributes = append(block.Attributes, attr)
- }
-
- for _, name := range sortedKeys(b.BlockTypes) {
- b := b.BlockTypes[name]
- block.BlockTypes = append(block.BlockTypes, protoSchemaNestedBlock(ctx, name, b))
- }
-
- return block
-}
-
-func protoStringKind(ctx schema_context.Context, k schema_configschema.StringKind) schema_tfprotov5.StringKind {
- switch k {
- default:
- schema_logging.HelperSchemaTrace(ctx, schema_fmt.Sprintf("Unexpected configschema.StringKind: %d", k))
- return schema_tfprotov5.StringKindPlain
- case schema_configschema.StringPlain:
- return schema_tfprotov5.StringKindPlain
- case schema_configschema.StringMarkdown:
- return schema_tfprotov5.StringKindMarkdown
- }
-}
-
-func protoSchemaNestedBlock(ctx schema_context.Context, name string, b *schema_configschema.NestedBlock) *schema_tfprotov5.SchemaNestedBlock {
- var nesting schema_tfprotov5.SchemaNestedBlockNestingMode
- switch b.Nesting {
- case schema_configschema.NestingSingle:
- nesting = schema_tfprotov5.SchemaNestedBlockNestingModeSingle
- case schema_configschema.NestingGroup:
- nesting = schema_tfprotov5.SchemaNestedBlockNestingModeGroup
- case schema_configschema.NestingList:
- nesting = schema_tfprotov5.SchemaNestedBlockNestingModeList
- case schema_configschema.NestingSet:
- nesting = schema_tfprotov5.SchemaNestedBlockNestingModeSet
- case schema_configschema.NestingMap:
- nesting = schema_tfprotov5.SchemaNestedBlockNestingModeMap
- default:
- nesting = schema_tfprotov5.SchemaNestedBlockNestingModeInvalid
- }
- return &schema_tfprotov5.SchemaNestedBlock{
- TypeName: name,
- Block: ConfigSchemaToProto(ctx, &b.Block),
- Nesting: nesting,
- MinItems: int64(b.MinItems),
- MaxItems: int64(b.MaxItems),
- }
-}
-
-func ProtoToConfigSchema(ctx schema_context.Context, b *schema_tfprotov5.SchemaBlock) *schema_configschema.Block {
- block := &schema_configschema.Block{
- Attributes: make(map[string]*schema_configschema.Attribute),
- BlockTypes: make(map[string]*schema_configschema.NestedBlock),
-
- Description: b.Description,
- DescriptionKind: schemaStringKind(ctx, b.DescriptionKind),
- Deprecated: b.Deprecated,
- }
-
- for _, a := range b.Attributes {
- attr := &schema_configschema.Attribute{
- Description: a.Description,
- DescriptionKind: schemaStringKind(ctx, a.DescriptionKind),
- Required: a.Required,
- Optional: a.Optional,
- Computed: a.Computed,
- Sensitive: a.Sensitive,
- Deprecated: a.Deprecated,
- }
-
- var err error
- attr.Type, err = ctyTypeFromTFType(a.Type)
- if err != nil {
- panic(err)
- }
-
- block.Attributes[a.Name] = attr
- }
-
- for _, b := range b.BlockTypes {
- block.BlockTypes[b.TypeName] = schemaNestedBlock(ctx, b)
- }
-
- return block
-}
-
-func schemaStringKind(ctx schema_context.Context, k schema_tfprotov5.StringKind) schema_configschema.StringKind {
- switch k {
- default:
- schema_logging.HelperSchemaTrace(ctx, schema_fmt.Sprintf("Unexpected tfprotov5.StringKind: %d", k))
- return schema_configschema.StringPlain
- case schema_tfprotov5.StringKindPlain:
- return schema_configschema.StringPlain
- case schema_tfprotov5.StringKindMarkdown:
- return schema_configschema.StringMarkdown
- }
-}
-
-func schemaNestedBlock(ctx schema_context.Context, b *schema_tfprotov5.SchemaNestedBlock) *schema_configschema.NestedBlock {
- var nesting schema_configschema.NestingMode
- switch b.Nesting {
- case schema_tfprotov5.SchemaNestedBlockNestingModeSingle:
- nesting = schema_configschema.NestingSingle
- case schema_tfprotov5.SchemaNestedBlockNestingModeGroup:
- nesting = schema_configschema.NestingGroup
- case schema_tfprotov5.SchemaNestedBlockNestingModeList:
- nesting = schema_configschema.NestingList
- case schema_tfprotov5.SchemaNestedBlockNestingModeMap:
- nesting = schema_configschema.NestingMap
- case schema_tfprotov5.SchemaNestedBlockNestingModeSet:
- nesting = schema_configschema.NestingSet
- default:
-
- }
-
- nb := &schema_configschema.NestedBlock{
- Nesting: nesting,
- MinItems: int(b.MinItems),
- MaxItems: int(b.MaxItems),
- }
-
- nested := ProtoToConfigSchema(ctx, b.Block)
- nb.Block = *nested
- return nb
-}
-
-func sortedKeys(m interface{}) []string {
- v := schema_reflect.ValueOf(m)
- keys := make([]string, v.Len())
-
- mapKeys := v.MapKeys()
- for i, k := range mapKeys {
- keys[i] = k.Interface().(string)
- }
-
- schema_sort.Strings(keys)
- return keys
-}
diff --git a/contrib/terraform-provider-kubeproxy/generated/convert/generate.go b/contrib/terraform-provider-kubeproxy/generated/convert/generate.go
deleted file mode 100644
index b508eccf1e..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/convert/generate.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package convert
-
-// Note: we can't actually exclude this module from codeanalysis since we import it
-//go:generate go run github.com/synapsecns/sanguine/tools/bundle -prefix "" -pkg convert -o convert_gen.go -import github.com/hashicorp/terraform-plugin-sdk/v2/internal/logging=github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/logging -import github.com/hashicorp/terraform-plugin-sdk/v2/internal/configs/configschema=github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/configschema github.com/hashicorp/terraform-plugin-sdk/v2/internal/plugin/convert
diff --git a/contrib/terraform-provider-kubeproxy/generated/logging/generate.go b/contrib/terraform-provider-kubeproxy/generated/logging/generate.go
deleted file mode 100644
index 0f33ffc01c..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/logging/generate.go
+++ /dev/null
@@ -1,4 +0,0 @@
-package logging
-
-// Note: we can't actually exclude this module from codeanalysis since we import it
-//go:generate go run github.com/synapsecns/sanguine/tools/bundle -prefix "" -pkg logging -o logging_gen.go github.com/hashicorp/terraform-plugin-sdk/v2/internal/logging
diff --git a/contrib/terraform-provider-kubeproxy/generated/logging/logging_gen.go b/contrib/terraform-provider-kubeproxy/generated/logging/logging_gen.go
deleted file mode 100644
index 05c5b504d3..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/logging/logging_gen.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
-// nolint
-package logging
-
-import (
- context_context "context"
- helper_resource_context "context"
- helper_schema_context "context"
-
- context_tfsdklog "github.com/hashicorp/terraform-plugin-log/tfsdklog"
- helper_resource_tfsdklog "github.com/hashicorp/terraform-plugin-log/tfsdklog"
- helper_schema_tfsdklog "github.com/hashicorp/terraform-plugin-log/tfsdklog"
- context_logginghelperlogging "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
- context_testingtesting "github.com/mitchellh/go-testing-interface"
-)
-
-func InitContext(ctx context_context.Context) context_context.Context {
- ctx = context_tfsdklog.NewSubsystem(ctx, SubsystemHelperSchema,
-
- context_tfsdklog.WithAdditionalLocationOffset(1),
- context_tfsdklog.WithLevelFromEnv(EnvTfLogSdkHelperSchema),
-
- context_tfsdklog.WithRootFields(),
- )
-
- return ctx
-}
-
-func InitTestContext(ctx context_context.Context, t context_testingtesting.T) context_context.Context {
- context_logginghelperlogging.SetOutput(t)
-
- ctx = context_tfsdklog.RegisterTestSink(ctx, t)
- ctx = context_tfsdklog.NewRootSDKLogger(ctx, context_tfsdklog.WithLevelFromEnv(EnvTfLogSdk))
- ctx = context_tfsdklog.NewSubsystem(ctx, SubsystemHelperResource,
-
- context_tfsdklog.WithAdditionalLocationOffset(1),
- context_tfsdklog.WithLevelFromEnv(EnvTfLogSdkHelperResource),
- )
- ctx = TestNameContext(ctx, t.Name())
-
- return ctx
-}
-
-func TestNameContext(ctx context_context.Context, testName string) context_context.Context {
- ctx = context_tfsdklog.SubsystemSetField(ctx, SubsystemHelperResource, KeyTestName, testName)
-
- return ctx
-}
-
-func TestStepNumberContext(ctx context_context.Context, stepNumber int) context_context.Context {
- ctx = context_tfsdklog.SubsystemSetField(ctx, SubsystemHelperResource, KeyTestStepNumber, stepNumber)
-
- return ctx
-}
-
-func TestTerraformPathContext(ctx context_context.Context, terraformPath string) context_context.Context {
- ctx = context_tfsdklog.SubsystemSetField(ctx, SubsystemHelperResource, KeyTestTerraformPath, terraformPath)
-
- return ctx
-}
-
-func TestWorkingDirectoryContext(ctx context_context.Context, workingDirectory string) context_context.Context {
- ctx = context_tfsdklog.SubsystemSetField(ctx, SubsystemHelperResource, KeyTestWorkingDirectory, workingDirectory)
-
- return ctx
-}
-
-const (
- EnvTfLogSdk = "TF_LOG_SDK"
-
- EnvTfLogSdkHelperResource = "TF_LOG_SDK_HELPER_RESOURCE"
-
- EnvTfLogSdkHelperSchema = "TF_LOG_SDK_HELPER_SCHEMA"
-)
-
-const (
- SubsystemHelperResource = "helper_resource"
-)
-
-func HelperResourceTrace(ctx helper_resource_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_resource_tfsdklog.SubsystemTrace(ctx, SubsystemHelperResource, msg, additionalFields...)
-}
-
-func HelperResourceDebug(ctx helper_resource_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_resource_tfsdklog.SubsystemDebug(ctx, SubsystemHelperResource, msg, additionalFields...)
-}
-
-func HelperResourceWarn(ctx helper_resource_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_resource_tfsdklog.SubsystemWarn(ctx, SubsystemHelperResource, msg, additionalFields...)
-}
-
-func HelperResourceError(ctx helper_resource_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_resource_tfsdklog.SubsystemError(ctx, SubsystemHelperResource, msg, additionalFields...)
-}
-
-const (
- SubsystemHelperSchema = "helper_schema"
-)
-
-func HelperSchemaDebug(ctx helper_schema_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_schema_tfsdklog.SubsystemDebug(ctx, SubsystemHelperSchema, msg, additionalFields...)
-}
-
-func HelperSchemaError(ctx helper_schema_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_schema_tfsdklog.SubsystemError(ctx, SubsystemHelperSchema, msg, additionalFields...)
-}
-
-func HelperSchemaTrace(ctx helper_schema_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_schema_tfsdklog.SubsystemTrace(ctx, SubsystemHelperSchema, msg, additionalFields...)
-}
-
-func HelperSchemaWarn(ctx helper_schema_context.Context, msg string, additionalFields ...map[string]interface{}) {
- helper_schema_tfsdklog.SubsystemWarn(ctx, SubsystemHelperSchema, msg, additionalFields...)
-}
-
-const (
- KeyAttributePath = "tf_attribute_path"
-
- KeyDataSourceType = "tf_data_source_type"
-
- KeyError = "error"
-
- KeyProviderAddress = "tf_provider_addr"
-
- KeyResourceType = "tf_resource_type"
-
- KeyTestName = "test_name"
-
- KeyTestStepNumber = "test_step_number"
-
- KeyTestTerraformConfiguration = "test_terraform_configuration"
-
- KeyTestTerraformLogLevel = "test_terraform_log_level"
-
- KeyTestTerraformLogCoreLevel = "test_terraform_log_core_level"
-
- KeyTestTerraformLogProviderLevel = "test_terraform_log_provider_level"
-
- KeyTestTerraformLogPath = "test_terraform_log_path"
-
- KeyTestTerraformPath = "test_terraform_path"
-
- KeyTestTerraformPlan = "test_terraform_plan"
-
- KeyTestWorkingDirectory = "test_working_directory"
-)
diff --git a/contrib/terraform-provider-kubeproxy/generated/manifest/generate.go b/contrib/terraform-provider-kubeproxy/generated/manifest/generate.go
deleted file mode 100644
index 0bcb5b9fb4..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/manifest/generate.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package manifest
-
-import _ "golang.org/x/tools/benchmark/parse"
-
-// required by go:generate
-import _ "golang.org/x/mod/semver"
-
-// required for copying the module
-import _ "github.com/hashicorp/terraform-provider-kubernetes/manifest/provider"
-
-// Note: we can't actually exclude this module from codeanalysis since we import it
-//go:generate go run github.com/synapsecns/sanguine/tools/bundle -prefix "" -pkg manifest -o manifest_gen.go github.com/hashicorp/terraform-provider-kubernetes/manifest/provider
diff --git a/contrib/terraform-provider-kubeproxy/generated/manifest/helpers.go b/contrib/terraform-provider-kubeproxy/generated/manifest/helpers.go
deleted file mode 100644
index fed2ed0275..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/manifest/helpers.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package manifest
-
-import "github.com/hashicorp/go-hclog"
-
-// SetLogger sets the logger on the raw provider
-func (s *RawProviderServer) SetLogger(logger hclog.Logger) {
- s.logger = logger
-}
diff --git a/contrib/terraform-provider-kubeproxy/generated/manifest/manifest_gen.go b/contrib/terraform-provider-kubeproxy/generated/manifest/manifest_gen.go
deleted file mode 100644
index 058d63dfb1..0000000000
--- a/contrib/terraform-provider-kubeproxy/generated/manifest/manifest_gen.go
+++ /dev/null
@@ -1,4072 +0,0 @@
-// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
-// nolint
-package manifest
-
-import (
- apply_context "context"
- clients_context "context"
- configure_context "context"
- datasource_context "context"
- getproviderschema_context "context"
- import_context "context"
- plan_context "context"
- plugin_context "context"
- read_context "context"
- resource_context "context"
- server_context "context"
- upgrade_state_context "context"
- validate_context "context"
- waiter_context "context"
- plugin_json "encoding/json"
- resource_json "encoding/json"
- configure_pem "encoding/pem"
- apply_errors "errors"
- configure_errors "errors"
- resource_errors "errors"
- apply_fmt "fmt"
- clients_fmt "fmt"
- configure_fmt "fmt"
- datasource_fmt "fmt"
- diagnostics_fmt "fmt"
- import_fmt "fmt"
- plan_fmt "fmt"
- plugin_fmt "fmt"
- provider_fmt "fmt"
- read_fmt "fmt"
- resource_fmt "fmt"
- upgrade_state_fmt "fmt"
- validate_fmt "fmt"
- waiter_fmt "fmt"
- waiter_big "math/big"
- clients_http "net/http"
- configure_url "net/url"
- configure_os "os"
- plugin_os "os"
- configure_filepath "path/filepath"
- waiter_regexp "regexp"
- configure_strconv "strconv"
- configure_strings "strings"
- validate_strings "strings"
- plugin_testing "testing"
- apply_time "time"
- clients_time "time"
- plugin_time "time"
- validate_time "time"
- waiter_time "time"
-
- plugin_hclog "github.com/hashicorp/go-hclog"
- server_hclog "github.com/hashicorp/go-hclog"
- waiter_hclog "github.com/hashicorp/go-hclog"
- plugin_plugin "github.com/hashicorp/go-plugin"
- waiter_hclhcl "github.com/hashicorp/hcl/v2"
- waiter_hclsyntax "github.com/hashicorp/hcl/v2/hclsyntax"
- plugin_tfexec "github.com/hashicorp/terraform-exec/tfexec"
- apply_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- clients_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- configure_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- datasource_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- diagnostics_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- getproviderschema_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- import_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- plan_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- plugin_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- provider_config_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- provider_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- read_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- server_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- upgrade_state_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- validate_tfprotov5 "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- plugin_tf5servertf5server "github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server"
- apply_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- configure_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- datasource_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- import_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- plan_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- provider_config_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- provider_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- read_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- resource_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- upgrade_state_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- validate_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- waiter_tftypes "github.com/hashicorp/terraform-plugin-go/tftypes"
- clients_logging "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
- plan_manifest "github.com/hashicorp/terraform-provider-kubernetes/manifest"
- apply_morph "github.com/hashicorp/terraform-provider-kubernetes/manifest/morph"
- datasource_morph "github.com/hashicorp/terraform-provider-kubernetes/manifest/morph"
- import_morph "github.com/hashicorp/terraform-provider-kubernetes/manifest/morph"
- plan_morph "github.com/hashicorp/terraform-provider-kubernetes/manifest/morph"
- read_morph "github.com/hashicorp/terraform-provider-kubernetes/manifest/morph"
- upgrade_state_morph "github.com/hashicorp/terraform-provider-kubernetes/manifest/morph"
- clients_openapi "github.com/hashicorp/terraform-provider-kubernetes/manifest/openapi"
- resource_openapi "github.com/hashicorp/terraform-provider-kubernetes/manifest/openapi"
- server_openapi "github.com/hashicorp/terraform-provider-kubernetes/manifest/openapi"
- apply_payload "github.com/hashicorp/terraform-provider-kubernetes/manifest/payload"
- datasource_payload "github.com/hashicorp/terraform-provider-kubernetes/manifest/payload"
- import_payload "github.com/hashicorp/terraform-provider-kubernetes/manifest/payload"
- plan_payload "github.com/hashicorp/terraform-provider-kubernetes/manifest/payload"
- read_payload "github.com/hashicorp/terraform-provider-kubernetes/manifest/payload"
- waiter_payload "github.com/hashicorp/terraform-provider-kubernetes/manifest/payload"
- import_util "github.com/hashicorp/terraform-provider-kubernetes/util"
- configure_homedir "github.com/mitchellh/go-homedir"
- waiter_cty "github.com/zclconf/go-cty/cty"
- configure_semver "golang.org/x/mod/semver"
- server_codes "google.golang.org/grpc/codes"
- server_status "google.golang.org/grpc/status"
- server_install "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/install"
- apply_errorsapierrors "k8s.io/apimachinery/pkg/api/errors"
- clients_errorsapierrors "k8s.io/apimachinery/pkg/api/errors"
- datasource_errorsapierrors "k8s.io/apimachinery/pkg/api/errors"
- read_errorsapierrors "k8s.io/apimachinery/pkg/api/errors"
- waiter_errors "k8s.io/apimachinery/pkg/api/errors"
- clients_meta "k8s.io/apimachinery/pkg/api/meta"
- datasource_meta "k8s.io/apimachinery/pkg/api/meta"
- resource_meta "k8s.io/apimachinery/pkg/api/meta"
- server_meta "k8s.io/apimachinery/pkg/api/meta"
- apply_v1metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- datasource_v1metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- diagnostics_v1metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- import_v1metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- plan_v1metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- read_v1metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- resource_v1v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- waiter_v1v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- apply_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- datasource_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- import_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- plan_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- read_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- resource_unstructured "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
- configure_runtime "k8s.io/apimachinery/pkg/runtime"
- configure_schemaapimachineryschema "k8s.io/apimachinery/pkg/runtime/schema"
- datasource_schema "k8s.io/apimachinery/pkg/runtime/schema"
- resource_schema "k8s.io/apimachinery/pkg/runtime/schema"
- configure_serializer "k8s.io/apimachinery/pkg/runtime/serializer"
- apply_types "k8s.io/apimachinery/pkg/types"
- plan_types "k8s.io/apimachinery/pkg/types"
- clients_discovery "k8s.io/client-go/discovery"
- server_discovery "k8s.io/client-go/discovery"
- clients_memory "k8s.io/client-go/discovery/cached/memory"
- apply_dynamic "k8s.io/client-go/dynamic"
- clients_dynamic "k8s.io/client-go/dynamic"
- plan_dynamic "k8s.io/client-go/dynamic"
- server_dynamic "k8s.io/client-go/dynamic"
- waiter_dynamic "k8s.io/client-go/dynamic"
- configure_scheme "k8s.io/client-go/kubernetes/scheme"
- server_scheme "k8s.io/client-go/kubernetes/scheme"
- clients_rest "k8s.io/client-go/rest"
- configure_rest "k8s.io/client-go/rest"
- server_rest "k8s.io/client-go/rest"
- clients_restmapper "k8s.io/client-go/restmapper"
- configure_clientcmd "k8s.io/client-go/tools/clientcmd"
- configure_apiclientcmdapi "k8s.io/client-go/tools/clientcmd/api"
- waiter_polymorphichelpers "k8s.io/kubectl/pkg/polymorphichelpers"
-)
-
-var defaultCreateTimeout = "10m"
-
-var defaultUpdateTimeout = "10m"
-
-var defaultDeleteTimeout = "10m"
-
-func (s *RawProviderServer) ApplyResourceChange(ctx apply_context.Context, req *apply_tfprotov5.ApplyResourceChangeRequest) (*apply_tfprotov5.ApplyResourceChangeResponse, error) {
- resp := &apply_tfprotov5.ApplyResourceChangeResponse{}
-
- execDiag := s.canExecute()
- if len(execDiag) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, execDiag...)
- return resp, nil
- }
-
- rt, err := GetResourceType(req.TypeName)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine planned resource type",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- applyPlannedState, err := req.PlannedState.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal planned resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[ApplyResourceChange][PlannedState] %#v", applyPlannedState)
-
- applyPriorState, err := req.PriorState.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal prior resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[ApplyResourceChange]", "[PriorState]", dump(applyPriorState))
-
- config, err := req.Config.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal manifest configuration",
- Detail: err.Error(),
- })
- return resp, nil
- }
- confVals := make(map[string]apply_tftypes.Value)
- err = config.As(&confVals)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract attributes from resource configuration",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- var plannedStateVal map[string]apply_tftypes.Value = make(map[string]apply_tftypes.Value)
- err = applyPlannedState.As(&plannedStateVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract planned resource state values",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- computedFields := make(map[string]*apply_tftypes.AttributePath)
- var atp *apply_tftypes.AttributePath
- cfVal, ok := plannedStateVal["computed_fields"]
- if ok && !cfVal.IsNull() && cfVal.IsKnown() {
- var cf []apply_tftypes.Value
- cfVal.As(&cf)
- for _, v := range cf {
- var vs string
- err := v.As(&vs)
- if err != nil {
- s.logger.Error("[computed_fields] cannot extract element from list")
- continue
- }
- atp, err := FieldPathToTftypesPath(vs)
- if err != nil {
- s.logger.Error("[Configure]", "[computed_fields] cannot parse field path element", err)
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "[computed_fields] cannot parse filed path element: " + vs,
- Detail: err.Error(),
- })
- continue
- }
- computedFields[atp.String()] = atp
- }
- } else {
-
- atp = apply_tftypes.NewAttributePath().WithAttributeName("metadata").WithAttributeName("annotations")
- computedFields[atp.String()] = atp
-
- atp = apply_tftypes.NewAttributePath().WithAttributeName("metadata").WithAttributeName("labels")
- computedFields[atp.String()] = atp
- }
-
- c, err := s.getDynamicClient()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to retrieve Kubernetes dynamic client during apply",
- Detail: err.Error(),
- })
- return resp, nil
- }
- m, err := s.getRestMapper()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to retrieve Kubernetes RESTMapper client during apply",
- Detail: err.Error(),
- })
- return resp, nil
- }
- var rs apply_dynamic.ResourceInterface
-
- switch {
- case applyPriorState.IsNull() || (!applyPlannedState.IsNull() && !applyPriorState.IsNull()):
-
- obj, ok := plannedStateVal["object"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to find object value in planned resource state",
- })
- return resp, nil
- }
-
- gvk, err := GVKFromTftypesObject(&obj, m)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine the type of the resource",
- Detail: apply_fmt.Sprintf(`This can happen when the "apiVersion" or "kind" fields are not present in the manifest, or when the corresponding "kind" or "apiVersion" could not be found on the Kubernetes cluster.\nError: %s`, err),
- })
- return resp, nil
- }
-
- tsch, th, err := s.TFTypeFromOpenAPI(ctx, gvk, false)
- if err != nil {
- return resp, apply_fmt.Errorf("failed to determine resource type ID: %s", err)
- }
-
- obj, err = apply_tftypes.Transform(obj, func(ap *apply_tftypes.AttributePath, v apply_tftypes.Value) (apply_tftypes.Value, error) {
- _, isComputed := computedFields[ap.String()]
- if !isComputed {
- return v, nil
- }
- if v.IsKnown() {
- return v, nil
- }
- ppMan, restPath, err := apply_tftypes.WalkAttributePath(plannedStateVal["manifest"], ap)
- if err != nil {
- if len(restPath.Steps()) > 0 {
-
- return v, nil
- }
- return v, ap.NewError(err)
- }
- nv, d := apply_morph.ValueToType(ppMan.(apply_tftypes.Value), v.Type(), apply_tftypes.NewAttributePath())
- if len(d) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Manifest configuration is incompatible with resource schema",
- Detail: "Detailed descriptions of errors will follow below.",
- })
- resp.Diagnostics = append(resp.Diagnostics, d...)
- return v, nil
- }
- return nv, nil
- })
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to backfill computed values in proposed value",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- nullObj := apply_morph.UnknownToNull(obj)
- s.logger.Trace("[ApplyResourceChange][Apply]", "[UnknownToNull]", dump(nullObj))
-
- minObj, err := apply_tftypes.Transform(nullObj, func(ap *apply_tftypes.AttributePath, v apply_tftypes.Value) (apply_tftypes.Value, error) {
- if v.IsNull() {
- return apply_tftypes.NewValue(v.Type(), nil), nil
- }
- switch {
- case v.Type().Is(apply_tftypes.Object{}) || v.Type().Is(apply_tftypes.Map{}):
- atts := make(map[string]apply_tftypes.Value)
- err := v.As(&atts)
- if err != nil {
- return v, err
- }
- var isEmpty bool = true
- for _, atv := range atts {
- if !atv.IsNull() {
- isEmpty = false
- break
- }
- }
-
- _, restPath, err := apply_tftypes.WalkAttributePath(confVals["manifest"], ap)
- if (err == nil && len(restPath.Steps()) == 0) || !isEmpty {
-
- return apply_tftypes.NewValue(v.Type(), atts), nil
- }
- return apply_tftypes.NewValue(v.Type(), nil), nil
- case v.Type().Is(apply_tftypes.List{}) || v.Type().Is(apply_tftypes.Set{}) || v.Type().Is(apply_tftypes.Tuple{}):
- atts := make([]apply_tftypes.Value, 0)
- err := v.As(&atts)
- if err != nil {
- return v, err
- }
- return apply_tftypes.NewValue(v.Type(), atts), nil
- default:
- return v, nil
- }
- })
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Detail: err.Error(),
- Summary: "Failed to sanitize empty block ahead of payload preparation",
- })
- return resp, nil
- }
-
- pu, err := apply_payload.FromTFValue(minObj, th, apply_tftypes.NewAttributePath())
- if err != nil {
- return resp, err
- }
- s.logger.Trace("[ApplyResourceChange][Apply]", "[payload.FromTFValue]", dump(pu))
-
- rqObj := mapRemoveNulls(pu.(map[string]interface{}))
-
- uo := apply_unstructured.Unstructured{}
- uo.SetUnstructuredContent(rqObj)
- rnamespace := uo.GetNamespace()
- rname := uo.GetName()
- rnn := apply_types.NamespacedName{Namespace: rnamespace, Name: rname}.String()
-
- gvr, err := GVRFromUnstructured(&uo, m)
- if err != nil {
- return resp, apply_fmt.Errorf("failed to determine resource GVR: %s", err)
- }
-
- ns, err := IsResourceNamespaced(gvk, m)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Detail: err.Error(),
- Summary: apply_fmt.Sprintf("Failed to discover scope of resource '%s'", rnn),
- })
- return resp, nil
- }
-
- if ns {
- rs = c.Resource(gvr).Namespace(rnamespace)
- } else {
- rs = c.Resource(gvr)
- }
-
- if applyPriorState.IsNull() {
- _, err := rs.Get(ctx, rname, apply_v1metav1.GetOptions{})
- if err == nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Cannot create resource that already exists",
- Detail: apply_fmt.Sprintf("resource %q already exists", rnn),
- })
- return resp, nil
- } else if !apply_errorsapierrors.IsNotFound(err) {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: apply_fmt.Sprintf("Failed to determine if resource %q exists", rnn),
- Detail: err.Error(),
- })
- return resp, nil
- }
- }
-
- jsonManifest, err := uo.MarshalJSON()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Detail: err.Error(),
- Summary: apply_fmt.Sprintf("Failed to marshall resource '%s' to JSON", rnn),
- })
- return resp, nil
- }
-
- fieldManagerName, forceConflicts, err := s.getFieldManagerConfig(plannedStateVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Could not extract field_manager config",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- timeouts := s.getTimeouts(plannedStateVal)
- var timeout apply_time.Duration
- if applyPriorState.IsNull() {
- timeout, _ = apply_time.ParseDuration(timeouts["create"])
- } else {
- timeout, _ = apply_time.ParseDuration(timeouts["update"])
- }
- deadline := apply_time.Now().Add(timeout)
- ctxDeadline, cancel := apply_context.WithDeadline(ctx, deadline)
- defer cancel()
-
- s.logger.Trace("[ApplyResourceChange][API Payload]: %s", jsonManifest)
- result, err := rs.Patch(ctxDeadline, rname, apply_types.ApplyPatchType, jsonManifest,
- apply_v1metav1.PatchOptions{
- FieldManager: fieldManagerName,
- Force: &forceConflicts,
- },
- )
- if err != nil {
- s.logger.Error("[ApplyResourceChange][Apply]", "API error", dump(err), "API response", dump(result))
- if apply_errorsapierrors.IsConflict(err) {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: apply_fmt.Sprintf(`There was a field manager conflict when trying to apply the manifest for %q`, rnn),
- Detail: apply_fmt.Sprintf(
- "The API returned the following conflict: %q\n\n"+
- "You can override this conflict by setting \"force_conflicts\" to true in the \"field_manager\" block.",
- err.Error(),
- ),
- },
- )
- } else if status := apply_errorsapierrors.APIStatus(nil); apply_errors.As(err, &status) {
- resp.Diagnostics = append(resp.Diagnostics, APIStatusErrorToDiagnostics(status.Status())...)
- } else {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Detail: err.Error(),
- Summary: apply_fmt.Sprintf(`PATCH for resource "%s" failed to apply`, rnn),
- })
- }
- return resp, nil
- }
-
- newResObject, err := apply_payload.ToTFValue(RemoveServerSideFields(result.Object), tsch, th, apply_tftypes.NewAttributePath())
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Conversion from Unstructured to tftypes.Value failed",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[ApplyResourceChange][Apply]", "[payload.ToTFValue]", dump(newResObject))
-
- wt, _, err := s.TFTypeFromOpenAPI(ctx, gvk, true)
- if err != nil {
- return resp, apply_fmt.Errorf("failed to determine resource type ID: %s", err)
- }
-
- var waitConfig apply_tftypes.Value
- if w, ok := plannedStateVal["wait"]; ok && !w.IsNull() {
- s.logger.Trace("[ApplyResourceChange][Wait] Using waiter config from `wait` block")
- var waitBlocks []apply_tftypes.Value
- w.As(&waitBlocks)
- if len(waitBlocks) > 0 {
- waitConfig = waitBlocks[0]
- }
- }
- if wf, ok := plannedStateVal["wait_for"]; ok && !wf.IsNull() {
- s.logger.Trace("[ApplyResourceChange][Wait] Using waiter config from deprecated `wait_for` attribute")
- waitConfig = wf
- }
- if !waitConfig.IsNull() {
- err = s.waitForCompletion(ctxDeadline, waitConfig, rs, rname, wt, th)
- if err != nil {
- if err == apply_context.DeadlineExceeded {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Operation timed out",
- Detail: "Terraform timed out waiting on the operation to complete",
- })
- } else {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Error waiting for operation to complete",
- Detail: err.Error(),
- })
- }
- return resp, nil
- }
- }
-
- compObj, err := apply_morph.DeepUnknown(tsch, newResObject, apply_tftypes.NewAttributePath())
- if err != nil {
- return resp, err
- }
- plannedStateVal["object"] = apply_morph.UnknownToNull(compObj)
-
- newStateVal := apply_tftypes.NewValue(applyPlannedState.Type(), plannedStateVal)
- s.logger.Trace("[ApplyResourceChange][Apply]", "new state value", dump(newStateVal))
-
- newResState, err := apply_tfprotov5.NewDynamicValue(newStateVal.Type(), newStateVal)
- if err != nil {
- return resp, err
- }
- resp.NewState = &newResState
- case applyPlannedState.IsNull():
-
- priorStateVal := make(map[string]apply_tftypes.Value)
- err = applyPriorState.As(&priorStateVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract prior resource state values",
- Detail: err.Error(),
- })
- return resp, nil
- }
- pco, ok := priorStateVal["object"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to find object value in prior resource state",
- })
- return resp, nil
- }
-
- pu, err := apply_payload.FromTFValue(pco, nil, apply_tftypes.NewAttributePath())
- if err != nil {
- return resp, err
- }
-
- uo := apply_unstructured.Unstructured{Object: pu.(map[string]interface{})}
- gvr, err := GVRFromUnstructured(&uo, m)
- if err != nil {
- return resp, err
- }
-
- gvk, err := GVKFromTftypesObject(&pco, m)
- if err != nil {
- return resp, apply_fmt.Errorf("failed to determine resource GVK: %s", err)
- }
-
- ns, err := IsResourceNamespaced(gvk, m)
- if err != nil {
- return resp, err
- }
- rnamespace := uo.GetNamespace()
- rname := uo.GetName()
- if ns {
- rs = c.Resource(gvr).Namespace(rnamespace)
- } else {
- rs = c.Resource(gvr)
- }
-
- timeouts := s.getTimeouts(priorStateVal)
- timeout, _ := apply_time.ParseDuration(timeouts["delete"])
- deadline := apply_time.Now().Add(timeout)
- ctxDeadline, cancel := apply_context.WithDeadline(ctx, deadline)
- defer cancel()
-
- err = rs.Delete(ctxDeadline, rname, apply_v1metav1.DeleteOptions{})
- if err != nil {
- rn := apply_types.NamespacedName{Namespace: rnamespace, Name: rname}.String()
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: apply_fmt.Sprintf("Error deleting resource %s: %s", rn, err),
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- for {
- if apply_time.Now().After(deadline) {
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: apply_fmt.Sprintf("Timed out when waiting for resource %q to be deleted", rname),
- Detail: "Deletion timed out. This can happen when there is a finalizer on a resource. You may need to delete this resource manually with kubectl.",
- })
- return resp, nil
- }
- _, err := rs.Get(ctxDeadline, rname, apply_v1metav1.GetOptions{})
- if err != nil {
- if apply_errorsapierrors.IsNotFound(err) {
- s.logger.Trace("[ApplyResourceChange][Delete]", "Resource is deleted")
- break
- }
- resp.Diagnostics = append(resp.Diagnostics,
- &apply_tfprotov5.Diagnostic{
- Severity: apply_tfprotov5.DiagnosticSeverityError,
- Summary: "Error waiting for deletion.",
- Detail: apply_fmt.Sprintf("Error when waiting for resource %q to be deleted: %v", rname, err),
- })
- return resp, nil
- }
- apply_time.Sleep(1 * apply_time.Second)
- }
-
- resp.NewState = req.PlannedState
- }
-
- return resp, nil
-}
-
-func (s *RawProviderServer) getTimeouts(v map[string]apply_tftypes.Value) map[string]string {
- timeouts := map[string]string{
- "create": defaultCreateTimeout,
- "update": defaultUpdateTimeout,
- "delete": defaultDeleteTimeout,
- }
- if !v["timeouts"].IsNull() && v["timeouts"].IsKnown() {
- var timeoutsBlock []apply_tftypes.Value
- v["timeouts"].As(&timeoutsBlock)
- if len(timeoutsBlock) > 0 {
- var t map[string]apply_tftypes.Value
- timeoutsBlock[0].As(&t)
- var s string
- for _, k := range []string{"create", "update", "delete"} {
- if vv, ok := t[k]; ok && !vv.IsNull() {
- vv.As(&s)
- if s != "" {
- timeouts[k] = s
- }
- }
- }
- }
- }
- return timeouts
-}
-
-const (
- OAPIFoundry string = "OPENAPIFOUNDRY"
-)
-
-func (ps *RawProviderServer) getDynamicClient() (clients_dynamic.Interface, error) {
- if ps.dynamicClient != nil {
- return ps.dynamicClient, nil
- }
- if ps.clientConfig == nil {
- return nil, clients_fmt.Errorf("cannot create dynamic client: no client config")
- }
- dynClient, err := clients_dynamic.NewForConfig(ps.clientConfig)
- if err != nil {
- return nil, err
- }
- ps.dynamicClient = dynClient
- return dynClient, nil
-}
-
-func (ps *RawProviderServer) getDiscoveryClient() (clients_discovery.DiscoveryInterface, error) {
- if ps.discoveryClient != nil {
- return ps.discoveryClient, nil
- }
- if ps.clientConfig == nil {
- return nil, clients_fmt.Errorf("cannot create discovery client: no client config")
- }
- discoClient, err := clients_discovery.NewDiscoveryClientForConfig(ps.clientConfig)
- if err != nil {
- return nil, err
- }
- ps.discoveryClient = discoClient
- return discoClient, nil
-}
-
-func (ps *RawProviderServer) getRestMapper() (clients_meta.RESTMapper, error) {
- if ps.restMapper != nil {
- return ps.restMapper, nil
- }
- dc, err := ps.getDiscoveryClient()
- if err != nil {
- return nil, err
- }
-
- cache := clients_memory.NewMemCacheClient(dc)
- ps.restMapper = clients_restmapper.NewDeferredDiscoveryRESTMapper(cache)
- return ps.restMapper, nil
-}
-
-func (ps *RawProviderServer) getRestClient() (clients_rest.Interface, error) {
- if ps.restClient != nil {
- return ps.restClient, nil
- }
- if ps.clientConfig == nil {
- return nil, clients_fmt.Errorf("cannot create REST client: no client config")
- }
- restClient, err := clients_rest.UnversionedRESTClientFor(ps.clientConfig)
- if err != nil {
- return nil, err
- }
- ps.restClient = restClient
- return restClient, nil
-}
-
-func (ps *RawProviderServer) getOAPIv2Foundry() (clients_openapi.Foundry, error) {
- if ps.OAPIFoundry != nil {
- return ps.OAPIFoundry, nil
- }
-
- rc, err := ps.getRestClient()
- if err != nil {
- return nil, clients_fmt.Errorf("failed get OpenAPI spec: %s", err)
- }
-
- rq := rc.Verb("GET").Timeout(30*clients_time.Second).AbsPath("openapi", "v2")
- rs, err := rq.DoRaw(clients_context.TODO())
- if err != nil {
- return nil, clients_fmt.Errorf("failed get OpenAPI spec: %s", err)
- }
-
- oapif, err := clients_openapi.NewFoundryFromSpecV2(rs)
- if err != nil {
- return nil, clients_fmt.Errorf("failed construct OpenAPI foundry: %s", err)
- }
-
- ps.OAPIFoundry = oapif
-
- return oapif, nil
-}
-
-func loggingTransport(rt clients_http.RoundTripper) clients_http.RoundTripper {
- return &loggingRountTripper{
- ot: rt,
- lt: clients_logging.NewTransport("Kubernetes API", rt),
- }
-}
-
-type loggingRountTripper struct {
- ot clients_http.RoundTripper
- lt clients_http.RoundTripper
-}
-
-func (t *loggingRountTripper) RoundTrip(req *clients_http.Request) (*clients_http.Response, error) {
- if req.URL.Path == "/openapi/v2" {
-
- return t.ot.RoundTrip(req)
- }
- return t.lt.RoundTrip(req)
-}
-
-func (ps *RawProviderServer) checkValidCredentials(ctx clients_context.Context) (diags []*clients_tfprotov5.Diagnostic) {
- rc, err := ps.getRestClient()
- if err != nil {
- diags = append(diags, &clients_tfprotov5.Diagnostic{
- Severity: clients_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to construct REST client",
- Detail: err.Error(),
- })
- return
- }
- vpath := []string{"/apis"}
- rs := rc.Get().AbsPath(vpath...).Do(ctx)
- if rs.Error() != nil {
- switch {
- case clients_errorsapierrors.IsUnauthorized(rs.Error()):
- diags = append(diags, &clients_tfprotov5.Diagnostic{
- Severity: clients_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid credentials",
- Detail: clients_fmt.Sprintf("The credentials configured in the provider block are not accepted by the API server. Error: %s\n\nSet TF_LOG=debug and look for '[InvalidClientConfiguration]' in the log to see actual configuration.", rs.Error().Error()),
- })
- default:
- diags = append(diags, &clients_tfprotov5.Diagnostic{
- Severity: clients_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid configuration for API client",
- Detail: rs.Error().Error(),
- })
- }
- ps.logger.Debug("[InvalidClientConfiguration]", "Config", dump(ps.clientConfig))
- }
- return
-}
-
-const minTFVersion string = "v0.14.8"
-
-func (s *RawProviderServer) ConfigureProvider(ctx configure_context.Context, req *configure_tfprotov5.ConfigureProviderRequest) (*configure_tfprotov5.ConfigureProviderResponse, error) {
- response := &configure_tfprotov5.ConfigureProviderResponse{}
- diags := []*configure_tfprotov5.Diagnostic{}
- var providerConfig map[string]configure_tftypes.Value
- var err error
-
- s.hostTFVersion = "v" + req.TerraformVersion
-
- cfgType := GetObjectTypeFromSchema(GetProviderConfigSchema())
- cfgVal, err := req.Config.Unmarshal(cfgType)
- if err != nil {
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to decode ConfigureProvider request parameter",
- Detail: err.Error(),
- })
- return response, nil
- }
- err = cfgVal.As(&providerConfig)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'config_path' value",
- Detail: err.Error(),
- })
- return response, nil
- }
-
- providerEnabled := true
- if !providerConfig["experiments"].IsNull() && providerConfig["experiments"].IsKnown() {
- var experimentsBlock []configure_tftypes.Value
- err = providerConfig["experiments"].As(&experimentsBlock)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'experiments' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- if len(experimentsBlock) > 0 {
- var experimentsObj map[string]configure_tftypes.Value
- err := experimentsBlock[0].As(&experimentsObj)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'experiments' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- if !experimentsObj["manifest_resource"].IsNull() && experimentsObj["manifest_resource"].IsKnown() {
- err = experimentsObj["manifest_resource"].As(&providerEnabled)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'manifest_resource' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- }
- }
- }
- if v := configure_os.Getenv("TF_X_KUBERNETES_MANIFEST_RESOURCE"); v != "" {
- providerEnabled, err = configure_strconv.ParseBool(v)
- if err != nil {
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to parse boolean from `TF_X_KUBERNETES_MANIFEST_RESOURCE` env var",
- Detail: err.Error(),
- })
- return response, nil
- }
- }
- }
- s.providerEnabled = providerEnabled
-
- if !providerEnabled {
-
- return response, nil
- }
-
- overrides := &configure_clientcmd.ConfigOverrides{}
- loader := &configure_clientcmd.ClientConfigLoadingRules{}
-
- var configPath string
- if !providerConfig["config_path"].IsNull() && providerConfig["config_path"].IsKnown() {
- err = providerConfig["config_path"].As(&configPath)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'config_path' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- }
-
- if configPathEnv, ok := configure_os.LookupEnv("KUBE_CONFIG_PATH"); ok && configPathEnv != "" {
- configPath = configPathEnv
- }
- if len(configPath) > 0 {
- configPathAbs, err := configure_homedir.Expand(configPath)
- if err == nil {
- _, err = configure_os.Stat(configPathAbs)
- }
- if err != nil {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: configure_fmt.Sprintf("'config_path' refers to an invalid path: %q: %v", configPathAbs, err),
- })
- }
- loader.ExplicitPath = configPathAbs
- }
-
- var precedence []string
- if !providerConfig["config_paths"].IsNull() && providerConfig["config_paths"].IsKnown() {
- var configPaths []configure_tftypes.Value
- err = providerConfig["config_paths"].As(&configPaths)
- if err != nil {
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'config_paths' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- for _, p := range configPaths {
- var pp string
- p.As(&pp)
- precedence = append(precedence, pp)
- }
- }
-
- if configPathsEnv, ok := configure_os.LookupEnv("KUBE_CONFIG_PATHS"); ok && configPathsEnv != "" {
- precedence = configure_filepath.SplitList(configPathsEnv)
- }
- if len(precedence) > 0 {
- for i, p := range precedence {
- absPath, err := configure_homedir.Expand(p)
- if err == nil {
- _, err = configure_os.Stat(absPath)
- }
- if err != nil {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: configure_fmt.Sprintf("'config_paths' refers to an invalid path: %q: %v", absPath, err),
- })
- }
- precedence[i] = absPath
- }
- loader.Precedence = precedence
- }
-
- var clientCertificate string
- if !providerConfig["client_certificate"].IsNull() && providerConfig["client_certificate"].IsKnown() {
- err = providerConfig["client_certificate"].As(&clientCertificate)
- if err != nil {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: "'client_certificate' type cannot be asserted: " + err.Error(),
- })
- return response, nil
- }
- }
- if clientCrtEnv, ok := configure_os.LookupEnv("KUBE_CLIENT_CERT_DATA"); ok && clientCrtEnv != "" {
- clientCertificate = clientCrtEnv
- }
- if len(clientCertificate) > 0 {
- ccPEM, _ := configure_pem.Decode([]byte(clientCertificate))
- if ccPEM == nil || ccPEM.Type != "CERTIFICATE" {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: "'client_certificate' is not a valid PEM encoded certificate",
- })
- }
- overrides.AuthInfo.ClientCertificateData = []byte(clientCertificate)
- }
-
- var clusterCaCertificate string
- if !providerConfig["cluster_ca_certificate"].IsNull() && providerConfig["cluster_ca_certificate"].IsKnown() {
- err = providerConfig["cluster_ca_certificate"].As(&clusterCaCertificate)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'cluster_ca_certificate' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- }
- if clusterCAEnv, ok := configure_os.LookupEnv("KUBE_CLUSTER_CA_CERT_DATA"); ok && clusterCAEnv != "" {
- clusterCaCertificate = clusterCAEnv
- }
- if len(clusterCaCertificate) > 0 {
- ca, _ := configure_pem.Decode([]byte(clusterCaCertificate))
- if ca == nil || ca.Type != "CERTIFICATE" {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: "'cluster_ca_certificate' is not a valid PEM encoded certificate",
- })
- }
- overrides.ClusterInfo.CertificateAuthorityData = []byte(clusterCaCertificate)
- }
-
- var insecure bool
- if !providerConfig["insecure"].IsNull() && providerConfig["insecure"].IsKnown() {
- err = providerConfig["insecure"].As(&insecure)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'insecure' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- }
- if insecureEnv, ok := configure_os.LookupEnv("KUBE_INSECURE"); ok && insecureEnv != "" {
- iv, err := configure_strconv.ParseBool(insecureEnv)
- if err != nil {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid provider configuration",
- Detail: "Environment variable KUBE_INSECURE contains invalid value: " + err.Error(),
- })
- } else {
- insecure = iv
- }
- }
- overrides.ClusterInfo.InsecureSkipTLSVerify = insecure
-
- hasCA := len(overrides.ClusterInfo.CertificateAuthorityData) != 0
- hasCert := len(overrides.AuthInfo.ClientCertificateData) != 0
- defaultTLS := hasCA || hasCert || overrides.ClusterInfo.InsecureSkipTLSVerify
-
- var host string
- if !providerConfig["host"].IsNull() && providerConfig["host"].IsKnown() {
- err = providerConfig["host"].As(&host)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to extract 'host' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- }
-
- if hostEnv, ok := configure_os.LookupEnv("KUBE_HOST"); ok && hostEnv != "" {
- host = hostEnv
- }
- if len(host) > 0 {
- _, err = configure_url.ParseRequestURI(host)
- if err != nil {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: "'host' is not a valid URL",
- })
- }
- hostURL, _, err := configure_rest.DefaultServerURL(host, "", configure_schemaapimachineryschema.GroupVersion{}, defaultTLS)
- if err != nil {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: "Invalid value for 'host': " + err.Error(),
- })
- return response, nil
- }
-
- overrides.ClusterInfo.Server = hostURL.String()
- }
-
- var clientKey string
- if !providerConfig["client_key"].IsNull() && providerConfig["client_key"].IsKnown() {
- err = providerConfig["client_key"].As(&clientKey)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: ",
- Detail: "Failed to extract 'client_key' value" + err.Error(),
- })
- return response, nil
- }
- }
-
- if clientKeyEnv, ok := configure_os.LookupEnv("KUBE_CLIENT_KEY_DATA"); ok && clientKeyEnv != "" {
- clientKey = clientKeyEnv
- }
- if len(clientKey) > 0 {
- ck, _ := configure_pem.Decode([]byte(clientKey))
- if ck == nil || !configure_strings.Contains(ck.Type, "PRIVATE KEY") {
- diags = append(diags, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityInvalid,
- Summary: "Invalid attribute in provider configuration",
- Detail: "'client_key' is not a valid PEM encoded private key",
- })
- }
- overrides.AuthInfo.ClientKeyData = []byte(clientKey)
- }
-
- if len(diags) > 0 {
- response.Diagnostics = diags
- return response, nil
- }
-
- var cfgContext string
- if !providerConfig["config_context"].IsNull() && providerConfig["config_context"].IsKnown() {
- err = providerConfig["config_context"].As(&cfgContext)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'config_context' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- overrides.CurrentContext = cfgContext
- }
- if cfgContext, ok := configure_os.LookupEnv("KUBE_CTX"); ok && cfgContext != "" {
- overrides.CurrentContext = cfgContext
- }
-
- overrides.Context = configure_apiclientcmdapi.Context{}
-
- var cfgCtxCluster string
- if !providerConfig["config_context_cluster"].IsNull() && providerConfig["config_context_cluster"].IsKnown() {
- err = providerConfig["config_context_cluster"].As(&cfgCtxCluster)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'config_context_cluster' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- overrides.Context.Cluster = cfgCtxCluster
- }
- if cfgCtxCluster, ok := configure_os.LookupEnv("KUBE_CTX_CLUSTER"); ok && cfgCtxCluster != "" {
- overrides.Context.Cluster = cfgCtxCluster
- }
-
- var cfgContextAuthInfo *string
- if !providerConfig["config_context_user"].IsNull() && providerConfig["config_context_user"].IsKnown() {
- err = providerConfig["config_context_user"].As(&cfgContextAuthInfo)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'config_context_user' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- if cfgContextAuthInfo != nil {
- overrides.Context.AuthInfo = *cfgContextAuthInfo
- }
- }
- if cfgContextAuthInfoEnv, ok := configure_os.LookupEnv("KUBE_CTX_AUTH_INFO"); ok && cfgContextAuthInfoEnv != "" {
- overrides.Context.AuthInfo = cfgContextAuthInfoEnv
- }
-
- var username string
- if !providerConfig["username"].IsNull() && providerConfig["username"].IsKnown() {
- err = providerConfig["username"].As(&username)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'username' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- overrides.AuthInfo.Username = username
- }
- if username, ok := configure_os.LookupEnv("KUBE_USERNAME"); ok && username != "" {
- overrides.AuthInfo.Username = username
- }
-
- var password string
- if !providerConfig["password"].IsNull() && providerConfig["password"].IsKnown() {
- err = providerConfig["password"].As(&password)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'password' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- overrides.AuthInfo.Password = password
- }
- if password, ok := configure_os.LookupEnv("KUBE_PASSWORD"); ok && password != "" {
- overrides.AuthInfo.Password = password
- }
-
- var token string
- if !providerConfig["token"].IsNull() && providerConfig["token"].IsKnown() {
- err = providerConfig["token"].As(&token)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'token' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- overrides.AuthInfo.Token = token
- }
- if token, ok := configure_os.LookupEnv("KUBE_TOKEN"); ok && token != "" {
- overrides.AuthInfo.Token = token
- }
-
- var proxyURL string
- if !providerConfig["proxy_url"].IsNull() && providerConfig["proxy_url"].IsKnown() {
- err = providerConfig["proxy_url"].As(&proxyURL)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'proxy_url' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- overrides.ClusterDefaults.ProxyURL = proxyURL
- }
- if proxyUrl, ok := configure_os.LookupEnv("KUBE_PROXY_URL"); ok && proxyUrl != "" {
- overrides.ClusterDefaults.ProxyURL = proxyURL
- }
-
- if !providerConfig["exec"].IsNull() && providerConfig["exec"].IsKnown() {
- var execBlock []configure_tftypes.Value
- err = providerConfig["exec"].As(&execBlock)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'exec' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg := configure_apiclientcmdapi.ExecConfig{}
- execCfg.InteractiveMode = configure_apiclientcmdapi.IfAvailableExecInteractiveMode
- if len(execBlock) > 0 {
- var execObj map[string]configure_tftypes.Value
- err := execBlock[0].As(&execObj)
- if err != nil {
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: `Provider configuration: failed to assert type of "exec" block`,
- Detail: err.Error(),
- })
- return response, nil
- }
- if !execObj["api_version"].IsNull() && execObj["api_version"].IsKnown() {
- var apiv string
- err = execObj["api_version"].As(&apiv)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'api_version' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg.APIVersion = apiv
- }
- if !execObj["command"].IsNull() && execObj["command"].IsKnown() {
- var cmd string
- err = execObj["command"].As(&cmd)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'command' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg.Command = cmd
- }
- if !execObj["args"].IsNull() && execObj["args"].IsFullyKnown() {
- var xcmdArgs []configure_tftypes.Value
- err = execObj["args"].As(&xcmdArgs)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of 'args' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg.Args = make([]string, 0, len(xcmdArgs))
- for _, arg := range xcmdArgs {
- var v string
- err := arg.As(&v)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of element in 'args' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg.Args = append(execCfg.Args, v)
- }
- }
- if !execObj["env"].IsNull() && execObj["env"].IsFullyKnown() {
- var xcmdEnvs map[string]configure_tftypes.Value
- err = execObj["env"].As(&xcmdEnvs)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of element in 'env' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg.Env = make([]configure_apiclientcmdapi.ExecEnvVar, 0, len(xcmdEnvs))
- for k, v := range xcmdEnvs {
- var vs string
- err = v.As(&vs)
- if err != nil {
-
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: failed to assert type of element in 'env' value",
- Detail: err.Error(),
- })
- return response, nil
- }
- execCfg.Env = append(execCfg.Env, configure_apiclientcmdapi.ExecEnvVar{
- Name: k,
- Value: vs,
- })
- }
- }
- overrides.AuthInfo.Exec = &execCfg
- }
- }
-
- cc := configure_clientcmd.NewNonInteractiveDeferredLoadingClientConfig(loader, overrides)
- clientConfig, err := cc.ClientConfig()
- if err != nil {
- s.logger.Error("[Configure]", "Failed to load config:", dump(cc))
- if configure_errors.Is(err, configure_clientcmd.ErrEmptyConfig) {
-
- return response, nil
- }
- response.Diagnostics = append(response.Diagnostics, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Provider configuration: cannot load Kubernetes client config",
- Detail: err.Error(),
- })
- return response, nil
- }
-
- if s.logger.IsTrace() {
- clientConfig.WrapTransport = loggingTransport
- }
-
- codec := configure_runtime.NoopEncoder{Decoder: configure_scheme.Codecs.UniversalDecoder()}
- clientConfig.NegotiatedSerializer = configure_serializer.NegotiatedSerializerWrapper(configure_runtime.SerializerInfo{Serializer: codec})
-
- s.logger.Trace("[Configure]", "[ClientConfig]", dump(*clientConfig))
- s.clientConfig = clientConfig
-
- return response, nil
-}
-
-func (s *RawProviderServer) canExecute() (resp []*configure_tfprotov5.Diagnostic) {
- if !s.providerEnabled {
- resp = append(resp, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Experimental feature not enabled.",
- Detail: "The `kubernetes_manifest` resource is an experimental feature and must be explicitly enabled in the provider configuration block.",
- })
- }
- if configure_semver.IsValid(s.hostTFVersion) && configure_semver.Compare(s.hostTFVersion, minTFVersion) < 0 {
- resp = append(resp, &configure_tfprotov5.Diagnostic{
- Severity: configure_tfprotov5.DiagnosticSeverityError,
- Summary: "Incompatible terraform version",
- Detail: configure_fmt.Sprintf("The `kubernetes_manifest` resource requires Terraform %s or above", minTFVersion),
- })
- }
- return
-}
-
-func (s *RawProviderServer) ReadDataSource(ctx datasource_context.Context, req *datasource_tfprotov5.ReadDataSourceRequest) (*datasource_tfprotov5.ReadDataSourceResponse, error) {
- s.logger.Trace("[ReadDataSource][Request]\n%s\n", dump(*req))
-
- resp := &datasource_tfprotov5.ReadDataSourceResponse{}
-
- execDiag := s.canExecute()
- if len(execDiag) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, execDiag...)
- return resp, nil
- }
-
- rt, err := GetDataSourceType(req.TypeName)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine data source type",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- config, err := req.Config.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal data source configuration",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- var dsConfig map[string]datasource_tftypes.Value
- err = config.As(&dsConfig)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract attributes from data source configuration",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- rm, err := s.getRestMapper()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to get RESTMapper client",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- client, err := s.getDynamicClient()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "failed to get Dynamic client",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- var apiVersion, kind string
- dsConfig["api_version"].As(&apiVersion)
- dsConfig["kind"].As(&kind)
-
- gvr, err := getGVR(apiVersion, kind, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine resource GroupVersion",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- gvk := gvr.GroupVersion().WithKind(kind)
- ns, err := IsResourceNamespaced(gvk, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed determine if resource is namespaced",
- Detail: err.Error(),
- })
- return resp, nil
- }
- rcl := client.Resource(gvr)
-
- objectType, th, err := s.TFTypeFromOpenAPI(ctx, gvk, false)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to save resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- var metadataBlock []datasource_tftypes.Value
- dsConfig["metadata"].As(&metadataBlock)
-
- var metadata map[string]datasource_tftypes.Value
- metadataBlock[0].As(&metadata)
-
- var name string
- metadata["name"].As(&name)
-
- var res *datasource_unstructured.Unstructured
- if ns {
- var namespace string
- metadata["namespace"].As(&namespace)
- if namespace == "" {
- namespace = "default"
- }
- res, err = rcl.Namespace(namespace).Get(ctx, name, datasource_v1metav1.GetOptions{})
- } else {
- res, err = rcl.Get(ctx, name, datasource_v1metav1.GetOptions{})
- }
- if err != nil {
- if datasource_errorsapierrors.IsNotFound(err) {
- return resp, nil
- }
- d := datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: datasource_fmt.Sprintf("Failed to get data source"),
- Detail: err.Error(),
- }
- resp.Diagnostics = append(resp.Diagnostics, &d)
- return resp, nil
- }
-
- fo := RemoveServerSideFields(res.Object)
- nobj, err := datasource_payload.ToTFValue(fo, objectType, th, datasource_tftypes.NewAttributePath())
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to convert API response to Terraform value type",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- nobj, err = datasource_morph.DeepUnknown(objectType, nobj, datasource_tftypes.NewAttributePath())
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to save resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- rawState := make(map[string]datasource_tftypes.Value)
- err = config.As(&rawState)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to save resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- rawState["object"] = datasource_morph.UnknownToNull(nobj)
-
- v := datasource_tftypes.NewValue(rt, rawState)
- state, err := datasource_tfprotov5.NewDynamicValue(v.Type(), v)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &datasource_tfprotov5.Diagnostic{
- Severity: datasource_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to save resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- resp.State = &state
- return resp, nil
-}
-
-func getGVR(apiVersion, kind string, m datasource_meta.RESTMapper) (datasource_schema.GroupVersionResource, error) {
- gv, err := datasource_schema.ParseGroupVersion(apiVersion)
- if err != nil {
- return datasource_schema.GroupVersionResource{}, err
- }
- mapping, err := m.RESTMapping(gv.WithKind(kind).GroupKind(), gv.Version)
- if err != nil {
- return datasource_schema.GroupVersionResource{}, err
- }
- return mapping.Resource, err
-}
-
-func APIStatusErrorToDiagnostics(s diagnostics_v1metav1.Status) []*diagnostics_tfprotov5.Diagnostic {
- var diags []*diagnostics_tfprotov5.Diagnostic
- diags = append(diags, &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityError,
- Summary: "API response status: " + s.Status,
- Detail: s.Message,
- })
- if s.Details == nil {
- return diags
- }
- gk := diagnostics_v1metav1.GroupKind{Group: s.Details.Group, Kind: s.Details.Kind}
- diags = append(diags, &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityError,
- Summary: diagnostics_fmt.Sprintf("Kubernetes API Error: %s %s [%s]", string(s.Reason), gk.String(), s.Details.Name),
- })
- for _, c := range s.Details.Causes {
- diags = append(diags, &diagnostics_tfprotov5.Diagnostic{
- Severity: diagnostics_tfprotov5.DiagnosticSeverityError,
- Detail: c.Message,
- Summary: c.Field,
- })
- }
- return diags
-}
-
-func (s *RawProviderServer) GetProviderSchema(ctx getproviderschema_context.Context, req *getproviderschema_tfprotov5.GetProviderSchemaRequest) (*getproviderschema_tfprotov5.GetProviderSchemaResponse, error) {
- cfgSchema := GetProviderConfigSchema()
- resSchema := GetProviderResourceSchema()
- dsSchema := GetProviderDataSourceSchema()
-
- return &getproviderschema_tfprotov5.GetProviderSchemaResponse{
- Provider: cfgSchema,
- ResourceSchemas: resSchema,
- DataSourceSchemas: dsSchema,
- }, nil
-}
-
-func (s *RawProviderServer) ImportResourceState(ctx import_context.Context, req *import_tfprotov5.ImportResourceStateRequest) (*import_tfprotov5.ImportResourceStateResponse, error) {
-
- resp := &import_tfprotov5.ImportResourceStateResponse{}
-
- execDiag := s.canExecute()
- if len(execDiag) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, execDiag...)
- return resp, nil
- }
-
- gvk, name, namespace, err := import_util.ParseResourceID(req.ID)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to parse import ID",
- Detail: err.Error(),
- })
- }
- s.logger.Trace("[ImportResourceState]", "[ID]", gvk, name, namespace)
- rt, err := GetResourceType(req.TypeName)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine resource type",
- Detail: err.Error(),
- })
- return resp, nil
- }
- rm, err := s.getRestMapper()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to get RESTMapper client",
- Detail: err.Error(),
- })
- return resp, nil
- }
- client, err := s.getDynamicClient()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "failed to get Dynamic client",
- Detail: err.Error(),
- })
- return resp, nil
- }
- ns, err := IsResourceNamespaced(gvk, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to get namespacing requirement from RESTMapper",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- io := import_unstructured.Unstructured{}
- io.SetKind(gvk.Kind)
- io.SetAPIVersion(gvk.GroupVersion().String())
- io.SetName(name)
- io.SetNamespace(namespace)
-
- gvr, err := GVRFromUnstructured(&io, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to get GVR from GVK via RESTMapper",
- Detail: err.Error(),
- })
- return resp, nil
- }
- rcl := client.Resource(gvr)
-
- var ro *import_unstructured.Unstructured
- if ns {
- ro, err = rcl.Namespace(namespace).Get(ctx, name, import_v1metav1.GetOptions{})
- } else {
- ro, err = rcl.Get(ctx, name, import_v1metav1.GetOptions{})
- }
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: import_fmt.Sprintf("Failed to get resource %+v from API", io),
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[ImportResourceState]", "[API Resource]", ro)
-
- objectType, th, err := s.TFTypeFromOpenAPI(ctx, gvk, false)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: import_fmt.Sprintf("Failed to determine resource type from GVK: %s", gvk),
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- fo := RemoveServerSideFields(ro.UnstructuredContent())
- nobj, err := import_payload.ToTFValue(fo, objectType, th, import_tftypes.NewAttributePath())
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to convert unstructured to tftypes.Value",
- Detail: err.Error(),
- })
- return resp, nil
- }
- nobj, err = import_morph.DeepUnknown(objectType, nobj, import_tftypes.NewAttributePath())
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to backfill unknown values during import",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[ImportResourceState]", "[tftypes.Value]", nobj)
-
- newState := make(map[string]import_tftypes.Value)
- wftype := rt.(import_tftypes.Object).AttributeTypes["wait_for"]
- wtype := rt.(import_tftypes.Object).AttributeTypes["wait"]
- timeoutsType := rt.(import_tftypes.Object).AttributeTypes["timeouts"]
- fmType := rt.(import_tftypes.Object).AttributeTypes["field_manager"]
- cmpType := rt.(import_tftypes.Object).AttributeTypes["computed_fields"]
-
- newState["manifest"] = import_tftypes.NewValue(import_tftypes.Object{AttributeTypes: map[string]import_tftypes.Type{}}, nil)
- newState["object"] = import_morph.UnknownToNull(nobj)
- newState["wait_for"] = import_tftypes.NewValue(wftype, nil)
- newState["wait"] = import_tftypes.NewValue(wtype, nil)
- newState["timeouts"] = import_tftypes.NewValue(timeoutsType, nil)
- newState["field_manager"] = import_tftypes.NewValue(fmType, nil)
- newState["computed_fields"] = import_tftypes.NewValue(cmpType, nil)
-
- nsVal := import_tftypes.NewValue(rt, newState)
-
- impState, err := import_tfprotov5.NewDynamicValue(nsVal.Type(), nsVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to construct dynamic value for imported state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- impf := import_tftypes.NewValue(privateStateSchema,
- map[string]import_tftypes.Value{"IsImported": import_tftypes.NewValue(import_tftypes.Bool, true)},
- )
- fb, err := impf.MarshalMsgPack(privateStateSchema)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityWarning,
- Summary: "Failed to earmark imported resource",
- Detail: err.Error(),
- })
- }
- nr := &import_tfprotov5.ImportedResource{
- TypeName: req.TypeName,
- State: &impState,
- Private: fb,
- }
- resp.ImportedResources = append(resp.ImportedResources, nr)
- resp.Diagnostics = append(resp.Diagnostics, &import_tfprotov5.Diagnostic{
- Severity: import_tfprotov5.DiagnosticSeverityWarning,
- Summary: "Apply needed after 'import'",
- Detail: "Please run apply after a successful import to realign the resource state to the configuration in Terraform.",
- })
- return resp, nil
-}
-
-func (s *RawProviderServer) dryRun(ctx plan_context.Context, obj plan_tftypes.Value, fieldManager string, forceConflicts bool, isNamespaced bool) error {
- c, err := s.getDynamicClient()
- if err != nil {
- return plan_fmt.Errorf("failed to retrieve Kubernetes dynamic client during apply: %v", err)
- }
- m, err := s.getRestMapper()
- if err != nil {
- return plan_fmt.Errorf("failed to retrieve Kubernetes RESTMapper client during apply: %v", err)
- }
-
- minObj := plan_morph.UnknownToNull(obj)
- pu, err := plan_payload.FromTFValue(minObj, nil, plan_tftypes.NewAttributePath())
- if err != nil {
- return err
- }
-
- rqObj := mapRemoveNulls(pu.(map[string]interface{}))
- uo := plan_unstructured.Unstructured{}
- uo.SetUnstructuredContent(rqObj)
- rnamespace := uo.GetNamespace()
- rname := uo.GetName()
- rnn := plan_types.NamespacedName{Namespace: rnamespace, Name: rname}.String()
-
- gvr, err := GVRFromUnstructured(&uo, m)
- if err != nil {
- return plan_fmt.Errorf("failed to determine resource GVR: %s", err)
- }
-
- var rs plan_dynamic.ResourceInterface
- if isNamespaced {
- rs = c.Resource(gvr).Namespace(rnamespace)
- } else {
- rs = c.Resource(gvr)
- }
-
- jsonManifest, err := uo.MarshalJSON()
- if err != nil {
- return plan_fmt.Errorf("failed to marshall resource %q to JSON: %v", rnn, err)
- }
- _, err = rs.Patch(ctx, rname, plan_types.ApplyPatchType, jsonManifest,
- plan_v1metav1.PatchOptions{
- FieldManager: fieldManager,
- Force: &forceConflicts,
- DryRun: []string{"All"},
- },
- )
-
- return err
-}
-
-const defaultFieldManagerName = "Terraform"
-
-func (s *RawProviderServer) getFieldManagerConfig(v map[string]plan_tftypes.Value) (string, bool, error) {
- fieldManagerName := defaultFieldManagerName
- forceConflicts := false
- if !v["field_manager"].IsNull() && v["field_manager"].IsKnown() {
- var fieldManagerBlock []plan_tftypes.Value
- err := v["field_manager"].As(&fieldManagerBlock)
- if err != nil {
- return "", false, err
- }
- if len(fieldManagerBlock) > 0 {
- var fieldManagerObj map[string]plan_tftypes.Value
- err := fieldManagerBlock[0].As(&fieldManagerObj)
- if err != nil {
- return "", false, err
- }
- if !fieldManagerObj["name"].IsNull() && fieldManagerObj["name"].IsKnown() {
- err = fieldManagerObj["name"].As(&fieldManagerName)
- if err != nil {
- return "", false, err
- }
- }
- if !fieldManagerObj["force_conflicts"].IsNull() && fieldManagerObj["force_conflicts"].IsKnown() {
- err = fieldManagerObj["force_conflicts"].As(&forceConflicts)
- if err != nil {
- return "", false, err
- }
- }
- }
- }
- return fieldManagerName, forceConflicts, nil
-}
-
-func isImportedFlagFromPrivate(p []byte) (f bool, d []*plan_tfprotov5.Diagnostic) {
- if p == nil || len(p) == 0 {
- return
- }
- ps, err := getPrivateStateValue(p)
- if err != nil {
- d = append(d, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Unexpected format for private state",
- Detail: err.Error(),
- })
- }
- err = ps["IsImported"].As(&f)
- if err != nil {
- d = append(d, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Unexpected format for import flag in private state",
- Detail: err.Error(),
- })
- }
- return
-}
-
-func (s *RawProviderServer) PlanResourceChange(ctx plan_context.Context, req *plan_tfprotov5.PlanResourceChangeRequest) (*plan_tfprotov5.PlanResourceChangeResponse, error) {
- resp := &plan_tfprotov5.PlanResourceChangeResponse{}
-
- isImported, d := isImportedFlagFromPrivate(req.PriorPrivate)
- resp.Diagnostics = append(resp.Diagnostics, d...)
- if !isImported {
- resp.RequiresReplace = append(resp.RequiresReplace,
- plan_tftypes.NewAttributePath().WithAttributeName("manifest").WithAttributeName("apiVersion"),
- plan_tftypes.NewAttributePath().WithAttributeName("manifest").WithAttributeName("kind"),
- plan_tftypes.NewAttributePath().WithAttributeName("manifest").WithAttributeName("metadata").WithAttributeName("name"),
- )
- } else {
- resp.PlannedPrivate = req.PriorPrivate
- }
-
- execDiag := s.canExecute()
- if len(execDiag) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, execDiag...)
- return resp, nil
- }
-
- resp.Diagnostics = append(resp.Diagnostics, s.checkValidCredentials(ctx)...)
- if len(resp.Diagnostics) > 0 {
- return resp, nil
- }
-
- rt, err := GetResourceType(req.TypeName)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine planned resource type",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- proposedState, err := req.ProposedNewState.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal planned resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[PlanResourceChange]", "[ProposedState]", dump(proposedState))
-
- proposedVal := make(map[string]plan_tftypes.Value)
- err = proposedState.As(&proposedVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract planned resource state from tftypes.Value",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- computedFields := make(map[string]*plan_tftypes.AttributePath)
- var atp *plan_tftypes.AttributePath
- cfVal, ok := proposedVal["computed_fields"]
- if ok && !cfVal.IsNull() && cfVal.IsKnown() {
- var cf []plan_tftypes.Value
- cfVal.As(&cf)
- for _, v := range cf {
- var vs string
- err := v.As(&vs)
- if err != nil {
- s.logger.Error("[computed_fields] cannot extract element from list")
- continue
- }
- atp, err := FieldPathToTftypesPath(vs)
- if err != nil {
- s.logger.Error("[Configure]", "[computed_fields] cannot parse filed path element", err)
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "[computed_fields] cannot parse field path element: " + vs,
- Detail: err.Error(),
- })
- continue
- }
- computedFields[atp.String()] = atp
- }
- } else {
-
- atp = plan_tftypes.NewAttributePath().WithAttributeName("metadata").WithAttributeName("annotations")
- computedFields[atp.String()] = atp
-
- atp = plan_tftypes.NewAttributePath().WithAttributeName("metadata").WithAttributeName("labels")
- computedFields[atp.String()] = atp
- }
-
- priorState, err := req.PriorState.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal prior resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[PlanResourceChange]", "[PriorState]", dump(priorState))
-
- priorVal := make(map[string]plan_tftypes.Value)
- err = priorState.As(&priorVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract prior resource state from tftypes.Value",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- if proposedState.IsNull() {
-
- if _, ok := priorVal["object"]; ok {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid prior state while planning for destroy",
- Detail: plan_fmt.Sprintf("'object' attribute missing from state: %s", err),
- })
- return resp, nil
- }
- resp.PlannedState = req.ProposedNewState
- return resp, nil
- }
-
- ppMan, ok := proposedVal["manifest"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid proposed state during planning",
- Detail: "Missing 'manifest' attribute",
- Attribute: plan_tftypes.NewAttributePath().WithAttributeName("manifest"),
- })
- return resp, nil
- }
-
- rm, err := s.getRestMapper()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to create K8s RESTMapper client",
- Detail: err.Error(),
- })
- return resp, nil
- }
- gvk, err := GVKFromTftypesObject(&ppMan, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine GroupVersionResource for manifest",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- vdiags := s.validateResourceOnline(&ppMan)
- if len(vdiags) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, vdiags...)
- return resp, nil
- }
-
- ns, err := IsResourceNamespaced(gvk, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to discover scope of resource",
- Detail: err.Error(),
- })
- return resp, nil
- }
- if ns && !isImported {
- resp.RequiresReplace = append(resp.RequiresReplace,
- plan_tftypes.NewAttributePath().WithAttributeName("manifest").WithAttributeName("metadata").WithAttributeName("namespace"),
- )
- }
-
- objectType, hints, err := s.TFTypeFromOpenAPI(ctx, gvk, false)
- if err != nil {
- return resp, plan_fmt.Errorf("failed to determine resource type ID: %s", err)
- }
-
- if !objectType.Is(plan_tftypes.Object{}) {
-
- objectType = ppMan.Type()
-
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityWarning,
- Summary: "This custom resource does not have an associated OpenAPI schema.",
- Detail: "We could not find an OpenAPI schema for this custom resource. Updates to this resource will cause a forced replacement.",
- })
-
- fieldManagerName, forceConflicts, err := s.getFieldManagerConfig(proposedVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Could not extract field_manager config",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- err = s.dryRun(ctx, ppMan, fieldManagerName, forceConflicts, ns)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Dry-run failed for non-structured resource",
- Detail: plan_fmt.Sprintf("A dry-run apply was performed for this resource but was unsuccessful: %v", err),
- })
- return resp, nil
- }
-
- resp.RequiresReplace = []*plan_tftypes.AttributePath{
- plan_tftypes.NewAttributePath().WithAttributeName("manifest"),
- plan_tftypes.NewAttributePath().WithAttributeName("object"),
- }
- }
-
- so := objectType.(plan_tftypes.Object)
- s.logger.Debug("[PlanUpdateResource]", "OAPI type", dump(so))
-
- morphedManifest, d := plan_morph.ValueToType(ppMan, objectType, plan_tftypes.NewAttributePath().WithAttributeName("object"))
- if len(d) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Manifest configuration incompatible with resource schema",
- Detail: "Detailed descriptions of errors will follow below.",
- })
- resp.Diagnostics = append(resp.Diagnostics, d...)
- return resp, nil
- }
- s.logger.Debug("[PlanResourceChange]", "morphed manifest", dump(morphedManifest))
-
- completePropMan, err := plan_morph.DeepUnknown(objectType, morphedManifest, plan_tftypes.NewAttributePath().WithAttributeName("object"))
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to backfill manifest from OpenAPI type",
- Detail: plan_fmt.Sprintf("This usually happens when the provider cannot fully process the schema retrieved from cluster. Please report this to the provider maintainers.\nError: %s", err.Error()),
- Attribute: plan_tftypes.NewAttributePath().WithAttributeName("object"),
- })
- return resp, nil
- }
- s.logger.Debug("[PlanResourceChange]", "backfilled manifest", dump(completePropMan))
-
- if proposedVal["object"].IsNull() {
-
- s.logger.Debug("[PlanResourceChange]", "creating object", dump(completePropMan))
- newObj, err := plan_tftypes.Transform(completePropMan, func(ap *plan_tftypes.AttributePath, v plan_tftypes.Value) (plan_tftypes.Value, error) {
- _, ok := computedFields[ap.String()]
- if ok {
- return plan_tftypes.NewValue(v.Type(), plan_tftypes.UnknownValue), nil
- }
- return v, nil
- })
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to set computed attributes in new resource state",
- Detail: err.Error(),
- Attribute: plan_tftypes.NewAttributePath().WithAttributeName("object"),
- })
- return resp, nil
- }
- proposedVal["object"] = newObj
- } else {
-
- priorObj, ok := priorVal["object"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid prior state during planning",
- Detail: "Missing 'object' attribute",
- Attribute: plan_tftypes.NewAttributePath().WithAttributeName("object"),
- })
- return resp, nil
- }
- priorMan, ok := priorVal["manifest"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid prior state during planning",
- Detail: "Missing 'manifest' attribute",
- Attribute: plan_tftypes.NewAttributePath().WithAttributeName("manifest"),
- })
- return resp, nil
- }
- updatedObj, err := plan_tftypes.Transform(completePropMan, func(ap *plan_tftypes.AttributePath, v plan_tftypes.Value) (plan_tftypes.Value, error) {
- _, isComputed := computedFields[ap.String()]
- if v.IsKnown() {
- hasChanged := false
- wasCfg, restPath, err := plan_tftypes.WalkAttributePath(priorMan, ap)
- if err != nil && len(restPath.Steps()) != 0 {
- hasChanged = true
- }
- nowCfg, restPath, err := plan_tftypes.WalkAttributePath(ppMan, ap)
- hasChanged = err == nil && len(restPath.Steps()) == 0 && wasCfg.(plan_tftypes.Value).IsKnown() && !wasCfg.(plan_tftypes.Value).Equal(nowCfg.(plan_tftypes.Value))
- if hasChanged {
- h, ok := hints[plan_morph.ValueToTypePath(ap).String()]
- if ok && h == plan_manifest.PreserveUnknownFieldsLabel {
- apm := append(plan_tftypes.NewAttributePath().WithAttributeName("manifest").Steps(), ap.Steps()...)
- resp.RequiresReplace = append(resp.RequiresReplace, plan_tftypes.NewAttributePathWithSteps(apm))
- }
- }
- if isComputed {
- if hasChanged {
- return plan_tftypes.NewValue(v.Type(), plan_tftypes.UnknownValue), nil
- }
- nowVal, restPath, err := plan_tftypes.WalkAttributePath(proposedVal["object"], ap)
- if err == nil && len(restPath.Steps()) == 0 {
- return nowVal.(plan_tftypes.Value), nil
- }
- }
- return v, nil
- }
-
- wasVal, restPath, err := plan_tftypes.WalkAttributePath(priorMan, ap)
- if err == nil && len(restPath.Steps()) == 0 && wasVal.(plan_tftypes.Value).IsKnown() {
-
- return v, nil
- }
-
- priorAtrVal, restPath, err := plan_tftypes.WalkAttributePath(priorObj, ap)
- if err != nil {
- if len(restPath.Steps()) > 0 {
-
- return v, nil
- }
-
- return v, ap.NewError(err)
- }
- if len(restPath.Steps()) > 0 {
- s.logger.Warn("[PlanResourceChange]", "Unexpected missing attribute from state at", ap.String(), " + ", restPath.String())
- }
- return priorAtrVal.(plan_tftypes.Value), nil
- })
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to update proposed state from prior state",
- Detail: err.Error(),
- Attribute: plan_tftypes.NewAttributePath().WithAttributeName("object"),
- })
- return resp, nil
- }
-
- proposedVal["object"] = updatedObj
- }
-
- propStateVal := plan_tftypes.NewValue(proposedState.Type(), proposedVal)
- s.logger.Trace("[PlanResourceChange]", "new planned state", dump(propStateVal))
-
- plannedState, err := plan_tfprotov5.NewDynamicValue(propStateVal.Type(), propStateVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &plan_tfprotov5.Diagnostic{
- Severity: plan_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to assemble proposed state during plan",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- resp.PlannedState = &plannedState
- return resp, nil
-}
-
-func getAttributeValue(v plan_tftypes.Value, path string) (plan_tftypes.Value, error) {
- p, err := FieldPathToTftypesPath(path)
- if err != nil {
- return plan_tftypes.Value{}, err
- }
- vv, _, err := plan_tftypes.WalkAttributePath(v, p)
- if err != nil {
- return plan_tftypes.Value{}, err
- }
- return vv.(plan_tftypes.Value), nil
-}
-
-var providerName = "registry.terraform.io/hashicorp/kubernetes"
-
-func Serve(ctx plugin_context.Context, logger plugin_hclog.Logger) error {
- return plugin_tf5servertf5server.Serve(providerName, func() plugin_tfprotov5.ProviderServer { return &(RawProviderServer{logger: logger}) })
-}
-
-func Provider() func() plugin_tfprotov5.ProviderServer {
- var logLevel string
- var ok bool = false
- for _, ev := range []string{"TF_LOG_PROVIDER_KUBERNETES", "TF_LOG_PROVIDER", "TF_LOG"} {
- logLevel, ok = plugin_os.LookupEnv(ev)
- if ok {
- break
- }
- }
- if !ok {
- logLevel = "off"
- }
-
- return func() plugin_tfprotov5.ProviderServer {
- return &(RawProviderServer{logger: plugin_hclog.New(&plugin_hclog.LoggerOptions{
- Level: plugin_hclog.LevelFromString(logLevel),
- Output: plugin_os.Stderr,
- })})
- }
-}
-
-func ServeTest(ctx plugin_context.Context, logger plugin_hclog.Logger, t *plugin_testing.T) (plugin_tfexec.ReattachInfo, error) {
- reattachConfigCh := make(chan *plugin_plugin.ReattachConfig)
-
- go plugin_tf5servertf5server.Serve(providerName,
- func() plugin_tfprotov5.ProviderServer { return &(RawProviderServer{logger: logger}) },
- plugin_tf5servertf5server.WithDebug(ctx, reattachConfigCh, nil),
- plugin_tf5servertf5server.WithLoggingSink(t),
- plugin_tf5servertf5server.WithGoPluginLogger(logger),
- )
-
- reattachConfig, err := waitForReattachConfig(reattachConfigCh)
- if err != nil {
- return nil, plugin_fmt.Errorf("Error getting reattach config: %s", err)
- }
-
- return map[string]plugin_tfexec.ReattachConfig{
- providerName: convertReattachConfig(reattachConfig),
- }, nil
-}
-
-func convertReattachConfig(reattachConfig *plugin_plugin.ReattachConfig) plugin_tfexec.ReattachConfig {
- return plugin_tfexec.ReattachConfig{
- Protocol: string(reattachConfig.Protocol),
- Pid: reattachConfig.Pid,
- Test: true,
- Addr: plugin_tfexec.ReattachConfigAddr{
- Network: reattachConfig.Addr.Network(),
- String: reattachConfig.Addr.String(),
- },
- }
-}
-
-func printReattachConfig(config *plugin_plugin.ReattachConfig) {
- reattachStr, err := plugin_json.Marshal(map[string]plugin_tfexec.ReattachConfig{
- providerName: convertReattachConfig(config),
- })
- if err != nil {
- plugin_fmt.Printf("Error building reattach string: %s", err)
- return
- }
- plugin_fmt.Printf("# Provider server started\nexport TF_REATTACH_PROVIDERS='%s'\n", string(reattachStr))
-}
-
-func waitForReattachConfig(ch chan *plugin_plugin.ReattachConfig) (*plugin_plugin.ReattachConfig, error) {
- select {
- case config := <-ch:
- return config, nil
- case <-plugin_time.After(2 * plugin_time.Second):
- return nil, plugin_fmt.Errorf("timeout while waiting for reattach configuration")
- }
-}
-
-func GetObjectTypeFromSchema(schema *provider_tfprotov5.Schema) provider_tftypes.Type {
- bm := map[string]provider_tftypes.Type{}
-
- for _, att := range schema.Block.Attributes {
- bm[att.Name] = att.Type
- }
-
- for _, b := range schema.Block.BlockTypes {
- a := map[string]provider_tftypes.Type{}
- for _, att := range b.Block.Attributes {
- a[att.Name] = att.Type
- }
- bm[b.TypeName] = provider_tftypes.List{
- ElementType: provider_tftypes.Object{AttributeTypes: a},
- }
-
- for _, bb := range b.Block.BlockTypes {
- aa := map[string]provider_tftypes.Type{}
- for _, att := range bb.Block.Attributes {
- aa[att.Name] = att.Type
- }
- a[bb.TypeName] = provider_tftypes.List{
- ElementType: provider_tftypes.Object{AttributeTypes: aa},
- }
- }
- }
-
- return provider_tftypes.Object{AttributeTypes: bm}
-}
-
-func GetResourceType(name string) (provider_tftypes.Type, error) {
- sch := GetProviderResourceSchema()
- rsch, ok := sch[name]
- if !ok {
- return provider_tftypes.DynamicPseudoType, provider_fmt.Errorf("unknown resource %s - cannot find schema", name)
- }
- return GetObjectTypeFromSchema(rsch), nil
-}
-
-func GetDataSourceType(name string) (provider_tftypes.Type, error) {
- sch := GetProviderDataSourceSchema()
- rsch, ok := sch[name]
- if !ok {
- return provider_tftypes.DynamicPseudoType, provider_fmt.Errorf("unknown data source %q: cannot find schema", name)
- }
- return GetObjectTypeFromSchema(rsch), nil
-}
-
-func GetProviderResourceSchema() map[string]*provider_tfprotov5.Schema {
- return map[string]*provider_tfprotov5.Schema{
- "kubernetes_manifest": {
- Version: 1,
- Block: &provider_tfprotov5.SchemaBlock{
- BlockTypes: []*provider_tfprotov5.SchemaNestedBlock{
- {
- TypeName: "timeouts",
- Nesting: provider_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 0,
- MaxItems: 1,
- Block: &provider_tfprotov5.SchemaBlock{
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "create",
- Type: provider_tftypes.String,
- Description: "Timeout for the create operation.",
- Optional: true,
- },
- {
- Name: "update",
- Type: provider_tftypes.String,
- Description: "Timeout for the update operation.",
- Optional: true,
- },
- {
- Name: "delete",
- Type: provider_tftypes.String,
- Description: "Timeout for the delete operation.",
- Optional: true,
- },
- },
- },
- },
- {
- TypeName: "field_manager",
- Nesting: provider_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 0,
- MaxItems: 1,
- Block: &provider_tfprotov5.SchemaBlock{
- Description: "Configure field manager options.",
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "name",
- Type: provider_tftypes.String,
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- Description: "The name to use for the field manager when creating and updating the resource.",
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "force_conflicts",
- Type: provider_tftypes.Bool,
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- Description: "Force changes against conflicts.",
- DescriptionKind: 0,
- Deprecated: false,
- },
- },
- },
- },
- {
- TypeName: "wait",
- Nesting: provider_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 0,
- MaxItems: 1,
- Block: &provider_tfprotov5.SchemaBlock{
- Description: "Configure waiter options.",
- BlockTypes: []*provider_tfprotov5.SchemaNestedBlock{
- {
- TypeName: "condition",
- Nesting: provider_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 0,
- Block: &provider_tfprotov5.SchemaBlock{
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "status",
- Type: provider_tftypes.String,
- Optional: true,
- Description: "The condition status.",
- }, {
- Name: "type",
- Type: provider_tftypes.String,
- Optional: true,
- Description: "The type of condition.",
- },
- },
- },
- },
- },
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "rollout",
- Type: provider_tftypes.Bool,
- Optional: true,
- Description: "Wait for rollout to complete on resources that support `kubectl rollout status`.",
- },
- {
- Name: "fields",
- Type: provider_tftypes.Map{ElementType: provider_tftypes.String},
- Optional: true,
- Description: "A map of paths to fields to wait for a specific field value.",
- },
- },
- },
- },
- },
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "manifest",
- Type: provider_tftypes.DynamicPseudoType,
- Required: true,
- Description: "A Kubernetes manifest describing the desired state of the resource in HCL format.",
- },
- {
- Name: "object",
- Type: provider_tftypes.DynamicPseudoType,
- Optional: true,
- Computed: true,
- Description: "The resulting resource state, as returned by the API server after applying the desired state from `manifest`.",
- },
- {
- Name: "wait_for",
- Type: provider_tftypes.Object{
- AttributeTypes: map[string]provider_tftypes.Type{
- "fields": provider_tftypes.Map{
- ElementType: provider_tftypes.String,
- },
- },
- },
- Optional: true,
- Deprecated: true,
- Description: "A map of attribute paths and desired patterns to be matched. After each apply the provider will wait for all attributes listed here to reach a value that matches the desired pattern.",
- },
- {
- Name: "computed_fields",
- Type: provider_tftypes.List{ElementType: provider_tftypes.String},
- Description: "List of manifest fields whose values can be altered by the API server during 'apply'. Defaults to: [\"metadata.annotations\", \"metadata.labels\"]",
- Optional: true,
- },
- },
- },
- },
- }
-}
-
-func GetProviderDataSourceSchema() map[string]*provider_tfprotov5.Schema {
- return map[string]*provider_tfprotov5.Schema{
- "kubernetes_resource": {
- Version: 1,
- Block: &provider_tfprotov5.SchemaBlock{
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "api_version",
- Type: provider_tftypes.String,
- Required: true,
- Description: "The resource apiVersion.",
- },
- {
- Name: "kind",
- Type: provider_tftypes.String,
- Required: true,
- Description: "The resource kind.",
- },
- {
- Name: "object",
- Type: provider_tftypes.DynamicPseudoType,
- Optional: true,
- Computed: true,
- Description: "The response from the API server.",
- },
- },
- BlockTypes: []*provider_tfprotov5.SchemaNestedBlock{
- {
- TypeName: "metadata",
- Nesting: provider_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 1,
- MaxItems: 1,
- Block: &provider_tfprotov5.SchemaBlock{
- Description: "Metadata for the resource",
- Attributes: []*provider_tfprotov5.SchemaAttribute{
- {
- Name: "name",
- Type: provider_tftypes.String,
- Required: true,
- Description: "The resource name.",
- },
- {
- Name: "namespace",
- Type: provider_tftypes.String,
- Optional: true,
- Description: "The resource namespace.",
- },
- },
- },
- },
- },
- },
- },
- }
-}
-
-func GetProviderConfigSchema() *provider_config_tfprotov5.Schema {
- b := provider_config_tfprotov5.SchemaBlock{
-
- Attributes: []*provider_config_tfprotov5.SchemaAttribute{
- {
- Name: "host",
- Type: provider_config_tftypes.String,
- Description: "The hostname (in form of URI) of Kubernetes master.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "username",
- Type: provider_config_tftypes.String,
- Description: "The username to use for HTTP basic authentication when accessing the Kubernetes master endpoint.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "password",
- Type: provider_config_tftypes.String,
- Description: "The password to use for HTTP basic authentication when accessing the Kubernetes master endpoint.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "insecure",
- Type: provider_config_tftypes.Bool,
- Description: "Whether server should be accessed without verifying the TLS certificate.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "client_certificate",
- Type: provider_config_tftypes.String,
- Description: "PEM-encoded client certificate for TLS authentication.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "client_key",
- Type: provider_config_tftypes.String,
- Description: "PEM-encoded client certificate key for TLS authentication.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "cluster_ca_certificate",
- Type: provider_config_tftypes.String,
- Description: "PEM-encoded root certificates bundle for TLS authentication.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "config_paths",
- Type: provider_config_tftypes.List{ElementType: provider_config_tftypes.String},
- Description: "A list of paths to kube config files. Can be set with KUBE_CONFIG_PATHS environment variable.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "config_path",
- Type: provider_config_tftypes.String,
- Description: "Path to the kube config file. Can be set with KUBE_CONFIG_PATH.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "config_context",
- Type: provider_config_tftypes.String,
- Description: "",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "config_context_auth_info",
- Type: provider_config_tftypes.String,
- Description: "",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "config_context_cluster",
- Type: provider_config_tftypes.String,
- Description: "",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "token",
- Type: provider_config_tftypes.String,
- Description: "Token to authenticate an service account",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "proxy_url",
- Type: provider_config_tftypes.String,
- Description: "URL to the proxy to be used for all API requests",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "ignore_annotations",
- Type: provider_config_tftypes.List{ElementType: provider_config_tftypes.String},
- Description: "List of Kubernetes metadata annotations to ignore across all resources handled by this provider for situations where external systems are managing certain resource annotations. Each item is a regular expression.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "ignore_labels",
- Type: provider_config_tftypes.List{ElementType: provider_config_tftypes.String},
- Description: "List of Kubernetes metadata labels to ignore across all resources handled by this provider for situations where external systems are managing certain resource labels. Each item is a regular expression.",
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- },
- BlockTypes: []*provider_config_tfprotov5.SchemaNestedBlock{
- {
- TypeName: "exec",
- Nesting: provider_config_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 0,
- MaxItems: 1,
- Block: &provider_config_tfprotov5.SchemaBlock{
- Attributes: []*provider_config_tfprotov5.SchemaAttribute{
- {
- Name: "api_version",
- Type: provider_config_tftypes.String,
- Required: true,
- Optional: false,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "command",
- Type: provider_config_tftypes.String,
- Required: true,
- Optional: false,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "env",
- Type: provider_config_tftypes.Map{ElementType: provider_config_tftypes.String},
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- {
- Name: "args",
- Type: provider_config_tftypes.List{ElementType: provider_config_tftypes.String},
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- DescriptionKind: 0,
- Deprecated: false,
- },
- },
- },
- },
- {
- TypeName: "experiments",
- Nesting: provider_config_tfprotov5.SchemaNestedBlockNestingModeList,
- MinItems: 0,
- MaxItems: 1,
- Block: &provider_config_tfprotov5.SchemaBlock{
- Description: "Enable and disable experimental features.",
- Attributes: []*provider_config_tfprotov5.SchemaAttribute{
- {
- Name: "manifest_resource",
- Type: provider_config_tftypes.Bool,
- Required: false,
- Optional: true,
- Computed: false,
- Sensitive: false,
- Description: "Enable the `kubernetes_manifest` resource.",
- DescriptionKind: 0,
- Deprecated: false,
- },
- },
- },
- },
- },
- }
-
- return &provider_config_tfprotov5.Schema{
- Version: 0,
- Block: &b,
- }
-}
-
-func (s *RawProviderServer) ReadResource(ctx read_context.Context, req *read_tfprotov5.ReadResourceRequest) (*read_tfprotov5.ReadResourceResponse, error) {
- resp := &read_tfprotov5.ReadResourceResponse{}
-
- resp.Private = req.Private
-
- execDiag := s.canExecute()
- if len(execDiag) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, execDiag...)
- return resp, nil
- }
-
- var resState map[string]read_tftypes.Value
- var err error
- rt, err := GetResourceType(req.TypeName)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine resource type",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- currentState, err := req.CurrentState.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to decode current state",
- Detail: err.Error(),
- })
- return resp, nil
- }
- if currentState.IsNull() {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to read resource",
- Detail: "Incomplete of missing state",
- })
- return resp, nil
- }
- err = currentState.As(&resState)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract resource from current state",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- co, hasOb := resState["object"]
- if !hasOb || co.IsNull() {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Current state of resource has no 'object' attribute",
- Detail: "This should not happen. The state may be incomplete or corrupted.\nIf this error is reproducible, plese report issue to provider maintainers.",
- })
- return resp, nil
- }
- rm, err := s.getRestMapper()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to get RESTMapper client",
- Detail: err.Error(),
- })
- return resp, nil
- }
- gvk, err := GVKFromTftypesObject(&co, rm)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine GroupVersionResource for manifest",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- objectType, th, err := s.TFTypeFromOpenAPI(ctx, gvk, false)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: read_fmt.Sprintf("Failed to determine resource type from GVK: %s", gvk),
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- cu, err := read_payload.FromTFValue(co, th, read_tftypes.NewAttributePath())
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed encode 'object' attribute to Unstructured",
- Detail: err.Error(),
- })
- return resp, nil
- }
- s.logger.Trace("[ReadResource]", "[unstructured.FromTFValue]", dump(cu))
-
- client, err := s.getDynamicClient()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: "failed to get Dynamic client",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- uo := read_unstructured.Unstructured{Object: cu.(map[string]interface{})}
- cGVR, err := GVRFromUnstructured(&uo, rm)
- if err != nil {
- return resp, err
- }
- ns, err := IsResourceNamespaced(uo.GroupVersionKind(), rm)
- if err != nil {
- return resp, err
- }
- rcl := client.Resource(cGVR)
-
- rnamespace := uo.GetNamespace()
- rname := uo.GetName()
-
- var ro *read_unstructured.Unstructured
- if ns {
- ro, err = rcl.Namespace(rnamespace).Get(ctx, rname, read_v1metav1.GetOptions{})
- } else {
- ro, err = rcl.Get(ctx, rname, read_v1metav1.GetOptions{})
- }
- if err != nil {
- if read_errorsapierrors.IsNotFound(err) {
- return resp, nil
- }
- d := read_tfprotov5.Diagnostic{
- Severity: read_tfprotov5.DiagnosticSeverityError,
- Summary: read_fmt.Sprintf("Cannot GET resource %s", dump(co)),
- Detail: err.Error(),
- }
- resp.Diagnostics = append(resp.Diagnostics, &d)
- return resp, nil
- }
-
- fo := RemoveServerSideFields(ro.Object)
- nobj, err := read_payload.ToTFValue(fo, objectType, th, read_tftypes.NewAttributePath())
- if err != nil {
- return resp, err
- }
-
- nobj, err = read_morph.DeepUnknown(objectType, nobj, read_tftypes.NewAttributePath())
- if err != nil {
- return resp, err
- }
-
- rawState := make(map[string]read_tftypes.Value)
- err = currentState.As(&rawState)
- if err != nil {
- return resp, err
- }
- rawState["object"] = read_morph.UnknownToNull(nobj)
-
- nsVal := read_tftypes.NewValue(currentState.Type(), rawState)
- newState, err := read_tfprotov5.NewDynamicValue(nsVal.Type(), nsVal)
- if err != nil {
- return resp, err
- }
- resp.NewState = &newState
- return resp, nil
-}
-
-func GVRFromUnstructured(o *resource_unstructured.Unstructured, m resource_meta.RESTMapper) (resource_schema.GroupVersionResource, error) {
- apv := o.GetAPIVersion()
- kind := o.GetKind()
- gv, err := resource_schema.ParseGroupVersion(apv)
- if err != nil {
- return resource_schema.GroupVersionResource{}, err
- }
- mapping, err := m.RESTMapping(gv.WithKind(kind).GroupKind(), gv.Version)
- if err != nil {
- return resource_schema.GroupVersionResource{}, err
- }
- return mapping.Resource, err
-}
-
-func GVKFromTftypesObject(in *resource_tftypes.Value, m resource_meta.RESTMapper) (resource_schema.GroupVersionKind, error) {
- var obj map[string]resource_tftypes.Value
- err := in.As(&obj)
- if err != nil {
- return resource_schema.GroupVersionKind{}, err
- }
- var apv string
- var kind string
- err = obj["apiVersion"].As(&apv)
- if err != nil {
- return resource_schema.GroupVersionKind{}, err
- }
- err = obj["kind"].As(&kind)
- if err != nil {
- return resource_schema.GroupVersionKind{}, err
- }
- gv, err := resource_schema.ParseGroupVersion(apv)
- if err != nil {
- return resource_schema.GroupVersionKind{}, err
- }
- mappings, err := m.RESTMappings(gv.WithKind(kind).GroupKind())
- if err != nil {
- return resource_schema.GroupVersionKind{}, err
- }
- for _, m := range mappings {
- if m.GroupVersionKind.GroupVersion().String() == apv {
- return m.GroupVersionKind, nil
- }
- }
- return resource_schema.GroupVersionKind{}, resource_errors.New("cannot select exact GV from REST mapper")
-}
-
-func IsResourceNamespaced(gvk resource_schema.GroupVersionKind, m resource_meta.RESTMapper) (bool, error) {
- rm, err := m.RESTMapping(gvk.GroupKind(), gvk.Version)
- if err != nil {
- return false, err
- }
- if rm.Scope.Name() == resource_meta.RESTScopeNameNamespace {
- return true, nil
- }
- return false, nil
-}
-
-func (ps *RawProviderServer) TFTypeFromOpenAPI(ctx resource_context.Context, gvk resource_schema.GroupVersionKind, status bool) (resource_tftypes.Type, map[string]string, error) {
- var tsch resource_tftypes.Type
- var hints map[string]string
-
- oapi, err := ps.getOAPIv2Foundry()
- if err != nil {
- return nil, hints, resource_fmt.Errorf("cannot get OpenAPI foundry: %s", err)
- }
-
- crdSchema, err := ps.lookUpGVKinCRDs(ctx, gvk)
- if err != nil {
- return nil, hints, resource_fmt.Errorf("failed to look up GVK [%s] among available CRDs: %s", gvk.String(), err)
- }
- if crdSchema != nil {
- js, err := resource_json.Marshal(resource_openapi.SchemaToSpec("", crdSchema.(map[string]interface{})))
- if err != nil {
- return nil, hints, resource_fmt.Errorf("CRD schema fails to marshal into JSON: %s", err)
- }
- oapiv3, err := resource_openapi.NewFoundryFromSpecV3(js)
- if err != nil {
- return nil, hints, err
- }
- tsch, hints, err = oapiv3.GetTypeByGVK(gvk)
- if err != nil {
- return nil, hints, resource_fmt.Errorf("failed to generate tftypes for GVK [%s] from CRD schema: %s", gvk.String(), err)
- }
- }
- if tsch == nil {
-
- tsch, hints, err = oapi.GetTypeByGVK(gvk)
- if err != nil {
- return nil, hints, resource_fmt.Errorf("cannot get resource type from OpenAPI (%s): %s", gvk.String(), err)
- }
- }
-
- if tsch.Is(resource_tftypes.Object{}) && !status {
- ot := tsch.(resource_tftypes.Object)
- atts := make(map[string]resource_tftypes.Type)
- for k, t := range ot.AttributeTypes {
- if k != "status" {
- atts[k] = t
- }
- }
-
- if _, ok := atts["apiVersion"]; !ok {
- atts["apiVersion"] = resource_tftypes.String
- }
- if _, ok := atts["kind"]; !ok {
- atts["kind"] = resource_tftypes.String
- }
- metaType, _, err := oapi.GetTypeByGVK(resource_openapi.ObjectMetaGVK)
- if err != nil {
- return nil, hints, resource_fmt.Errorf("failed to generate tftypes for v1.ObjectMeta: %s", err)
- }
- atts["metadata"] = metaType.(resource_tftypes.Object)
-
- tsch = resource_tftypes.Object{AttributeTypes: atts}
- }
-
- return tsch, hints, nil
-}
-
-func mapRemoveNulls(in map[string]interface{}) map[string]interface{} {
- for k, v := range in {
- switch tv := v.(type) {
- case []interface{}:
- in[k] = sliceRemoveNulls(tv)
- case map[string]interface{}:
- in[k] = mapRemoveNulls(tv)
- default:
- if v == nil {
- delete(in, k)
- }
- }
- }
- return in
-}
-
-func sliceRemoveNulls(in []interface{}) []interface{} {
- s := []interface{}{}
- for _, v := range in {
- switch tv := v.(type) {
- case []interface{}:
- s = append(s, sliceRemoveNulls(tv))
- case map[string]interface{}:
- s = append(s, mapRemoveNulls(tv))
- default:
- if v != nil {
- s = append(s, v)
- }
- }
- }
- return s
-}
-
-func RemoveServerSideFields(in map[string]interface{}) map[string]interface{} {
-
- delete(in, "status")
-
- resource_meta := in["metadata"].(map[string]interface{})
-
- delete(resource_meta, "uid")
- delete(resource_meta, "creationTimestamp")
- delete(resource_meta, "resourceVersion")
- delete(resource_meta, "generation")
- delete(resource_meta, "selfLink")
-
- delete(resource_meta, "managedFields")
-
- return in
-}
-
-func (ps *RawProviderServer) lookUpGVKinCRDs(ctx resource_context.Context, gvk resource_schema.GroupVersionKind) (interface{}, error) {
- c, err := ps.getDynamicClient()
- if err != nil {
- return nil, err
- }
- m, err := ps.getRestMapper()
- if err != nil {
- return nil, err
- }
-
- crd := resource_schema.GroupKind{Group: "apiextensions.k8s.io", Kind: "CustomResourceDefinition"}
- crms, err := m.RESTMappings(crd)
- if err != nil {
- return nil, resource_fmt.Errorf("could not extract resource version mappings for apiextensions.k8s.io.CustomResourceDefinition: %s", err)
- }
-
- for _, crm := range crms {
- crdRes, err := c.Resource(crm.Resource).List(ctx, resource_v1v1.ListOptions{})
- if err != nil {
- return nil, err
- }
-
- for _, r := range crdRes.Items {
- spec := r.Object["spec"].(map[string]interface{})
- if spec == nil {
- continue
- }
- grp := spec["group"].(string)
- if grp != gvk.Group {
- continue
- }
- names := spec["names"]
- if names == nil {
- continue
- }
- kind := names.(map[string]interface{})["kind"]
- if kind != gvk.Kind {
- continue
- }
- ver := spec["versions"]
- if ver == nil {
- ver = spec["version"]
- if ver == nil {
- continue
- }
- }
- for _, rv := range ver.([]interface{}) {
- if rv == nil {
- continue
- }
- v := rv.(map[string]interface{})
- if v["name"] == gvk.Version {
- s, ok := v["schema"].(map[string]interface{})
- if !ok {
- return nil, nil
- }
- return s["openAPIV3Schema"], nil
- }
- }
- }
- }
- return nil, nil
-}
-
-var privateStateSchema resource_tftypes.Object = resource_tftypes.Object{AttributeTypes: map[string]resource_tftypes.Type{
- "IsImported": resource_tftypes.Bool,
-}}
-
-func getPrivateStateValue(p []byte) (ps map[string]resource_tftypes.Value, err error) {
- if p == nil {
- err = resource_errors.New("private state value is nil")
- return
- }
- pv, err := resource_tftypes.ValueFromMsgPack(p, privateStateSchema)
- err = pv.As(&ps)
- return
-}
-
-func init() {
- server_install.Install(server_scheme.Scheme)
-}
-
-type RawProviderServer struct {
- logger server_hclog.Logger
- clientConfig *server_rest.Config
- dynamicClient server_dynamic.Interface
- discoveryClient server_discovery.DiscoveryInterface
- restMapper server_meta.RESTMapper
- restClient server_rest.Interface
- OAPIFoundry server_openapi.Foundry
-
- providerEnabled bool
- hostTFVersion string
-}
-
-func dump(v interface{}) server_hclog.Format {
- return server_hclog.Fmt("%v", v)
-}
-
-func (s *RawProviderServer) PrepareProviderConfig(ctx server_context.Context, req *server_tfprotov5.PrepareProviderConfigRequest) (*server_tfprotov5.PrepareProviderConfigResponse, error) {
- s.logger.Trace("[PrepareProviderConfig][Request]\n%s\n", dump(*req))
- resp := &server_tfprotov5.PrepareProviderConfigResponse{}
- return resp, nil
-}
-
-func (s *RawProviderServer) ValidateDataSourceConfig(ctx server_context.Context, req *server_tfprotov5.ValidateDataSourceConfigRequest) (*server_tfprotov5.ValidateDataSourceConfigResponse, error) {
- s.logger.Trace("[ValidateDataSourceConfig][Request]\n%s\n", dump(*req))
- resp := &server_tfprotov5.ValidateDataSourceConfigResponse{}
- return resp, nil
-}
-
-func (s *RawProviderServer) StopProvider(ctx server_context.Context, req *server_tfprotov5.StopProviderRequest) (*server_tfprotov5.StopProviderResponse, error) {
- s.logger.Trace("[StopProvider][Request]\n%s\n", dump(*req))
-
- return nil, server_status.Errorf(server_codes.Unimplemented, "method Stop not implemented")
-}
-
-func (s *RawProviderServer) UpgradeResourceState(ctx upgrade_state_context.Context, req *upgrade_state_tfprotov5.UpgradeResourceStateRequest) (*upgrade_state_tfprotov5.UpgradeResourceStateResponse, error) {
- resp := &upgrade_state_tfprotov5.UpgradeResourceStateResponse{}
- resp.Diagnostics = []*upgrade_state_tfprotov5.Diagnostic{}
-
- sch := GetProviderResourceSchema()
- rt := GetObjectTypeFromSchema(sch[req.TypeName])
-
- rv, err := req.RawState.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &upgrade_state_tfprotov5.Diagnostic{
- Severity: upgrade_state_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal old state during upgrade",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- cd := s.checkValidCredentials(ctx)
- if len(cd) > 0 {
- us, err := upgrade_state_tfprotov5.NewDynamicValue(rt, rv)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &upgrade_state_tfprotov5.Diagnostic{
- Severity: upgrade_state_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to encode new state during upgrade",
- Detail: err.Error(),
- })
- }
- resp.UpgradedState = &us
-
- return resp, nil
- }
-
- var cs map[string]upgrade_state_tftypes.Value
- err = rv.As(&cs)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &upgrade_state_tfprotov5.Diagnostic{
- Severity: upgrade_state_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract values from old state during upgrade",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- obj, ok := cs["object"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &upgrade_state_tfprotov5.Diagnostic{
- Severity: upgrade_state_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to find object value in existing resource state",
- })
- return resp, nil
- }
-
- m, err := s.getRestMapper()
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics,
- &upgrade_state_tfprotov5.Diagnostic{
- Severity: upgrade_state_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to retrieve Kubernetes RESTMapper client during state upgrade",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- gvk, err := GVKFromTftypesObject(&obj, m)
- if err != nil {
- return resp, upgrade_state_fmt.Errorf("failed to determine resource GVK: %s", err)
- }
-
- tsch, _, err := s.TFTypeFromOpenAPI(ctx, gvk, false)
- if err != nil {
- return resp, upgrade_state_fmt.Errorf("failed to determine resource type ID: %s", err)
- }
-
- morphedObject, d := upgrade_state_morph.ValueToType(obj, tsch, upgrade_state_tftypes.NewAttributePath())
- if len(d) > 0 {
- resp.Diagnostics = append(resp.Diagnostics, d...)
- for i := range d {
- if d[i].Severity == upgrade_state_tfprotov5.DiagnosticSeverityError {
- return resp, nil
- }
- }
- }
- s.logger.Debug("[UpgradeResourceState]", "morphed object", dump(morphedObject))
-
- cs["object"] = obj
-
- newStateVal := upgrade_state_tftypes.NewValue(rv.Type(), cs)
-
- us, err := upgrade_state_tfprotov5.NewDynamicValue(rt, newStateVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &upgrade_state_tfprotov5.Diagnostic{
- Severity: upgrade_state_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to encode new state during upgrade",
- Detail: err.Error(),
- })
- }
- resp.UpgradedState = &us
-
- return resp, nil
-}
-
-func (s *RawProviderServer) ValidateResourceTypeConfig(ctx validate_context.Context, req *validate_tfprotov5.ValidateResourceTypeConfigRequest) (*validate_tfprotov5.ValidateResourceTypeConfigResponse, error) {
- resp := &validate_tfprotov5.ValidateResourceTypeConfigResponse{}
- requiredKeys := []string{"apiVersion", "kind", "metadata"}
- forbiddenKeys := []string{"status"}
-
- rt, err := GetResourceType(req.TypeName)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine resource type",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- config, err := req.Config.Unmarshal(rt)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to unmarshal resource state",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- att := validate_tftypes.NewAttributePath()
- att = att.WithAttributeName("manifest")
-
- configVal := make(map[string]validate_tftypes.Value)
- err = config.As(&configVal)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to extract resource state from SDK value",
- Detail: err.Error(),
- })
- return resp, nil
- }
-
- manifest, ok := configVal["manifest"]
- if !ok {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Manifest missing from resource configuration",
- Detail: "A manifest attribute containing a valid Kubernetes resource configuration is required.",
- Attribute: att,
- })
- return resp, nil
- }
-
- rawManifest := make(map[string]validate_tftypes.Value)
- err = manifest.As(&rawManifest)
- if err != nil {
- if err.Error() == "unmarshaling unknown values is not supported" {
-
- return resp, nil
- }
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: `Failed to extract "manifest" attribute value from resource configuration`,
- Detail: err.Error(),
- Attribute: att,
- })
- return resp, nil
- }
-
- for _, key := range requiredKeys {
- if _, present := rawManifest[key]; !present {
- kp := att.WithAttributeName(key)
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: `Attribute key missing from "manifest" value`,
- Detail: validate_fmt.Sprintf("'%s' attribute key is missing from manifest configuration", key),
- Attribute: kp,
- })
- }
- }
-
- for _, key := range forbiddenKeys {
- if _, present := rawManifest[key]; present {
- kp := att.WithAttributeName(key)
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: `Forbidden attribute key in "manifest" value`,
- Detail: validate_fmt.Sprintf("'%s' attribute key is not allowed in manifest configuration", key),
- Attribute: kp,
- })
- }
- }
-
- timeouts := s.getTimeouts(configVal)
- path := validate_tftypes.NewAttributePath().WithAttributeName("timeouts")
- for k, v := range timeouts {
- _, err := validate_time.ParseDuration(v)
- if err != nil {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: validate_fmt.Sprintf("Error parsing timeout for %q", k),
- Detail: err.Error(),
- Attribute: path.WithAttributeName(k),
- })
- }
- }
-
- if wait, ok := configVal["wait"]; ok && !wait.IsNull() {
- var waitBlock []validate_tftypes.Value
- wait.As(&waitBlock)
- if len(waitBlock) > 0 {
- var w map[string]validate_tftypes.Value
- waitBlock[0].As(&w)
- waiters := []string{}
- for k, ww := range w {
- if !ww.IsNull() {
- if k == "condition" {
- var cb []validate_tftypes.Value
- ww.As(&cb)
- if len(cb) == 0 {
- continue
- }
- }
- waiters = append(waiters, k)
- }
- }
- if len(waiters) > 1 {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Invalid wait configuration",
- Detail: validate_fmt.Sprintf(`You may only set one of "%s".`, validate_strings.Join(waiters, "\", \"")),
- Attribute: validate_tftypes.NewAttributePath().WithAttributeName("wait"),
- })
- }
- }
- }
- if waitFor, ok := configVal["wait_for"]; ok && !waitFor.IsNull() {
- resp.Diagnostics = append(resp.Diagnostics, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityWarning,
- Summary: "Deprecated Attribute",
- Detail: `The "wait_for" attribute has been deprecated. Please use the "wait" block instead.`,
- Attribute: validate_tftypes.NewAttributePath().WithAttributeName("wait_for"),
- })
- }
-
- return resp, nil
-}
-
-func (s *RawProviderServer) validateResourceOnline(manifest *validate_tftypes.Value) (diags []*validate_tfprotov5.Diagnostic) {
- rm, err := s.getRestMapper()
- if err != nil {
- diags = append(diags, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to create K8s RESTMapper client",
- Detail: err.Error(),
- })
- return
- }
- gvk, err := GVKFromTftypesObject(manifest, rm)
- if err != nil {
- diags = append(diags, &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Summary: "Failed to determine GroupVersionResource for manifest",
- Detail: err.Error(),
- })
- return
- }
-
- ns, err := IsResourceNamespaced(gvk, rm)
- if err != nil {
- diags = append(diags,
- &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Detail: err.Error(),
- Summary: validate_fmt.Sprintf("Failed to discover scope of resource '%s'", gvk.String()),
- })
- return
- }
- nsPath := validate_tftypes.NewAttributePath()
- nsPath = nsPath.WithAttributeName("metadata").WithAttributeName("namespace")
- nsVal, restPath, err := validate_tftypes.WalkAttributePath(*manifest, nsPath)
- if ns {
- if err != nil || len(restPath.Steps()) > 0 {
- diags = append(diags,
- &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Detail: validate_fmt.Sprintf("Resources of type '%s' require a namespace", gvk.String()),
- Summary: "Namespace required",
- })
- return
- }
- if nsVal.(validate_tftypes.Value).IsNull() {
- diags = append(diags,
- &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Detail: validate_fmt.Sprintf("Namespace for resource '%s' cannot be nil", gvk.String()),
- Summary: "Namespace required",
- })
- }
- var nsStr string
- err := nsVal.(validate_tftypes.Value).As(&nsStr)
- if nsStr == "" && err == nil {
- diags = append(diags,
- &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Detail: validate_fmt.Sprintf("Namespace for resource '%s' cannot be empty", gvk.String()),
- Summary: "Namespace required",
- })
- }
- } else {
- if err == nil && len(restPath.Steps()) == 0 && !nsVal.(validate_tftypes.Value).IsNull() {
- diags = append(diags,
- &validate_tfprotov5.Diagnostic{
- Severity: validate_tfprotov5.DiagnosticSeverityError,
- Detail: validate_fmt.Sprintf("Resources of type '%s' cannot have a namespace", gvk.String()),
- Summary: "Cluster level resource cannot take namespace",
- })
- }
- }
- return
-}
-
-const waiterSleepTime = 1 * waiter_time.Second
-
-func (s *RawProviderServer) waitForCompletion(ctx waiter_context.Context, waitForBlock waiter_tftypes.Value, rs waiter_dynamic.ResourceInterface, rname string, rtype waiter_tftypes.Type, th map[string]string) error {
- if waitForBlock.IsNull() || !waitForBlock.IsKnown() {
- return nil
- }
-
- waiter, err := NewResourceWaiter(rs, rname, rtype, th, waitForBlock, s.logger)
- if err != nil {
- return err
- }
- return waiter.Wait(ctx)
-}
-
-type Waiter interface {
- Wait(waiter_context.Context) error
-}
-
-func NewResourceWaiter(resource waiter_dynamic.ResourceInterface, resourceName string, resourceType waiter_tftypes.Type, th map[string]string, waitForBlock waiter_tftypes.Value, hl waiter_hclog.Logger) (Waiter, error) {
- var waitForBlockVal map[string]waiter_tftypes.Value
- err := waitForBlock.As(&waitForBlockVal)
- if err != nil {
- return nil, err
- }
-
- if v, ok := waitForBlockVal["rollout"]; ok {
- var rollout bool
- v.As(&rollout)
- if rollout {
- return &RolloutWaiter{
- resource,
- resourceName,
- hl,
- }, nil
- }
- }
-
- if v, ok := waitForBlockVal["condition"]; ok {
- var conditionsBlocks []waiter_tftypes.Value
- v.As(&conditionsBlocks)
- if len(conditionsBlocks) > 0 {
- return &ConditionsWaiter{
- resource,
- resourceName,
- conditionsBlocks,
- hl,
- }, nil
- }
- }
-
- fields, ok := waitForBlockVal["fields"]
- if !ok || fields.IsNull() || !fields.IsKnown() {
- return &NoopWaiter{}, nil
- }
-
- if !fields.Type().Is(waiter_tftypes.Map{}) {
- return nil, waiter_fmt.Errorf(`"fields" should be a map of strings`)
- }
-
- var vm map[string]waiter_tftypes.Value
- fields.As(&vm)
- var matchers []FieldMatcher
-
- for k, v := range vm {
- var expr string
- v.As(&expr)
- var re *waiter_regexp.Regexp
- if expr == "*" {
-
- re = waiter_regexp.MustCompile("(.*)?")
- } else {
- var err error
- re, err = waiter_regexp.Compile(expr)
- if err != nil {
- return nil, waiter_fmt.Errorf("invalid regular expression: %q", expr)
- }
- }
-
- p, err := FieldPathToTftypesPath(k)
- if err != nil {
- return nil, err
- }
- matchers = append(matchers, FieldMatcher{p, re})
- }
-
- return &FieldWaiter{
- resource,
- resourceName,
- resourceType,
- th,
- matchers,
- hl,
- }, nil
-
-}
-
-type FieldMatcher struct {
- path *waiter_tftypes.AttributePath
- valueMatcher *waiter_regexp.Regexp
-}
-
-type FieldWaiter struct {
- resource waiter_dynamic.ResourceInterface
- resourceName string
- resourceType waiter_tftypes.Type
- typeHints map[string]string
- fieldMatchers []FieldMatcher
- logger waiter_hclog.Logger
-}
-
-func (w *FieldWaiter) Wait(ctx waiter_context.Context) error {
- w.logger.Info("[ApplyResourceChange][Wait] Waiting until ready...\n")
- for {
- if deadline, ok := ctx.Deadline(); ok {
- if waiter_time.Now().After(deadline) {
- return waiter_context.DeadlineExceeded
- }
- }
-
- res, err := w.resource.Get(ctx, w.resourceName, waiter_v1v1.GetOptions{})
- if err != nil {
- return err
- }
- if waiter_errors.IsGone(err) {
- return waiter_fmt.Errorf("resource was deleted")
- }
- resObj := res.Object
- meta := resObj["metadata"].(map[string]interface{})
- delete(meta, "managedFields")
-
- w.logger.Trace("[ApplyResourceChange][Wait]", "API Response", resObj)
-
- obj, err := waiter_payload.ToTFValue(resObj, w.resourceType, w.typeHints, waiter_tftypes.NewAttributePath())
- if err != nil {
- return err
- }
-
- done, err := func(obj waiter_tftypes.Value) (bool, error) {
- for _, m := range w.fieldMatchers {
- vi, rp, err := waiter_tftypes.WalkAttributePath(obj, m.path)
- if err != nil {
- return false, err
- }
- if len(rp.Steps()) > 0 {
- return false, waiter_fmt.Errorf("attribute not present at path '%s'", m.path.String())
- }
-
- var s string
- v := vi.(waiter_tftypes.Value)
- switch {
- case v.Type().Is(waiter_tftypes.String):
- v.As(&s)
- case v.Type().Is(waiter_tftypes.Bool):
- var vb bool
- v.As(&vb)
- s = waiter_fmt.Sprintf("%t", vb)
- case v.Type().Is(waiter_tftypes.Number):
- var f waiter_big.Float
- v.As(&f)
- if f.IsInt() {
- i, _ := f.Int64()
- s = waiter_fmt.Sprintf("%d", i)
- } else {
- i, _ := f.Float64()
- s = waiter_fmt.Sprintf("%f", i)
- }
- default:
- return true, waiter_fmt.Errorf("wait_for: cannot match on type %q", v.Type().String())
- }
-
- if !m.valueMatcher.Match([]byte(s)) {
- return false, nil
- }
- }
-
- return true, nil
- }(obj)
-
- if done {
- w.logger.Info("[ApplyResourceChange][Wait] Done waiting.\n")
- return err
- }
-
- waiter_time.Sleep(waiterSleepTime)
- }
-}
-
-type NoopWaiter struct{}
-
-func (w *NoopWaiter) Wait(_ waiter_context.Context) error {
- return nil
-}
-
-func FieldPathToTftypesPath(fieldPath string) (*waiter_tftypes.AttributePath, error) {
- t, d := waiter_hclsyntax.ParseTraversalAbs([]byte(fieldPath), "", waiter_hclhcl.Pos{Line: 1, Column: 1})
- if d.HasErrors() {
- return waiter_tftypes.NewAttributePath(), waiter_fmt.Errorf("invalid field path %q: %s", fieldPath, d.Error())
- }
-
- path := waiter_tftypes.NewAttributePath()
- for _, p := range t {
- switch p.(type) {
- case waiter_hclhcl.TraverseRoot:
- path = path.WithAttributeName(p.(waiter_hclhcl.TraverseRoot).Name)
- case waiter_hclhcl.TraverseIndex:
- indexKey := p.(waiter_hclhcl.TraverseIndex).Key
- indexKeyType := indexKey.Type()
- if indexKeyType.Equals(waiter_cty.String) {
- path = path.WithElementKeyString(indexKey.AsString())
- } else if indexKeyType.Equals(waiter_cty.Number) {
- f := indexKey.AsBigFloat()
- if f.IsInt() {
- i, _ := f.Int64()
- path = path.WithElementKeyInt(int(i))
- } else {
- return waiter_tftypes.NewAttributePath(), waiter_fmt.Errorf("index in field path must be an integer")
- }
- } else {
- return waiter_tftypes.NewAttributePath(), waiter_fmt.Errorf("unsupported type in field path: %s", indexKeyType.FriendlyName())
- }
- case waiter_hclhcl.TraverseAttr:
- path = path.WithAttributeName(p.(waiter_hclhcl.TraverseAttr).Name)
- case waiter_hclhcl.TraverseSplat:
- return waiter_tftypes.NewAttributePath(), waiter_fmt.Errorf("splat is not supported")
- }
- }
-
- return path, nil
-}
-
-type RolloutWaiter struct {
- resource waiter_dynamic.ResourceInterface
- resourceName string
- logger waiter_hclog.Logger
-}
-
-func (w *RolloutWaiter) Wait(ctx waiter_context.Context) error {
- w.logger.Info("[ApplyResourceChange][Wait] Waiting until rollout complete...\n")
- for {
- if deadline, ok := ctx.Deadline(); ok {
- if waiter_time.Now().After(deadline) {
- return waiter_context.DeadlineExceeded
- }
- }
-
- res, err := w.resource.Get(ctx, w.resourceName, waiter_v1v1.GetOptions{})
- if err != nil {
- return err
- }
- if waiter_errors.IsGone(err) {
- return waiter_fmt.Errorf("resource was deleted")
- }
-
- gk := res.GetObjectKind().GroupVersionKind().GroupKind()
- statusViewer, err := waiter_polymorphichelpers.StatusViewerFor(gk)
- if err != nil {
- return waiter_fmt.Errorf("error getting resource status: %v", err)
- }
-
- _, done, err := statusViewer.Status(res, 0)
- if err != nil {
- return waiter_fmt.Errorf("error getting resource status: %v", err)
- }
-
- if done {
- break
- }
-
- waiter_time.Sleep(waiterSleepTime)
- }
-
- w.logger.Info("[ApplyResourceChange][Wait] Rollout complete\n")
- return nil
-}
-
-type ConditionsWaiter struct {
- resource waiter_dynamic.ResourceInterface
- resourceName string
- conditions []waiter_tftypes.Value
- logger waiter_hclog.Logger
-}
-
-func (w *ConditionsWaiter) Wait(ctx waiter_context.Context) error {
- w.logger.Info("[ApplyResourceChange][Wait] Waiting for conditions...\n")
-
- for {
- if deadline, ok := ctx.Deadline(); ok {
- if waiter_time.Now().After(deadline) {
- return waiter_context.DeadlineExceeded
- }
- }
-
- res, err := w.resource.Get(ctx, w.resourceName, waiter_v1v1.GetOptions{})
- if err != nil {
- return err
- }
- if waiter_errors.IsGone(err) {
- return waiter_fmt.Errorf("resource was deleted")
- }
-
- status := res.Object["status"].(map[string]interface{})
- conditions := status["conditions"].([]interface{})
- conditionsMet := true
- for _, c := range w.conditions {
- var condition map[string]waiter_tftypes.Value
- c.As(&condition)
- var conditionType, conditionStatus string
- condition["type"].As(&conditionType)
- condition["status"].As(&conditionStatus)
- conditionMet := false
- for _, cc := range conditions {
- ccc := cc.(map[string]interface{})
- if ccc["type"].(string) == conditionType {
- conditionMet = ccc["status"].(string) == conditionStatus
- break
- }
- }
- conditionsMet = conditionsMet && conditionMet
- }
-
- if conditionsMet {
- break
- }
-
- waiter_time.Sleep(waiterSleepTime)
- }
-
- w.logger.Info("[ApplyResourceChange][Wait] All conditions met.\n")
- return nil
-}
diff --git a/contrib/terraform-provider-kubeproxy/go.mod b/contrib/terraform-provider-kubeproxy/go.mod
deleted file mode 100644
index 80c9dabd8d..0000000000
--- a/contrib/terraform-provider-kubeproxy/go.mod
+++ /dev/null
@@ -1,193 +0,0 @@
-module github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy
-
-go 1.21
-
-require (
- github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320
- github.com/hashicorp/go-hclog v1.4.0
- github.com/hashicorp/go-plugin v1.4.8
- github.com/hashicorp/hcl/v2 v2.15.0
- github.com/hashicorp/terraform-exec v0.17.3
- github.com/hashicorp/terraform-plugin-go v0.14.2
- github.com/hashicorp/terraform-plugin-log v0.7.0
- github.com/hashicorp/terraform-plugin-mux v0.7.0
- github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1
- github.com/hashicorp/terraform-provider-kubernetes v1.13.4-0.20220907163743-48d1f3528353
- github.com/mitchellh/go-homedir v1.1.0
- github.com/mitchellh/go-testing-interface v1.14.1
- github.com/synapsecns/sanguine/contrib/tfcore v0.0.0-00010101000000-000000000000
- github.com/zclconf/go-cty v1.12.1
- golang.org/x/exp v0.0.0-20240213143201-ec583247a57a
- golang.org/x/mod v0.15.0
- golang.org/x/tools v0.18.0
- google.golang.org/grpc v1.60.1
- k8s.io/apiextensions-apiserver v0.25.5
- k8s.io/apimachinery v0.25.5
- k8s.io/client-go v0.25.5
- k8s.io/kubectl v0.25.5
-)
-
-require (
- bitbucket.org/creachadair/stringset v0.0.8 // indirect
- cloud.google.com/go v0.111.0 // indirect
- cloud.google.com/go/bigtable v1.10.1 // 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.5 // indirect
- cloud.google.com/go/longrunning v0.5.4 // indirect
- dario.cat/mergo v1.0.0 // indirect
- github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
- github.com/Azure/go-autorest v14.2.0+incompatible // indirect
- github.com/Azure/go-autorest/autorest v0.11.28 // indirect
- github.com/Azure/go-autorest/autorest/adal v0.9.21 // indirect
- github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
- github.com/Azure/go-autorest/logger v0.2.1 // indirect
- github.com/Azure/go-autorest/tracing v0.6.0 // indirect
- github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518 // indirect
- github.com/MakeNowJust/heredoc 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/agext/levenshtein v1.2.3 // indirect
- github.com/apparentlymart/go-cidr v1.1.0 // indirect
- github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect
- github.com/cenkalti/backoff v2.2.1+incompatible // indirect
- github.com/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 // indirect
- github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/docker/cli v20.10.17+incompatible // indirect
- github.com/docker/docker-credential-helpers v0.7.0 // indirect
- github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a // indirect
- github.com/emicklei/go-restful/v3 v3.10.1 // indirect
- github.com/emirpasic/gods v1.18.1 // indirect
- github.com/evanphx/json-patch v5.6.0+incompatible // indirect
- github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
- github.com/fatih/camelcase v1.0.0 // indirect
- github.com/fatih/color v1.13.0 // indirect
- github.com/fsnotify/fsnotify v1.6.0 // indirect
- github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4 // indirect
- github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 // indirect
- github.com/gartnera/gcloud v0.0.15 // indirect
- github.com/getkin/kin-openapi v0.76.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.5.0 // indirect
- github.com/go-logr/logr v1.4.1 // indirect
- github.com/go-logr/stdr v1.2.2 // indirect
- github.com/go-openapi/jsonpointer v0.19.5 // indirect
- github.com/go-openapi/jsonreference v0.20.0 // indirect
- github.com/go-openapi/swag v0.22.3 // indirect
- github.com/gogo/protobuf v1.3.3 // indirect
- github.com/golang-jwt/jwt/v4 v4.5.0 // indirect
- github.com/golang/glog v1.1.2 // indirect
- github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
- github.com/golang/protobuf v1.5.3 // indirect
- github.com/google/btree v1.1.2 // indirect
- github.com/google/gnostic v0.6.9 // indirect
- github.com/google/go-cmp v0.6.0 // indirect
- github.com/google/gofuzz v1.2.0 // indirect
- github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect
- github.com/google/s2a-go v0.1.7 // indirect
- github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // 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/gorilla/websocket v1.5.1 // indirect
- github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // indirect
- github.com/hashicorp/errwrap v1.1.0 // indirect
- github.com/hashicorp/go-checkpoint v0.5.0 // indirect
- github.com/hashicorp/go-cleanhttp v0.5.2 // indirect
- github.com/hashicorp/go-multierror v1.1.1 // indirect
- github.com/hashicorp/go-uuid v1.0.3 // indirect
- github.com/hashicorp/go-version v1.6.0 // indirect
- github.com/hashicorp/hc-install v0.4.0 // indirect
- github.com/hashicorp/logutils v1.0.0 // indirect
- github.com/hashicorp/terraform-json v0.14.0 // indirect
- github.com/hashicorp/terraform-provider-google/v4 v4.2.0 // indirect
- github.com/hashicorp/terraform-registry-address v0.1.0 // indirect
- github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect
- github.com/hashicorp/yamux v0.1.1 // indirect
- github.com/imdario/mergo v0.3.13 // indirect
- github.com/inconshreveable/mousetrap v1.1.0 // indirect
- github.com/jinzhu/copier v0.2.9 // 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
- github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f // indirect
- github.com/kylelemons/godebug v1.1.0 // indirect
- github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // 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.20 // indirect
- github.com/mitchellh/copystructure v1.2.0 // indirect
- github.com/mitchellh/go-wordwrap v1.0.1 // indirect
- github.com/mitchellh/hashstructure v1.1.0 // indirect
- github.com/mitchellh/mapstructure v1.5.0 // indirect
- github.com/mitchellh/reflectwalk v1.0.2 // indirect
- github.com/moby/spdystream v0.2.0 // indirect
- github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect
- github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
- github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
- github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
- github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
- github.com/oklog/run v1.1.0 // indirect
- github.com/onsi/ginkgo v1.16.5 // indirect
- github.com/onsi/ginkgo/v2 v2.15.0 // indirect
- github.com/onsi/gomega v1.30.0 // indirect
- github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
- github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 // indirect
- github.com/pjbgf/sha1cd v0.3.0 // indirect
- github.com/pkg/errors v0.9.1 // indirect
- github.com/robfig/cron v1.2.0 // indirect
- github.com/russross/blackfriday v1.6.0 // indirect
- github.com/sirupsen/logrus v1.9.0 // indirect
- github.com/skeema/knownhosts v1.2.1 // indirect
- github.com/spf13/cobra v1.6.1 // indirect
- github.com/spf13/pflag v1.0.5 // indirect
- github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect
- github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
- github.com/vmihailenco/tagparser v0.1.2 // indirect
- github.com/xanzy/ssh-agent v0.3.3 // indirect
- github.com/xlab/treeprint v1.2.0 // indirect
- go.opencensus.io v0.24.0 // indirect
- go.opentelemetry.io/otel v1.23.1 // indirect
- go.opentelemetry.io/otel/metric v1.23.1 // indirect
- go.opentelemetry.io/otel/trace v1.23.1 // indirect
- go.starlark.net v0.0.0-20221205180719-3fd0dac74452 // indirect
- golang.org/x/crypto v0.19.0 // indirect
- golang.org/x/net v0.21.0 // indirect
- golang.org/x/oauth2 v0.16.0 // indirect
- golang.org/x/sync v0.6.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
- golang.org/x/time v0.3.0 // indirect
- google.golang.org/api v0.149.0 // indirect
- google.golang.org/appengine v1.6.8 // indirect
- google.golang.org/genproto v0.0.0-20240102182953-50ed04b92917 // indirect
- google.golang.org/genproto/googleapis/api v0.0.0-20240108191215-35c7eff3a6b1 // indirect
- google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 // indirect
- google.golang.org/protobuf v1.32.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.25.5 // indirect
- k8s.io/cli-runtime v0.25.5 // indirect
- k8s.io/component-base v0.25.5 // indirect
- k8s.io/klog/v2 v2.80.1 // indirect
- k8s.io/kube-aggregator v0.23.5 // indirect
- k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715 // indirect
- k8s.io/utils v0.0.0-20221128185143-99ec85e7a448 // indirect
- sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
- sigs.k8s.io/kustomize/api v0.12.1 // indirect
- sigs.k8s.io/kustomize/kyaml v0.13.9 // indirect
- sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect
- sigs.k8s.io/yaml v1.3.0 // indirect
-)
-
-replace (
- github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
- github.com/synapsecns/sanguine/contrib/tfcore => ../tfcore
- golang.org/x/oauth2 => golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783
- k8s.io/kubectl => k8s.io/kubectl v0.24.2
-)
diff --git a/contrib/terraform-provider-kubeproxy/go.sum b/contrib/terraform-provider-kubeproxy/go.sum
deleted file mode 100644
index d2f53016b6..0000000000
--- a/contrib/terraform-provider-kubeproxy/go.sum
+++ /dev/null
@@ -1,1935 +0,0 @@
-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=
-bitbucket.org/creachadair/stringset v0.0.8 h1:gQqe4vs8XWgMyijfyKE6K8o4TcyGGrRXe0JvHgx5H+M=
-bitbucket.org/creachadair/stringset v0.0.8/go.mod h1:AgthVMyMxC/6FK1KBJ2ALdqkZObGN8hOetgpwXyMn34=
-cloud.google.com/go v0.26.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.60.0/go.mod h1:yw2G51M9IfRboUH61Us8GqCeF1PzPblB823Mn2q2eAU=
-cloud.google.com/go v0.61.0/go.mod h1:XukKJg4Y7QsUu0Hxg3qQKUWR4VuWivmyMK2+rUyxAqw=
-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.82.0/go.mod h1:vlKccHJGuFBFufnAnuB08dfEH9Y3H7dzDzRECFdC2TA=
-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.111.0 h1:YHLKNupSD1KqjDbQ3+LVdQ81h/UJbJyZG203cEfnQgM=
-cloud.google.com/go v0.111.0/go.mod h1:0mibmpKP1TyOOFYQY5izo0LnT+ecvOQ0Sg3OdmMiNRU=
-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/bigtable v1.10.1 h1:QKcRHeAsraxIlrdCZ3LLobXKBvITqcOEnSbHG2rzL9g=
-cloud.google.com/go/bigtable v1.10.1/go.mod h1:cyHeKlx6dcZCO0oSQucYdauseD8kIENGuDOJPKMCVg8=
-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.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/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk=
-cloud.google.com/go/iam v0.3.0/go.mod h1:XzJPvDayI+9zsASAFO68Hk07u3z+f+JrT2xXNdp4bnY=
-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.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg=
-cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI=
-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.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y=
-contrib.go.opencensus.io/exporter/stackdriver v0.13.4/go.mod h1:aXENhDJ1Y4lIg4EUaVTwzvYETVNZk10Pu26tevFKLUc=
-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/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8=
-github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
-github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs=
-github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
-github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA=
-github.com/Azure/go-autorest/autorest v0.11.28 h1:ndAExarwr5Y+GaHE6VCaY1kyS/HwwGGyuimVhWsHOEM=
-github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA=
-github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M=
-github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ=
-github.com/Azure/go-autorest/autorest/adal v0.9.21 h1:jjQnVFXPfekaqb8vIsv2G1lxshoW+oGv4MDlhRtnYZk=
-github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U=
-github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw=
-github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
-github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k=
-github.com/Azure/go-autorest/autorest/mocks v0.4.2 h1:PGN4EDXnuQbojHbU0UWoNvmu9AGVwYHG9/fkDYhtAfw=
-github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU=
-github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg=
-github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
-github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo=
-github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
-github.com/BurntSushi/toml v0.3.1/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/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518 h1:tFdFasG+VDpnn+BfVbZrfGcoH6pw6s7ODYlZlhTO3UM=
-github.com/GoogleCloudPlatform/declarative-resource-client-library v0.0.0-20211027225138-ef28ca390518/go.mod h1:oEeBHikdF/NrnUy0ornVaY1OT+jGvTqm+LQS0+ZDKzU=
-github.com/MakeNowJust/heredoc v0.0.0-20170808103936-bb23615498cd/go.mod h1:64YHyfSL2R96J44Nlwm39UHepQbyR5q10x7iYa1ks2E=
-github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ=
-github.com/MakeNowJust/heredoc v1.0.0/go.mod h1:mG5amYoWBHf8vpLOuehzbGGw0EHxpZZ6lCpQ4fNJ8LE=
-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/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0=
-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/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/OpenPeeDeeP/depguard v1.0.1/go.mod h1:xsIw86fROiiwelg+jB2uM9PiKihMMmUx/1V+TNhjQvM=
-github.com/ProtonMail/go-crypto v0.0.0-20210428141323-04723f9f07d7/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo=
-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/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg=
-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/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
-github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
-github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
-github.com/alcortesm/tgz v0.0.0-20161220082320-9c5fe88206d7/go.mod h1:6zEj6s6u/ghQa61ZWa/C2Aw3RkjiTBOix7dkqa1VLIs=
-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/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
-github.com/andybalholm/crlf v0.0.0-20171020200849-670099aa064f/go.mod h1:k8feO4+kXDxro6ErPXBRTJ/ro2mf0SsFG8s7doP9kJE=
-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/apparentlymart/go-cidr v1.0.1/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
-github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU=
-github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc=
-github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3/go.mod h1:oL81AME2rN47vu18xqj1S1jPIPuN7afo62yKTNn3XMM=
-github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0 h1:MzVXffFUye+ZcSR6opIgz9Co7WcDx6ZcY+RjfFHoA0I=
-github.com/apparentlymart/go-dump v0.0.0-20190214190832-042adf3cf4a0/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/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/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/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/augustoroman/hexdump v0.0.0-20190827031536-6506f4163e93 h1:z6k1vb5L2wqLK4SIk3fpUiXnhNWSZ6Oyy8AaLqr0B+A=
-github.com/augustoroman/hexdump v0.0.0-20190827031536-6506f4163e93/go.mod h1:ps2Vk8wMZarkeIPtUqW/FUvwVVdeRDbewMYz+EmuEgk=
-github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM=
-github.com/aws/aws-sdk-go v1.23.20/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/aws/aws-sdk-go v1.25.3/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.36.30/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
-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/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-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/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.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
-github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc=
-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/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
-github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
-github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/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/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/chai2010/gettext-go v0.0.0-20160711120539-c6fed771bfd5 h1:7aWHqerlJ41y6FOsEUvknqgXnGmJyJSbjhAWq5pO4F8=
-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/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/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/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/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/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 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-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/creachadair/staticfile v0.1.2/go.mod h1:a3qySzCIXEprDGxk6tSxSI+dBBdLzqeBOMhZ+o2d3pM=
-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/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY=
-github.com/creack/pty v1.1.18/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4=
-github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg=
-github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4=
-github.com/daixiang0/gci v0.2.8/go.mod h1:+4dZ7TISfSmqfAGv59ePaHfNzgGtIkHAhhdKggP1JAc=
-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/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/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
-github.com/dnaeon/go-vcr v1.2.0 h1:zHCHvJYTMh1N7xnV7zf1m1GPBF9Ad0Jk/whtQ1663qI=
-github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ=
-github.com/docker/cli v20.10.17+incompatible h1:eO2KS7ZFeov5UJeaDmIs1NFEDRf32PaqRpvoEkKBy5M=
-github.com/docker/cli v20.10.17+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
-github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
-github.com/docker/docker-credential-helpers v0.7.0 h1:xtCHsjxogADNZcdv1pKUHXryefjlVRqWqIhk/uXJp0A=
-github.com/docker/docker-credential-helpers v0.7.0/go.mod h1:rETQfLdHNT3foU5kuNkFR1R1V12OJRRO5lzt2D1b5X0=
-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-20230808193330-2592e75ae04a h1:mATvB/9r/3gvcejNsXKSkQ6lcIaNec2nyfOdlTBR2lU=
-github.com/elazarl/goproxy v0.0.0-20230808193330-2592e75ae04a/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/v3 v3.10.1 h1:rc42Y5YTp7Am7CS630D7JmhRjq4UlEUuEKfrDac4bSQ=
-github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
-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=
-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.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.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/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4=
-github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
-github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8=
-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/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/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/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM=
-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.0.0-20180920172122-f6adf94963e4 h1:R+19WKQClnfMXS60cP5BmMe1wjZ4u0evY2p2Ar0ZTXo=
-github.com/gammazero/deque v0.0.0-20180920172122-f6adf94963e4/go.mod h1:GeIq9qoE43YdGnDXURnmKTnGg15pQz4mYkXSTChbneI=
-github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92 h1:EipXK6U05IQ2wtuFRn4k3h0+2lXypzItoXGVyf4r9Io=
-github.com/gammazero/workerpool v0.0.0-20181230203049-86a96b5d5d92/go.mod h1:w9RqFVO2BM3xwWEcAB8Fwp0OviTBBEiRmSBDfbXnd3w=
-github.com/gartnera/gcloud v0.0.15 h1:/PkEnxPczVRS78MkMDz6wfdRR8YDDjzr0VF6ri6cGVs=
-github.com/gartnera/gcloud v0.0.15/go.mod h1:i9wWa1ndPbE8AhduqRMX9nAv9X9HqN9xgqydfEdFLGo=
-github.com/getkin/kin-openapi v0.76.0 h1:j77zg3Ec+k+r+GA3d8hBoXpAc6KX9TbBPrwQGBIy2sY=
-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 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/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.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/go.mod h1:5m20vg6GwYabIxaOonVkTdrILxQMpEShl1xiMF4ua+E=
-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.0.0/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-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/go.mod h1:pmpqyWchKfYfrkb/UVH4otLvyi/5gJlGI4Hb3ZqZ3W0=
-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.0.1/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
-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.1.0/go.mod h1:ZKfuPUoY1ZqIG4QG9BDBh3G4gLM5zvPuSJAozQrZuyM=
-github.com/go-git/go-git/v5 v5.4.2/go.mod h1:gQ1kArt6d+n+BGd+/B/I74HwRTLhth2+zti4ihgckDc=
-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-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-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/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.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.0/go.mod h1:Qa4Bsj2Vb+FAVeAKsLD8RLQ+YRJB8YDmOAKxaBQf7Ro=
-github.com/go-ole/go-ole v1.2.4/go.mod h1:XCwSNxSkXRo4vlyPy93sltvi/qJq0jqQhjqQNIwKuxM=
-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.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/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.22.3 h1:yMBqmnQ0gyZvEb/+KzuWZOXgllrXT4SADYbvDaXHv/g=
-github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14=
-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.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
-github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
-github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
-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-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/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/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
-github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
-github.com/golang-jwt/jwt/v4 v4.5.0 h1:7cYmW1XlMY7h7ii7UhUyChSgS5wUJEnm9uZVTGqOWzg=
-github.com/golang-jwt/jwt/v4 v4.5.0/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
-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-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/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=
-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.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
-github.com/golang/snappy v0.0.3/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/testing v0.0.0-20180327235837-af21d9c3145e/go.mod h1:0AA//k/eakGydO4jKRoRL2j92ZKSzTgj9tclaCrvXHk=
-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/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU=
-github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
-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/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/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.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/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-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=
-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-20210506205249-923b5ab0fc1a/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-20240207164012-fb44976bdcd5 h1:E/LAvt58di64hlYjx7AsNS6C/ysHWYo+2qPCZKTQhRo=
-github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik=
-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/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
-github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
-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/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.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.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8=
-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.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.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/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/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4=
-github.com/gookit/color v1.3.8/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ=
-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/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.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
-github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY=
-github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY=
-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-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
-github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
-github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79/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.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.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/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw=
-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 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-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU=
-github.com/hashicorp/go-checkpoint v0.5.0/go.mod h1:7nfLNL10NsxqO4iWuW6tWW0HjZuDrwkBuEQsVcpCOgg=
-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 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ=
-github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48=
-github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 h1:1/D3zfFHttUKaCaGKZ/dR2roBXv0vKbSCnssIldfQdI=
-github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320/go.mod h1:EiZBMaudVLy8fmjf9Npq1dq9RalhveqZG5w/yz3mHWs=
-github.com/hashicorp/go-getter v1.4.0/go.mod h1:7qxyCd8rBfcShwsvxgIguu4KbS3l8bUCwg2Umn7RjeY=
-github.com/hashicorp/go-getter v1.5.0/go.mod h1:a7z7NPPfNQpJWcn4rSWFtdrSldqLdLPEF3d8nFMsSLM=
-github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI=
-github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v0.15.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I=
-github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
-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-plugin v1.3.0/go.mod h1:F9eH4LrE/ZsRdbwhfjs9k9HoDUwAHnYtXdgmf1AVNs0=
-github.com/hashicorp/go-plugin v1.4.0/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ=
-github.com/hashicorp/go-plugin v1.4.8 h1:CHGwpxYDOttQOY7HOWgETU9dyVjOXzniXDqJcYJE1zM=
-github.com/hashicorp/go-plugin v1.4.8/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s=
-github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
-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-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
-github.com/hashicorp/go-uuid v1.0.3/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.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
-github.com/hashicorp/go-version v1.3.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=
-github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
-github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hc-install v0.4.0 h1:cZkRFr1WVa0Ty6x5fTvL1TuO1flul231rWkGH92oYYk=
-github.com/hashicorp/hc-install v0.4.0/go.mod h1:5d155H8EC5ewegao9A4PUTMNPZaq+TbOzkJJZ4vrXeI=
-github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
-github.com/hashicorp/hcl/v2 v2.3.0/go.mod h1:d+FwDBbOLvpAM3Z6J7gPj/VoAGkNe/gm352ZhjJ/Zv8=
-github.com/hashicorp/hcl/v2 v2.6.0/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY=
-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/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y=
-github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
-github.com/hashicorp/mdns v1.0.0/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-exec v0.12.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8=
-github.com/hashicorp/terraform-exec v0.13.0/go.mod h1:SGhto91bVRlgXQWcJ5znSz+29UZIa8kpBbkGwQ+g9E8=
-github.com/hashicorp/terraform-exec v0.17.3 h1:MX14Kvnka/oWGmIkyuyvL6POx25ZmKrjlaclkx3eErU=
-github.com/hashicorp/terraform-exec v0.17.3/go.mod h1:+NELG0EqQekJzhvikkeQsOAZpsw0cv/03rbeQJqscAI=
-github.com/hashicorp/terraform-json v0.8.0/go.mod h1:3defM4kkMfttwiE7VakJDwCd4R+umhSQnvJwORXbprE=
-github.com/hashicorp/terraform-json v0.12.0/go.mod h1:pmbq9o4EuL43db5+0ogX10Yofv1nozM+wskr/bGFJpI=
-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/terraform-plugin-go v0.1.0/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
-github.com/hashicorp/terraform-plugin-go v0.2.1/go.mod h1:10V6F3taeDWVAoLlkmArKttR3IULlRWFAGtQIQTIDr4=
-github.com/hashicorp/terraform-plugin-go v0.14.2 h1:rhsVEOGCnY04msNymSvbUsXfRLKh9znXZmHlf5e8mhE=
-github.com/hashicorp/terraform-plugin-go v0.14.2/go.mod h1:Q12UjumPNGiFsZffxOsA40Tlz1WVXt2Evh865Zj0+UA=
-github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R+Y2BQ0sRZftGKQs=
-github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
-github.com/hashicorp/terraform-plugin-mux v0.7.0 h1:wRbSYzg+v2sn5Mdee0UKm4YTt4wJG0LfSwtgNuBkglY=
-github.com/hashicorp/terraform-plugin-mux v0.7.0/go.mod h1:Ae30Mc5lz4d1awtiCbHP0YyvgBeiQ00Q1nAq0U3lb+I=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.4.0/go.mod h1:JBItawj+j8Ssla5Ib6BC/W9VQkOucBfnX7VRtyx1vw8=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.5.0/go.mod h1:z+cMZ0iswzZOahBJ3XmNWgWkVnAd2bl8g+FhyyuPDH4=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1 h1:zHcMbxY0+rFO9gY99elV/XC/UnQVg7FhRCbj1i5b7vM=
-github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.1/go.mod h1:+tNlb0wkfdsDJ7JEiERLz4HzM19HyiuIoGzTsM7rPpw=
-github.com/hashicorp/terraform-provider-google/v4 v4.2.0 h1:w0r/YEy7ZM5mTMAarRUpS7eyYrXTN5mazwHtLnEGAk8=
-github.com/hashicorp/terraform-provider-google/v4 v4.2.0/go.mod h1:eUbSXbhfBMNiOuofFo688iPhk42O782vze8drAN2sPA=
-github.com/hashicorp/terraform-provider-kubernetes v1.13.4-0.20220907163743-48d1f3528353 h1:+KJ8vXkPhoNXwB59lh4VB3U5kPvDavt0Y7KO0XWGLms=
-github.com/hashicorp/terraform-provider-kubernetes v1.13.4-0.20220907163743-48d1f3528353/go.mod h1:u760UDsjsuqmeJpnioTfgPFywTKfD6PwghAePuZxnBM=
-github.com/hashicorp/terraform-registry-address v0.1.0 h1:W6JkV9wbum+m516rCl5/NjKxCyTVaaUBbzYcMzBDO3U=
-github.com/hashicorp/terraform-registry-address v0.1.0/go.mod h1:EnyO2jYO6j29DTHbJcm00E5nQTFeTtyZH3H5ycydQ5A=
-github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
-github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg=
-github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM=
-github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
-github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
-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/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.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
-github.com/imdario/mergo v0.3.9/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/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-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/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.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
-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.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74=
-github.com/jhump/protoreflect v1.6.1/go.mod h1:RZQ/lnuN+zqeRVpQigTwO6o0AJUkxbnSnpuG7toUTG4=
-github.com/jhump/protoreflect v1.14.1 h1:N88q7JkxTHWFEqReuTsYH1dPIwXxA0ITNQp7avLY10s=
-github.com/jhump/protoreflect v1.14.1/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI=
-github.com/jingyugao/rowserrcheck v0.0.0-20210315055705-d907ca737bb1/go.mod h1:TOQpc2SLx6huPfoFGK3UOnEG+u02D3C1GeosjupAKCA=
-github.com/jinzhu/copier v0.2.9 h1:v0Wnz+GKEI63FX7cU2LI20mFFlhTNl+36cjDIuhq3QY=
-github.com/jinzhu/copier v0.2.9/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro=
-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-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
-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/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=
-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/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/kevinburke/ssh_config v0.0.0-20190725054713-01f96b0aa0cd/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM=
-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/keybase/go-crypto v0.0.0-20161004153544-93f5b35093ba/go.mod h1:ghbZscTyKdM07+Fw3KSi0hcJm+AlEUWj8QLlPtijN/M=
-github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f h1:dKccXx7xA56UNqOcFIbuqFjAWPVtP688j5QMgmo6OHU=
-github.com/kirsle/configdir v0.0.0-20170128060238-e45d2f54772f/go.mod h1:4rEELDSfUAlBSyUjPG0JnaNGjf13JySHFeRdD/3dLP0=
-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.10.7/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-github.com/klauspost/compress v1.11.0/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
-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=
-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/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 h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0=
-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/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
-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/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/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs=
-github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
-github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
-github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU=
-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.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-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/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4=
-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.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/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.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.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/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
-github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
-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/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4=
-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.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/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/cli v1.1.1/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
-github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw=
-github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
-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-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
-github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-github.com/mitchellh/go-testing-interface v1.0.4/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
-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-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=
-github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
-github.com/mitchellh/hashstructure v1.1.0 h1:P6P1hdjqAAknpY/M1CGipelZgp+4y9ja9kmUZPXP+H0=
-github.com/mitchellh/hashstructure v1.1.0/go.mod h1:xUDAozZz0Wmdiufv0uyhnHkUTN6/6d8ulp4AwfLKrmA=
-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/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY=
-github.com/mitchellh/mapstructure v1.5.0/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/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
-github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-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/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/moby/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA=
-github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y=
-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/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
-github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
-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/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k=
-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/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/nsf/jsondiff v0.0.0-20200515183724-f29ed568f4ce/go.mod h1:uFMI8w+ref4v2r9jz+c9i1IfIttS/OkmLfrk1jne5hs=
-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/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
-github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
-github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
-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.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA=
-github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
-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.3/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/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY=
-github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg=
-github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
-github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
-github.com/onsi/ginkgo/v2 v2.15.0 h1:79HwNRBAZHOEwrczrgSOPy+eFTTlIGELKy5as+ClttY=
-github.com/onsi/ginkgo/v2 v2.15.0/go.mod h1:HlxMHtYF57y6Dpf+mc5529KKmSq9h2FpCF+/ZkwUxKM=
-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.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48=
-github.com/onsi/gomega v1.30.0 h1:hvMK7xYz4D3HapigLTeGdId/NcfQx1VHMJc60ew99+8=
-github.com/onsi/gomega v1.30.0/go.mod h1:9sxs+SwGrKI0+PWe4Fxa9tFQQBG5xSsSbMXOI8PPpoQ=
-github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
-github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
-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.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
-github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
-github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw=
-github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5 h1:Ii+DKncOVM8Cu1Hc+ETb5K+23HdAMvESYE3ZJ5b5cMI=
-github.com/phayes/freeport v0.0.0-20220201140144-74d24b5ae9f5/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
-github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
-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/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/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/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
-github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.3/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_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-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/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/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/regen-network/protobuf v1.3.3-alpha.regen.1 h1:OHEc+q5iIAXpqiqFKeLpu5NwTIkVXUs48vFMwzqpqY4=
-github.com/regen-network/protobuf v1.3.3-alpha.regen.1/go.mod h1:2DjTFR1HhMQhiWC5sZ4OhQ3+NtdbZ6oBDKQwq5Ou+FI=
-github.com/robfig/cron v1.2.0 h1:ZjScXvvxeQ63Dbyxy76Fj3AT3Ut0aKsyd2/tl3DTMuQ=
-github.com/robfig/cron v1.2.0/go.mod h1:JGuDeoQd7Z6yL4zQhZ3OPEVHB7fL6Ka6skscFHfmt2k=
-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/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
-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/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU=
-github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
-github.com/russross/blackfriday v1.6.0 h1:KqfZb0pUVN2lYqZUYRddxF4OR8ZMURnJIG5Y3VRLtww=
-github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY=
-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/sanposhiho/wastedassign v1.0.0/go.mod h1:LGpq5Hsv74QaqM47WtIsRSF/ik9kqk07kchgv66tLVE=
-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/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/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/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.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/sirupsen/logrus v1.9.0/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/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/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI=
-github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs=
-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.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
-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/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.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/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/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 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c=
-github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
-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.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.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals=
-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/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/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/tmc/grpc-websocket-proxy v0.0.0-20201229170055-e5319fda7802/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/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
-github.com/ulikunitz/xz v0.5.5/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
-github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
-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/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/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.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI=
-github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk=
-github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U=
-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/vmihailenco/tagparser v0.1.2 h1:gnjoVuB/kljJ5wICEEOpx98oXMWPLj22G67Vbd1qPqc=
-github.com/vmihailenco/tagparser v0.1.2/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI=
-github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
-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/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/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/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
-github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
-github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
-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/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.5.1/go.mod h1:nHzOclRkoj++EU9ZjSrZvRG0BXIWt8c7loYc0qXAFGQ=
-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.4/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-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k=
-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/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0=
-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.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o=
-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 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/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4=
-go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo=
-go.opentelemetry.io/otel v1.23.1 h1:Za4UzOqJYS+MUczKI320AtqZHZb7EqxO00jAHE0jmQY=
-go.opentelemetry.io/otel v1.23.1/go.mod h1:Td0134eafDLcTS4y+zQ26GE8u3dEuRBiBCTUIRHaikA=
-go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM=
-go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU=
-go.opentelemetry.io/otel/metric v1.23.1 h1:PQJmqJ9u2QaJLBOELl1cxIdPcpbwzbkjfEyelTl2rlo=
-go.opentelemetry.io/otel/metric v1.23.1/go.mod h1:mpG2QPlAfnK8yNhNJAxDZruU9Y1/HubbC+KyH8FaCWI=
-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.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8=
-go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E=
-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.23.1 h1:4LrmmEd8AU2rFvU1zegmvqW7+kWarxtNOPyeL6HmYY8=
-go.opentelemetry.io/otel/trace v1.23.1/go.mod h1:4IpnpJFwr1mo/6HL8XIPJaE9y0+u1KcVmuW7dwFSVrI=
-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.starlark.net v0.0.0-20221205180719-3fd0dac74452 h1:JZtNuL6LPB+scU5yaQ6hqRlJFRiddZm2FwRt2AQqtHA=
-go.starlark.net v0.0.0-20221205180719-3fd0dac74452/go.mod h1:kIVgS18CjmEC3PqMd5kaJSGEifyV/CeB9x506ZJ1Vbk=
-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.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
-go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
-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.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 v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
-go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM=
-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=
-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=
-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-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-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-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-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-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-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-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.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/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-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw=
-golang.org/x/exp v0.0.0-20240213143201-ec583247a57a h1:HinSgX1tJRX3KsL//Gxynpw5CTOAIPhgL4W8PNiIpVE=
-golang.org/x/exp v0.0.0-20240213143201-ec583247a57a/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc=
-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.5.0/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro=
-golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY=
-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.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-20180530234432-1e491301e022/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-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-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-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-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-20191009170851-d66e71096ffb/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-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-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-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-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.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-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.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.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
-golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk=
-golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg=
-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.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/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/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-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-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-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-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-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-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=
-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=
-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-20210503080704-8803ae5d1324/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-20210601080250-7ecdf8ef093b/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-20210908233432-aa78b53d3365/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-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/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-20220114195835-da31bd327af9/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-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.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.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-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.0.0-20220526004731-065cf7ba2467/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.17.0 h1:mkTF7LCd6WGJNL3K1Ad7kwxNfYAW6a8a8QqtMblp/4U=
-golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
-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.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/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-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.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4=
-golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
-golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/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-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-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-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-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-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-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=
-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-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=
-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-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-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-20200713011307-fd294ab11aed/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-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-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/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.18.0 h1:k8NLag8AGHnn+PHbl7g43CtqZAwG60vZkLqgyZgIHgQ=
-golang.org/x/tools v0.18.0/go.mod h1:GL7B4CwcLLeo59yx/9UWWuNOW1n3VZ4f5axWfML7Lcg=
-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=
-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.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=
-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.46.0/go.mod h1:ceL4oozhkAiTID8XMmJBsIxID/9wMXJVVFXPg4ylg3I=
-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.60.0/go.mod h1:d7rl65NZAkEQ90JFzqBjcRq1TVeG5ZoGV3sSpEnnVb4=
-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.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.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.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/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-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-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-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=
-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-20200324203455-a04cca1dde73/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=
-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-20200711021454-869866162049/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-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-20210429181445-86c259c2b4ab/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210517163617-5e0236093d7a/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A=
-google.golang.org/genproto v0.0.0-20210601144548-a796c710e9b6/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-20211021150943-2b146023228c/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-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-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-20240108191215-35c7eff3a6b1 h1:OPXtXn7fNMaXwO3JvOmF1QyTc00jsSFFz1vXXBOdCDo=
-google.golang.org/genproto/googleapis/api v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:B5xPO//w8qmBDjGReYLpR6UJPnkldGkCSMoH/2vxJeg=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1 h1:gphdwh0npgs8elJ4T6J+DQJHPVF7RsuJHCfwztUb4J4=
-google.golang.org/genproto/googleapis/rpc v0.0.0-20240108191215-35c7eff3a6b1/go.mod h1:daQN87bsDqDoe316QbbvX60nMoJQa4r6Ds0ZuoAe5yA=
-google.golang.org/grpc v1.8.0/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.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.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=
-google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
-google.golang.org/grpc v1.32.0/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.60.1 h1:26+wFr+cNqSGFcOXcabYC0lUVJVRa2Sb2ortSK7VrEU=
-google.golang.org/grpc v1.60.1/go.mod h1:OlCHIeLYqSSsLi6i49B5QGdzaMZK9+M7LXN2FKz4eGM=
-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.32.0 h1:pPC6BG5ex8PDFnkbrGU3EixyhKcQ2aDuBS36lqK/C7I=
-google.golang.org/protobuf v1.32.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos=
-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/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.27/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.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
-gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
-gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
-gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
-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/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
-gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
-gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME=
-gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI=
-gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
-gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-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-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/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=
-gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8=
-gotest.tools/v3 v3.4.0 h1:ZazjZUfuVeZGLAmlKKuyv3IKP5orXcwtOwDQH6YVr6o=
-gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g=
-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=
-honnef.co/go/tools v0.1.4/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las=
-k8s.io/api v0.23.5/go.mod h1:Na4XuKng8PXJ2JsploYYrivXrINeTaycCGcYgF91Xm8=
-k8s.io/api v0.24.2/go.mod h1:AHqbSkTm6YrQ0ObxjO3Pmp/ubFF/KuM7jU+3khoBsOg=
-k8s.io/api v0.25.5 h1:mqyHf7aoaYMpdvO87mqpol+Qnsmo+y09S0PMIXwiZKo=
-k8s.io/api v0.25.5/go.mod h1:RzplZX0Z8rV/WhSTfEvnyd91bBhBQTRWo85qBQwRmb8=
-k8s.io/apiextensions-apiserver v0.25.5 h1:iHkMyFGzRgXO8AQlCYPVTVsKLqXvruswirIW8hRji+g=
-k8s.io/apiextensions-apiserver v0.25.5/go.mod h1:TWAHgFssGm050Oe6MhN+Jaeav+ISEl9M/qWsPzq2s3k=
-k8s.io/apimachinery v0.23.5/go.mod h1:BEuFMMBaIbcOqVIJqNZJXGFTP4W6AycEpb5+m/97hrM=
-k8s.io/apimachinery v0.24.2/go.mod h1:82Bi4sCzVBdpYjyI4jY6aHX+YCUchUIrZrXKedjd2UM=
-k8s.io/apimachinery v0.25.5 h1:SQomYHvv+aO43qdu3QKRf9YuI0oI8w3RrOQ1qPbAUGY=
-k8s.io/apimachinery v0.25.5/go.mod h1:1S2i1QHkmxc8+EZCIxe/fX5hpldVXk4gvnJInMEb8D4=
-k8s.io/apiserver v0.23.5/go.mod h1:7wvMtGJ42VRxzgVI7jkbKvMbuCbVbgsWFT7RyXiRNTw=
-k8s.io/cli-runtime v0.24.2/go.mod h1:1LIhKL2RblkhfG4v5lZEt7FtgFG5mVb8wqv5lE9m5qY=
-k8s.io/cli-runtime v0.25.5 h1:5Q37ITYtPtSw2JQcN6EBsdOQBnGvvo/D1g93Da4ceYI=
-k8s.io/cli-runtime v0.25.5/go.mod h1:o7lT2rFyfbLrQOzTFsV828OyxKsTE/FmVc3ag1nx0IU=
-k8s.io/client-go v0.23.5/go.mod h1:flkeinTO1CirYgzMPRWxUCnV0G4Fbu2vLhYCObnt/r4=
-k8s.io/client-go v0.24.2/go.mod h1:zg4Xaoo+umDsfCWr4fCnmLEtQXyCNXCvJuSsglNcV30=
-k8s.io/client-go v0.25.5 h1:7QWVK0Ph4bLn0UwotPTc2FTgm8shreQXyvXnnHDd8rE=
-k8s.io/client-go v0.25.5/go.mod h1:bOeoaUUdpyz3WDFGo+Xm3nOQFh2KuYXRDwrvbAPtFQA=
-k8s.io/code-generator v0.23.5/go.mod h1:S0Q1JVA+kSzTI1oUvbKAxZY/DYbA/ZUb4Uknog12ETk=
-k8s.io/code-generator v0.24.2/go.mod h1:dpVhs00hTuTdTY6jvVxvTFCk6gSMrtfRydbhZwHI15w=
-k8s.io/component-base v0.23.5/go.mod h1:c5Nq44KZyt1aLl0IpHX82fhsn84Sb0jjzwjpcA42bY0=
-k8s.io/component-base v0.24.2/go.mod h1:ucHwW76dajvQ9B7+zecZAP3BVqvrHoOxm8olHEg0nmM=
-k8s.io/component-base v0.25.5 h1:tVni0kgpceq71MDMBSixp8Y621YGvTS/1zq3RABgX9A=
-k8s.io/component-base v0.25.5/go.mod h1:9J+e9uIUwUOG2x5q5+aaOR0b8QI5OIqwqPAbeODkYpc=
-k8s.io/component-helpers v0.24.2/go.mod h1:TRQPBQKfmqkmV6c0HAmUs8cXVNYYYLsXy4zu8eODi9g=
-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/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.80.1 h1:atnLQ121W371wYYFawwYx1aEY2eUfs4l3J72wtgAwV4=
-k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0=
-k8s.io/kube-aggregator v0.23.5 h1:UZ+qE3hGo6DcgKySf27Jg7d3X9/6JQkVLUiHZAoAfCY=
-k8s.io/kube-aggregator v0.23.5/go.mod h1:3ynYx07Co6dzjpKPgipM+1/Mt2Jcm7dY++cRlKLr5s8=
-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-20221207184640-f3cff1453715 h1:tBEbstoM+K0FiBV5KGAKQ0kuvf54v/hwpldiJt69w1s=
-k8s.io/kube-openapi v0.0.0-20221207184640-f3cff1453715/go.mod h1:+Axhij7bCpeqhklhUTe3xmOn6bWxolyZEeyaFpjGtl4=
-k8s.io/kubectl v0.24.2 h1:+RfQVhth8akUmIc2Ge8krMl/pt66V7210ka3RE/p0J4=
-k8s.io/kubectl v0.24.2/go.mod h1:+HIFJc0bA6Tzu5O/YcuUt45APAxnNL8LeMuXwoiGsPg=
-k8s.io/metrics v0.24.2/go.mod h1:5NWURxZ6Lz5gj8TFU83+vdWIVASx7W8lwPpHYCqopMo=
-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-20221128185143-99ec85e7a448 h1:KTgPnR10d5zhztWptI952TNtt/4u5h3IzDXkdIMuo2Y=
-k8s.io/utils v0.0.0-20221128185143-99ec85e7a448/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-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 h1:HfqmD5MEmC0zvwBuF187nq9mdnXjXsSivRiXN7SmRkE=
-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/go.mod h1:fEO7lRTdivWO2qYVCVG7dEADOMo/MLDCVr8So2g88Uw=
-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-20221116044647-bc3834ca7abd h1:EDPBXCAspyGV4jQlpZSudPeMmr1bNJefnuqLsRAsHZo=
-sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0=
-sigs.k8s.io/kustomize/api v0.11.4/go.mod h1:k+8RsqYbgpkIrJ4p9jcdPqe8DprLxFUUO0yNOq8C+xI=
-sigs.k8s.io/kustomize/api v0.12.1 h1:7YM7gW3kYBwtKvoY216ZzY+8hM+lV53LUayghNRJ0vM=
-sigs.k8s.io/kustomize/api v0.12.1/go.mod h1:y3JUhimkZkR6sbLNwfJHxvo1TCLwuwm14sCYnkH6S1s=
-sigs.k8s.io/kustomize/cmd/config v0.10.6/go.mod h1:/S4A4nUANUa4bZJ/Edt7ZQTyKOY9WCER0uBS1SW2Rco=
-sigs.k8s.io/kustomize/kustomize/v4 v4.5.4/go.mod h1:Zo/Xc5FKD6sHl0lilbrieeGeZHVYCA4BzxeAaLI05Bg=
-sigs.k8s.io/kustomize/kyaml v0.13.6/go.mod h1:yHP031rn1QX1lr/Xd934Ri/xdVNG8BE2ECa78Ht/kEg=
-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/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/contrib/terraform-provider-kubeproxy/main.go b/contrib/terraform-provider-kubeproxy/main.go
deleted file mode 100644
index 712c069667..0000000000
--- a/contrib/terraform-provider-kubeproxy/main.go
+++ /dev/null
@@ -1,97 +0,0 @@
-// Package main provides a Terraform wrapper around kubernetes for using an IAP (Identity-Aware Proxy) when interacting with GCP resources.
-// The provider wraps the original provider (e.g Helm or Kubernetes) and adds the necessary fields and functionality for configuring and using the IAP proxy.
-// This allows for more fine-grained authentication and authorization of access to resources, and is especially useful for short-lived Terraform resources.
-package main
-
-import (
- "context"
- "encoding/json"
- "flag"
- "fmt"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/provider"
- "log"
- "os"
- "time"
-
- "github.com/hashicorp/go-plugin"
- "github.com/hashicorp/terraform-exec/tfexec"
- tf5server "github.com/hashicorp/terraform-plugin-go/tfprotov5/tf5server"
- tf5muxserver "github.com/hashicorp/terraform-plugin-mux/tf5muxserver"
-)
-
-const providerName = "registry.terraform.io/hashicorp/kubernetes"
-
-// Generate docs for website
-// go:generate go run github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
-
-func main() {
- debugFlag := flag.Bool("debug", false, "Start provider in stand-alone debug mode.")
- flag.Parse()
-
- mainProvider := provider.MainProvider().GRPCProvider
- manifestProvider, err := provider.ManifestProvider()
- if err != nil {
- panic(err)
- }
- // note: manifest provider is not currently supported
-
- ctx := context.Background()
- muxer, err := tf5muxserver.NewMuxServer(ctx, mainProvider, manifestProvider)
- if err != nil {
- log.Println(err.Error())
- os.Exit(1)
- }
-
- opts := []tf5server.ServeOpt{}
- if *debugFlag {
- reattachConfigCh := make(chan *plugin.ReattachConfig)
- go func() {
- reattachConfig, err := waitForReattachConfig(reattachConfigCh)
- if err != nil {
- fmt.Printf("Error getting reattach config: %s\n", err)
- return
- }
- printReattachConfig(reattachConfig)
- }()
- opts = append(opts, tf5server.WithDebug(ctx, reattachConfigCh, nil))
- }
-
- _ = tf5server.Serve(providerName, muxer.ProviderServer, opts...)
-}
-
-// convertReattachConfig converts plugin.ReattachConfig to tfexec.ReattachConfig.
-func convertReattachConfig(reattachConfig *plugin.ReattachConfig) tfexec.ReattachConfig {
- return tfexec.ReattachConfig{
- Protocol: string(reattachConfig.Protocol),
- Pid: reattachConfig.Pid,
- Test: true,
- Addr: tfexec.ReattachConfigAddr{
- Network: reattachConfig.Addr.Network(),
- String: reattachConfig.Addr.String(),
- },
- }
-}
-
-// printReattachConfig prints the line the user needs to copy and paste
-// to set the TF_REATTACH_PROVIDERS variable.
-func printReattachConfig(config *plugin.ReattachConfig) {
- reattachStr, err := json.Marshal(map[string]tfexec.ReattachConfig{
- "kubernetes": convertReattachConfig(config),
- })
- if err != nil {
- fmt.Printf("Error building reattach string: %s", err)
- return
- }
- fmt.Printf("# Provider server started\nexport TF_REATTACH_PROVIDERS='%s'\n", string(reattachStr))
-}
-
-// waitForReattachConfig blocks until a ReattachConfig is received on the
-// supplied channel or times out after 2 seconds.
-func waitForReattachConfig(ch chan *plugin.ReattachConfig) (*plugin.ReattachConfig, error) {
- select {
- case config := <-ch:
- return config, nil
- case <-time.After(2 * time.Second):
- return nil, fmt.Errorf("timeout while waiting for reattach configuration")
- }
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/doc.go b/contrib/terraform-provider-kubeproxy/provider/doc.go
deleted file mode 100644
index b2f6918232..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package provider provides the overwrriten kubeproxy providy
-package provider
diff --git a/contrib/terraform-provider-kubeproxy/provider/export_test.go b/contrib/terraform-provider-kubeproxy/provider/export_test.go
deleted file mode 100644
index 39411bc445..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/export_test.go
+++ /dev/null
@@ -1,23 +0,0 @@
-package provider
-
-import (
- "context"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
-)
-
-// ValidateConfigNulls is a wrapper around validateConfigNulls for testing.
-func ValidateConfigNulls(ctx context.Context, v cty.Value, path cty.Path) []*tfprotov5.Diagnostic {
- return validateConfigNulls(ctx, v, path)
-}
-
-// CombinedSchema is a wrapper around combinedSchema for testing.
-func (r *RawProviderServer) CombinedSchema() *tfprotov5.Schema {
- return r.combinedSchema
-}
-
-// GoogleProvider is a wrapper around googleProvider for testing.
-func (r *RawProviderServer) GoogleProvider() *schema.Provider {
- return r.googleProvider
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/main_provider.go b/contrib/terraform-provider-kubeproxy/provider/main_provider.go
deleted file mode 100644
index d1d71c2f13..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/main_provider.go
+++ /dev/null
@@ -1,87 +0,0 @@
-package provider
-
-import (
- "context"
- provider_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-provider-kubernetes/kubernetes"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/google"
- "github.com/synapsecns/sanguine/contrib/tfcore/utils"
- "log"
-)
-
-type configuredKubeProvider struct {
- // googleIface is the google interface
- googleIface *google.Config
- // helmIface is the helm interface
- kubeIface interface{}
-}
-
-func (c configuredKubeProvider) GoogleProvider() interface{} {
- return c.googleIface
-}
-
-func (c configuredKubeProvider) UnderlyingProvider() interface{} {
- return c.kubeIface
-}
-
-var _ utils.WrappedProvider = &configuredKubeProvider{}
-
-// MainProvider creates the main provider for the iap tunnel.
-func MainProvider() *schema.Provider {
- combinedSchema := utils.CombineSchemas(google.Provider(), kubernetes.Provider(), "kubernetes", "kubeproxy")
- underlyingGoogleProvider := google.Provider()
- underlyingKubernetesProvider := kubernetes.Provider()
- return &schema.Provider{
- Schema: combinedSchema.Schema,
- ProviderMetaSchema: combinedSchema.MetaSchema,
- ResourcesMap: combinedSchema.ResourceMap,
- DataSourcesMap: combinedSchema.DataSourceMap,
- ConfigureContextFunc: func(ctx context.Context, data *schema.ResourceData) (_ interface{}, dg provider_diag.Diagnostics) {
- cp := &configuredKubeProvider{}
- var gdg, hdg provider_diag.Diagnostics
- var giface interface{}
- var ok bool
-
- giface, gdg = underlyingGoogleProvider.ConfigureContextFunc(ctx, data)
- if gdg.HasError() {
- return nil, gdg
- }
- dg = append(dg, gdg...)
- cp.googleIface, ok = giface.(*google.Config)
- if !ok {
- return nil, append(gdg, provider_diag.Diagnostic{
- Severity: provider_diag.Error,
- Summary: "failed to cast google interface",
- })
- }
-
- // TODO: the proxy_url needs to be set in here
- proxyURL, err := utils.StartTunnel(ctx, data, cp.googleIface)
- if err != nil {
- return nil, append(gdg, provider_diag.FromErr(err)[0])
- }
-
- // set the proxy url
- log.Printf("[INFO] setting proxy url to %s", proxyURL)
- err = data.Set("proxy_url", proxyURL)
- if err != nil {
- return nil, append(gdg, provider_diag.FromErr(err)[0])
- }
-
- cp.kubeIface, hdg = underlyingKubernetesProvider.ConfigureContextFunc(ctx, data)
- if hdg.HasError() {
- return nil, hdg
- }
- dg = append(dg, hdg...)
- if !ok {
- return nil, append(hdg, provider_diag.Diagnostic{
- Severity: provider_diag.Error,
- Summary: "failed to cast kubernetes interface",
- })
- }
-
- return cp, dg
- },
- }
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/manifest_provider.go b/contrib/terraform-provider-kubeproxy/provider/manifest_provider.go
deleted file mode 100644
index 35d7ef46a2..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/manifest_provider.go
+++ /dev/null
@@ -1,262 +0,0 @@
-package provider
-
-import (
- "context"
- gojson "encoding/json"
- "fmt"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/go-cty/cty/json"
- "github.com/hashicorp/go-cty/cty/msgpack"
- "github.com/hashicorp/go-hclog"
- "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- provider_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- "github.com/hashicorp/terraform-provider-kubernetes/manifest/test/logging"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/configschema"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/convert"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/manifest"
- "github.com/synapsecns/sanguine/contrib/tfcore/generated/google"
- "github.com/synapsecns/sanguine/contrib/tfcore/utils"
- "golang.org/x/exp/maps"
- "golang.org/x/exp/slices"
- "log"
- "os"
- "strconv"
- "strings"
- "sync"
-)
-
-// ManifestProvider gets the manifest provider.
-func ManifestProvider() (func() tfprotov5.ProviderServer, error) {
- providerSchema, err := manifest.Provider()().GetProviderSchema(context.Background(), &tfprotov5.GetProviderSchemaRequest{})
- if err != nil {
- return nil, fmt.Errorf("could not get provider schema: %w", err)
- }
-
- rawProvider := makeRawProvider()
-
- rawProvider.combinedSchema, err = utils.CombineProtoSchemas(context.Background(), google.Provider(), providerSchema, "", "")
- if err != nil {
- return nil, fmt.Errorf("could not combine schemas: %w", err)
- }
-
- rawProvider.googleProvider = google.Provider()
- rawProvider.googleProvider.Schema = utils.UpdateSchemaWithDefaults(rawProvider.googleProvider.Schema)
-
- return func() tfprotov5.ProviderServer {
- return rawProvider
- }, nil
-}
-
-// RawProviderServer is the raw provider server.
-type RawProviderServer struct {
- *manifest.RawProviderServer
- combinedSchema *tfprotov5.Schema
- googleProvider *schema.Provider
- // used for stop context
- stopMu sync.Mutex
- // used for stop context
- stopCh chan struct{}
-}
-
-const (
- originalProviderPrefix = "kubernetes"
- replacedProviderPrefix = "kubeproxy"
-)
-
-// GetProviderSchema returns the provider schema.
-func (r *RawProviderServer) GetProviderSchema(_ context.Context, _ *tfprotov5.GetProviderSchemaRequest) (*tfprotov5.GetProviderSchemaResponse, error) {
- return &tfprotov5.GetProviderSchemaResponse{
- Provider: r.combinedSchema,
- // TODO: keys must be rewritten
- ResourceSchemas: replaceResourceKeys(manifest.GetProviderResourceSchema(), originalProviderPrefix, replacedProviderPrefix),
- DataSourceSchemas: replaceResourceKeys(manifest.GetProviderDataSourceSchema(), originalProviderPrefix, replacedProviderPrefix),
- }, nil
-}
-
-func replaceResourceKeys(keyMap map[string]*tfprotov5.Schema, toReplace, replaceWith string) map[string]*tfprotov5.Schema {
- newKeyMap := make(map[string]*tfprotov5.Schema)
- for key, value := range keyMap {
- newKeyMap[strings.Replace(key, toReplace, replaceWith, 1)] = value
- }
- return newKeyMap
-}
-
-// ConfigureProvider configures the provider and sets up the tunnel.
-func (r *RawProviderServer) ConfigureProvider(ctx context.Context, req *tfprotov5.ConfigureProviderRequest) (*tfprotov5.ConfigureProviderResponse, error) {
- resp := &tfprotov5.ConfigureProviderResponse{}
-
- // we start by adding our custom fields to the google schema
- updatedSchema := utils.UpdateSchemaWithDefaults(google.Provider().Schema)
- // and then converting the google schema to an internal map. This can be used by the converter module
- googleSchema := schema.InternalMap(updatedSchema).CoreConfigSchema()
-
- // we convert the schema to a config schema
- combinedConfigSchema := convert.ProtoToConfigSchema(ctx, r.combinedSchema.Block)
-
- // we then use that to unmarshall the config
- reqConfig, err := msgpack.Unmarshal(req.Config.MsgPack, combinedConfigSchema.ImpliedType())
- if err != nil {
- resp.Diagnostics = convert.AppendProtoDiag(ctx, resp.Diagnostics, err)
- return resp, nil
- }
-
- // Ensure there are no nulls that will cause helper/schema to panic.
- if err := validateConfigNulls(ctx, reqConfig, nil); err != nil {
- resp.Diagnostics = append(resp.Diagnostics, err...)
- return resp, nil
- }
-
- // shim the tfproto config into a terraform config
- config := terraform.NewResourceConfigShimmed(reqConfig, googleSchema)
- ctxHack := context.WithValue(ctx, schema.StopContextKey, r.StopContext(context.Background()))
-
- logging.HelperSchemaTrace(ctx, "Calling downstream configure google")
- // configure the google provider
- r.googleProvider.ConfigureContextFunc = googConfigureContextFunc
- diag := r.googleProvider.Configure(ctxHack, config)
- if diag.HasError() {
- resp.Diagnostics = convert.AppendProtoDiag(ctx, resp.Diagnostics, diag)
- return resp, nil
- }
-
- logging.HelperSchemaTrace(ctx, "Called downstream configure google")
- // remove extra fields
-
- marshalledRequest, err := removeRequestFields(ctx, reqConfig, combinedConfigSchema, maps.Keys(updatedSchema))
- if err != nil {
- resp.Diagnostics = convert.AppendProtoDiag(ctx, resp.Diagnostics, err)
- }
- marshalledRequest.TerraformVersion = req.TerraformVersion
-
- // end remove extra fields
- resp, err = r.RawProviderServer.ConfigureProvider(ctx, marshalledRequest)
- if err != nil {
- return nil, fmt.Errorf("could not configure provider: %w", err)
- }
-
- return resp, nil
-}
-
-// removeRequestFields removes google specified fields from the configure provider request
-// represented as cty.Value and returns a new request that can be used for the provider.
-func removeRequestFields(ctx context.Context, reqConfig cty.Value, combinedConfigSchema *configschema.Block, keysToPrune []string) (*tfprotov5.ConfigureProviderRequest, error) {
- // we'll start by marshaling the config to json, we'll then remove extra keys and
- // convert the config back to msgpack
- jsonReq, err := json.Marshal(reqConfig, combinedConfigSchema.ImpliedType())
- if err != nil {
- return nil, fmt.Errorf("could not marshal config: %w", err)
- }
- logging.HelperSchemaTrace(ctx, "pruning google fields from config")
- logging.HelperSchemaTrace(ctx, string(jsonReq))
-
- var objmap map[string]gojson.RawMessage
- err = gojson.Unmarshal(jsonReq, &objmap)
- if err != nil {
- return nil, fmt.Errorf("could not unmarshal config: %w", err)
- }
-
- // we'll remove the google fields
- for field := range objmap {
- if slices.Contains(keysToPrune, field) {
- delete(objmap, field)
- }
- if field == "proxy_url" {
- objmap["proxy_url"] = gojson.RawMessage(strconv.Quote(os.Getenv("KUBE_PROXY_URL")))
- }
- }
-
- // we'll then marshal the config back to messagepack
- jsonReq, err = gojson.Marshal(objmap)
- if err != nil {
- return nil, fmt.Errorf("could not marshal config: %w", err)
- }
-
- logging.HelperSchemaTrace(ctx, "pruned google fields from config")
- logging.HelperSchemaTrace(ctx, string(jsonReq))
-
- req := &tfprotov5.ConfigureProviderRequest{}
- req.Config = &tfprotov5.DynamicValue{
- JSON: jsonReq,
- }
- return req, nil
-}
-
-// googConfigureContextFunc configures the context function for google.
-func googConfigureContextFunc(ctx context.Context, d *schema.ResourceData) (_ interface{}, gdg provider_diag.Diagnostics) {
- gface, googleDiagnostics := google.Provider().ConfigureContextFunc(ctx, d)
- gdg = append(gdg, googleDiagnostics...)
- if gdg.HasError() {
- return nil, gdg
- }
-
- googleConfig, ok := gface.(*google.Config)
- if !ok {
- return nil, append(gdg, provider_diag.Diagnostic{
- Severity: provider_diag.Error,
- Summary: "failed to cast google interface",
- })
- }
- // TODO: the proxy_url needs to be set in here
- proxyURL, err := utils.StartTunnel(ctx, d, googleConfig)
- if err != nil {
- return nil, append(gdg, provider_diag.FromErr(err)[0])
- }
-
- // set the proxy url
- log.Printf("[INFO] setting proxy url to %s", proxyURL)
- err = os.Setenv("KUBE_PROXY_URL", proxyURL)
- if err != nil {
- return nil, append(gdg, provider_diag.FromErr(err)[0])
- }
- return gface, gdg
-}
-
-// StopContext derives a new context from the passed in grpc context.
-// It creates a goroutine to wait for the server stop and propagates
-// cancellation to the derived grpc context.
-func (r *RawProviderServer) StopContext(ctx context.Context) context.Context {
- ctx = logging.InitContext(ctx)
- r.stopMu.Lock()
- defer r.stopMu.Unlock()
-
- stoppable, cancel := context.WithCancel(ctx)
- go mergeStop(stoppable, cancel, r.stopCh)
- return stoppable
-}
-
-// mergeStop is called in a goroutine and waits for the global stop signal
-// and propagates cancellation to the passed in ctx/cancel func. The ctx is
-// also passed to this function and waited upon so no goroutine leak is caused.
-func mergeStop(ctx context.Context, cancel context.CancelFunc, stopCh chan struct{}) {
- select {
- case <-ctx.Done():
- return
- case <-stopCh:
- cancel()
- }
-}
-
-// makeRawProvider makes a raw provider.
-func makeRawProvider() *RawProviderServer {
- var logLevel string
- var ok = false
- for _, ev := range []string{"TF_LOG_PROVIDER_KUBERNETES", "TF_LOG_PROVIDER", "TF_LOG"} {
- logLevel, ok = os.LookupEnv(ev)
- if ok {
- break
- }
- }
- if !ok {
- logLevel = "off"
- }
-
- rawProvider := &manifest.RawProviderServer{}
- rawProvider.SetLogger(hclog.New(&hclog.LoggerOptions{
- Level: hclog.LevelFromString(logLevel),
- Output: os.Stderr,
- }))
-
- return &RawProviderServer{RawProviderServer: rawProvider}
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/provider_test.go b/contrib/terraform-provider-kubeproxy/provider/provider_test.go
deleted file mode 100644
index 90e4ba0e8c..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/provider_test.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package provider_test
-
-import (
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/provider"
- "testing"
-)
-
-func TestManifestProvider(t *testing.T) {
- fn, err := provider.ManifestProvider()
- if err != nil {
- t.Fatalf("error creating manifest prov: %v", err)
- }
-
- server := fn()
-
- prov, ok := server.(*provider.RawProviderServer)
- if !ok {
- t.Fatalf("incorrect prov type: %T", server)
- }
-
- if prov.CombinedSchema() == nil {
- t.Fatalf("combined schema should not be nil")
- }
- if prov.GoogleProvider() == nil {
- t.Fatalf("google prov should not be nil")
- }
- if prov.RawProviderServer == nil {
- t.Fatalf("raw prov server should not be nil")
- }
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/resource.go b/contrib/terraform-provider-kubeproxy/provider/resource.go
deleted file mode 100644
index 5dc93ad648..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/resource.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Package provider is a shim for the Package method of the underlying provider.
-// nolint: wrapcheck
-package provider
-
-import (
- "context"
- "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- "strings"
-)
-
-// ReadDataSource is a shim for the ReadDataSource method of the underlying provider.
-func (r *RawProviderServer) ReadDataSource(ctx context.Context, req *tfprotov5.ReadDataSourceRequest) (*tfprotov5.ReadDataSourceResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.ReadDataSource(ctx, req)
-}
-
-// ValidateDataSourceConfig is a shim for the ValidateDataSourceConfig method of the underlying provider.
-func (r *RawProviderServer) ValidateDataSourceConfig(ctx context.Context, req *tfprotov5.ValidateDataSourceConfigRequest) (*tfprotov5.ValidateDataSourceConfigResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.ValidateDataSourceConfig(ctx, req)
-}
-
-// ValidateResourceTypeConfig is a shim for the ValidateProviderConfig method of the underlying provider.
-func (r *RawProviderServer) ValidateResourceTypeConfig(ctx context.Context, req *tfprotov5.ValidateResourceTypeConfigRequest) (*tfprotov5.ValidateResourceTypeConfigResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.ValidateResourceTypeConfig(ctx, req)
-}
-
-// UpgradeResourceState is a shim for the UpgradeResourceState method of the underlying provider.
-func (r *RawProviderServer) UpgradeResourceState(ctx context.Context, req *tfprotov5.UpgradeResourceStateRequest) (*tfprotov5.UpgradeResourceStateResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.UpgradeResourceState(ctx, req)
-}
-
-// ReadResource is a shim for the ReadResource method of the underlying provider.
-func (r *RawProviderServer) ReadResource(ctx context.Context, req *tfprotov5.ReadResourceRequest) (*tfprotov5.ReadResourceResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.ReadResource(ctx, req)
-}
-
-// PlanResourceChange is a shim for the PlanResourceChange method of the underlying provider.
-func (r *RawProviderServer) PlanResourceChange(ctx context.Context, req *tfprotov5.PlanResourceChangeRequest) (*tfprotov5.PlanResourceChangeResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.PlanResourceChange(ctx, req)
-}
-
-// ApplyResourceChange is a shim for the ApplyResourceChange method of the underlying provider.
-func (r *RawProviderServer) ApplyResourceChange(ctx context.Context, req *tfprotov5.ApplyResourceChangeRequest) (*tfprotov5.ApplyResourceChangeResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.ApplyResourceChange(ctx, req)
-}
-
-// ImportResourceState is a shim for the ImportResourceState method of the underlying provider.
-func (r *RawProviderServer) ImportResourceState(ctx context.Context, req *tfprotov5.ImportResourceStateRequest) (*tfprotov5.ImportResourceStateResponse, error) {
- req.TypeName = strings.Replace(req.TypeName, replacedProviderPrefix, originalProviderPrefix, 1)
-
- return r.RawProviderServer.ImportResourceState(ctx, req)
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/validate.go b/contrib/terraform-provider-kubeproxy/provider/validate.go
deleted file mode 100644
index a24636bcc3..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/validate.go
+++ /dev/null
@@ -1,69 +0,0 @@
-// Package provider is the Terraform provider for Kubernetes
-// nolint
-package provider
-
-import (
- "context"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-go/tfprotov5"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/convert"
-)
-
-// validateConfigNulls checks a config value for unsupported nulls before
-// attempting to shim the value. While null values can mostly be ignored in the
-// configuration, since they're not supported in HCL1, the case where a null
-// appears in a list-like attribute (list, set, tuple) will present a nil value
-// to helper/schema which can panic. Return an error to the user in this case,
-// indicating the attribute with the null value.
-// this function is copied from the grpc provider server with some modifications to avoid use of internals
-func validateConfigNulls(ctx context.Context, v cty.Value, path cty.Path) []*tfprotov5.Diagnostic {
- var diags []*tfprotov5.Diagnostic
- if v.IsNull() || !v.IsKnown() {
- return diags
- }
-
- switch {
- case v.Type().IsListType() || v.Type().IsSetType() || v.Type().IsTupleType():
- it := v.ElementIterator()
- for it.Next() {
- kv, ev := it.Element()
- if ev.IsNull() {
- // if this is a set, the kv is also going to be null which
- // isn't a valid path element, so we can't append it to the
- // diagnostic.
- p := path
- if !kv.IsNull() {
- p = append(p, cty.IndexStep{Key: kv})
- }
-
- diags = append(diags, &tfprotov5.Diagnostic{
- Severity: tfprotov5.DiagnosticSeverityError,
- Summary: "Null value found in list",
- Detail: "Null values are not allowed for this attribute value.",
- Attribute: convert.PathToAttributePath(p),
- })
- continue
- }
-
- d := validateConfigNulls(ctx, ev, append(path, cty.IndexStep{Key: kv}))
- diags = append(diags, d...)
- }
-
- case v.Type().IsMapType() || v.Type().IsObjectType():
- it := v.ElementIterator()
- for it.Next() {
- kv, ev := it.Element()
- var step cty.PathStep
- switch {
- case v.Type().IsMapType():
- step = cty.IndexStep{Key: kv}
- case v.Type().IsObjectType():
- step = cty.GetAttrStep{Name: kv.AsString()}
- }
- d := validateConfigNulls(ctx, ev, append(path, step))
- diags = append(diags, d...)
- }
- }
-
- return diags
-}
diff --git a/contrib/terraform-provider-kubeproxy/provider/validate_test.go b/contrib/terraform-provider-kubeproxy/provider/validate_test.go
deleted file mode 100644
index c3e5ffbc83..0000000000
--- a/contrib/terraform-provider-kubeproxy/provider/validate_test.go
+++ /dev/null
@@ -1,93 +0,0 @@
-package provider_test
-
-import (
- "context"
- "github.com/hashicorp/go-cty/cty"
- "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/generated/convert"
- "github.com/synapsecns/sanguine/contrib/terraform-provider-kubeproxy/provider"
- "strconv"
- "testing"
-)
-
-// Copied from grpc provider to test parity.
-func TestValidateNulls(t *testing.T) {
- for i, tc := range []struct {
- Cfg cty.Value
- Err bool
- }{
- {
- Cfg: cty.ObjectVal(map[string]cty.Value{
- "list": cty.ListVal([]cty.Value{
- cty.StringVal("string"),
- cty.NullVal(cty.String),
- }),
- }),
- Err: true,
- },
- {
- Cfg: cty.ObjectVal(map[string]cty.Value{
- "map": cty.MapVal(map[string]cty.Value{
- "string": cty.StringVal("string"),
- "null": cty.NullVal(cty.String),
- }),
- }),
- Err: false,
- },
- {
- Cfg: cty.ObjectVal(map[string]cty.Value{
- "object": cty.ObjectVal(map[string]cty.Value{
- "list": cty.ListVal([]cty.Value{
- cty.StringVal("string"),
- cty.NullVal(cty.String),
- }),
- }),
- }),
- Err: true,
- },
- {
- Cfg: cty.ObjectVal(map[string]cty.Value{
- "object": cty.ObjectVal(map[string]cty.Value{
- "list": cty.ListVal([]cty.Value{
- cty.StringVal("string"),
- cty.NullVal(cty.String),
- }),
- "list2": cty.ListVal([]cty.Value{
- cty.StringVal("string"),
- cty.NullVal(cty.String),
- }),
- }),
- }),
- Err: true,
- },
- {
- Cfg: cty.ObjectVal(map[string]cty.Value{
- "object": cty.ObjectVal(map[string]cty.Value{
- "list": cty.SetVal([]cty.Value{
- cty.StringVal("string"),
- cty.NullVal(cty.String),
- }),
- }),
- }),
- Err: true,
- },
- } {
- tc := tc // capture func literal
- t.Run(strconv.Itoa(i), func(t *testing.T) {
- d := provider.ValidateConfigNulls(context.Background(), tc.Cfg, nil)
- diags := convert.ProtoToDiags(d)
- switch {
- case tc.Err:
- if !diags.HasError() {
- t.Fatal("expected error")
- }
- default:
- for _, d := range diags {
- if d.Severity == diag.Error {
- t.Fatalf("unexpected error: %q", d)
- }
- }
- }
- })
- }
-}
diff --git a/contrib/terraform-provider-kubeproxy/scripts/add-tfmac.sh b/contrib/terraform-provider-kubeproxy/scripts/add-tfmac.sh
deleted file mode 100755
index 4067060a39..0000000000
--- a/contrib/terraform-provider-kubeproxy/scripts/add-tfmac.sh
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/zsh
-
-# if not already present in zshrc
-if [ "$(grep -c -w "alias tfmac='TFENV_ARCH=arm64 TFENV_TERRAFORM_VERSION=latest:^1.3 terraform'" ~/.zshrc)" -le 0 ]; then
- echo "adding tfmac command to zshrc. You might have to source ~/.zshrc or open a new tab"
- echo "alias tfmac='TFENV_ARCH=arm64 TFENV_TERRAFORM_VERSION=latest:^1.3 terraform'" >> ~/.zshrc
-fi
diff --git a/contrib/terraform-provider-kubeproxy/scripts/build-tf.sh b/contrib/terraform-provider-kubeproxy/scripts/build-tf.sh
deleted file mode 100755
index c459bee1c0..0000000000
--- a/contrib/terraform-provider-kubeproxy/scripts/build-tf.sh
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-# shellcheck disable=SC2086
-
-# This gets the arch prefix we use when building a terraform plugin
-TF_PREFIX=$( go version | awk '{print $NF}' | sed 's/\//_/')
-
-# define the plugin directory
-PLUGIN_DIR=$(realpath -m ~/.terraform.d/plugins/example-kube.com/provider/kubeproxy/1.0.0/$TF_PREFIX)
-
-# fixes async problems on arm64 https://github.com/hashicorp/terraform-provider-aws/issues/20274#issuecomment-996795241
-# we don't need this for production builds, just darwinarm64.
-GODEBUG=asyncpreemptoff=1 go build .
-
-# make the plugin directory if it doesn't exist
-rm -rf $PLUGIN_DIR
-mkdir -p $PLUGIN_DIR
-cp terraform-provider-kubeproxy $PLUGIN_DIR
diff --git a/contrib/terraform-provider-kubeproxy/terraform-registry-manifest.json b/contrib/terraform-provider-kubeproxy/terraform-registry-manifest.json
deleted file mode 100644
index 295001a07f..0000000000
--- a/contrib/terraform-provider-kubeproxy/terraform-registry-manifest.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "version": 1,
- "metadata": {
- "protocol_versions": ["6.0"]
- }
-}
diff --git a/contrib/tfcore/.goreleaser.yml b/contrib/tfcore/.goreleaser.yml
deleted file mode 100644
index 4133ea2405..0000000000
--- a/contrib/tfcore/.goreleaser.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-project_name: tfcore
-
-monorepo:
- tag_prefix: contrib/tfcore/
- dir: contrib/tfcore/
-
-builds:
- - skip: true
-
-# add a source archive at release time
-source:
- enabled: true
-
-# Archives
-archives:
- - format: tar.gz
- wrap_in_directory: true
- format_overrides:
- - goos: windows
- format: zip
- name_template: '{{.ProjectName}}-{{.Version}}_{{.Os}}_{{.Arch}}'
- files:
- - README.md
-
-checksum:
- name_template: checksums.txt
-
-# Add a changelog
-changelog:
- sort: asc
-
-# track sizes
-report_sizes: true
-
-# modified timestamps
-metadata:
- # Set the modified timestamp on the metadata files.
- #
- # Templates: allowed.
- mod_timestamp: '{{ .CommitTimestamp }}'
-
-# produce software bill of lading
-sboms:
- - artifacts: archive
-
diff --git a/contrib/tfcore/Makefile b/contrib/tfcore/Makefile
deleted file mode 120000
index 15e4536f4b..0000000000
--- a/contrib/tfcore/Makefile
+++ /dev/null
@@ -1 +0,0 @@
-../../make/go.Makefile
\ No newline at end of file
diff --git a/contrib/tfcore/README.md b/contrib/tfcore/README.md
deleted file mode 100644
index 466544215b..0000000000
--- a/contrib/tfcore/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-# Terraform Core
-
-[![Go Reference](https://pkg.go.dev/badge/github.com/synapsecns/sanguine/contrib/tfcore.svg)](https://pkg.go.dev/github.com/synapsecns/sanguine/contrib/tfcore)
-[![Go Report Card](https://goreportcard.com/badge/github.com/synapsecns/sanguine/contrib/tfcore)](https://goreportcard.com/report/github.com/synapsecns/sanguine/contrib/tfcore)
-
-This directory contains the common utilities used by different terraform providers
diff --git a/contrib/tfcore/generated/google/doc.go b/contrib/tfcore/generated/google/doc.go
deleted file mode 100644
index 6c2b695290..0000000000
--- a/contrib/tfcore/generated/google/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package google is a generated bundle file that copies the google module with some additional exports we need for our provider.
-package google
diff --git a/contrib/tfcore/generated/google/generate.go b/contrib/tfcore/generated/google/generate.go
deleted file mode 100644
index 22a00002d8..0000000000
--- a/contrib/tfcore/generated/google/generate.go
+++ /dev/null
@@ -1,12 +0,0 @@
-package google
-
-import _ "golang.org/x/tools/benchmark/parse"
-
-// required by go:generate
-import _ "golang.org/x/mod/semver"
-
-// required for copying the module
-import _ "github.com/hashicorp/terraform-provider-google/v4/google"
-
-// Note: we can't actually exclude this module from codeanalysis since we import it
-//go:generate go run github.com/synapsecns/sanguine/tools/bundle -prefix "" -pkg google -o google_gen.go github.com/hashicorp/terraform-provider-google/v4/google
diff --git a/contrib/tfcore/generated/google/getters.go b/contrib/tfcore/generated/google/getters.go
deleted file mode 100644
index e8b99e63b3..0000000000
--- a/contrib/tfcore/generated/google/getters.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package google
-
-import (
- "context"
- "golang.org/x/oauth2"
-)
-
-// GetTokenSource exports the token source for use by the provider
-func (c *Config) GetTokenSource() oauth2.TokenSource {
- return c.tokenSource
-}
-
-func (c *Config) GetContext() context.Context {
- return c.context
-}
diff --git a/contrib/tfcore/generated/google/google_gen.go b/contrib/tfcore/generated/google/google_gen.go
deleted file mode 100644
index 200202cf98..0000000000
--- a/contrib/tfcore/generated/google/google_gen.go
+++ /dev/null
@@ -1,255823 +0,0 @@
-// Code generated by golang.org/x/tools/cmd/bundle. DO NOT EDIT.
-// nolint
-package google
-
-import (
- compute_operation_bytes "bytes"
- data_source_storage_object_signed_url_bytes "bytes"
- deployment_manager_operation_bytes "bytes"
- resource_binary_authorization_policy_bytes "bytes"
- resource_compute_backend_service_bytes "bytes"
- resource_compute_firewall_bytes "bytes"
- resource_compute_vpn_tunnel_bytes "bytes"
- resource_dns_managed_zone_bytes "bytes"
- resource_dns_policy_bytes "bytes"
- resource_folder_access_approval_settings_bytes "bytes"
- resource_sourcerepo_repository_bytes "bytes"
- resource_storage_bucket_bytes "bytes"
- resource_storage_bucket_object_bytes "bytes"
- retry_transport_bytes "bytes"
- sqladmin_operation_bytes "bytes"
- transport_bytes "bytes"
- batcher_context "context"
- bigtable_client_factory_context "context"
- compute_operation_context "context"
- config_context "context"
- container_operation_context "context"
- mtls_util_context "context"
- provider_context "context"
- resource_app_engine_application_context "context"
- resource_assured_workloads_workload_context "context"
- resource_bigquery_data_transfer_config_context "context"
- resource_bigquery_table_context "context"
- resource_bigtable_gc_policy_context "context"
- resource_bigtable_instance_context "context"
- resource_bigtable_instance_migrate_context "context"
- resource_bigtable_table_context "context"
- resource_billing_budget_context "context"
- resource_cloud_run_service_context "context"
- resource_cloud_scheduler_job_context "context"
- resource_cloudbuild_trigger_context "context"
- resource_compute_disk_context "context"
- resource_compute_firewall_context "context"
- resource_compute_firewall_policy_association_context "context"
- resource_compute_firewall_policy_context "context"
- resource_compute_firewall_policy_rule_context "context"
- resource_compute_forwarding_rule_context "context"
- resource_compute_global_forwarding_rule_context "context"
- resource_compute_health_check_context "context"
- resource_compute_instance_context "context"
- resource_compute_instance_template_context "context"
- resource_compute_region_backend_service_context "context"
- resource_compute_router_context "context"
- resource_compute_router_nat_context "context"
- resource_compute_security_policy_context "context"
- resource_compute_ssl_policy_context "context"
- resource_compute_subnetwork_context "context"
- resource_container_cluster_context "context"
- resource_dataflow_job_context "context"
- resource_dataproc_workflow_template_context "context"
- resource_deployment_manager_deployment_context "context"
- resource_endpoints_service_context "context"
- resource_eventarc_trigger_context "context"
- resource_google_project_context "context"
- resource_kms_crypto_key_context "context"
- resource_logging_project_sink_context "context"
- resource_monitoring_notification_channel_context "context"
- resource_org_policy_policy_context "context"
- resource_privateca_certificate_template_context "context"
- resource_redis_instance_context "context"
- resource_spanner_database_context "context"
- resource_sql_database_instance_context "context"
- resource_storage_bucket_acl_context "context"
- resource_storage_bucket_context "context"
- resource_storage_object_acl_context "context"
- resource_tpu_node_context "context"
- resource_workflows_workflow_context "context"
- retry_transport_context "context"
- data_source_storage_object_signed_url_crypto "crypto"
- resource_storage_bucket_object_md5 "crypto/md5"
- data_source_storage_object_signed_url_rand "crypto/rand"
- data_source_storage_object_signed_url_rsa "crypto/rsa"
- common_diff_suppress_sha256 "crypto/sha256"
- data_source_storage_object_signed_url_sha256 "crypto/sha256"
- resource_compute_instance_sha256 "crypto/sha256"
- resource_storage_bucket_object_sha256 "crypto/sha256"
- data_source_storage_object_signed_url_x509 "crypto/x509"
- data_source_google_kms_secret_base64 "encoding/base64"
- data_source_google_kms_secret_ciphertext_base64 "encoding/base64"
- data_source_secret_manager_secret_version_base64 "encoding/base64"
- data_source_storage_object_signed_url_base64 "encoding/base64"
- resource_compute_instance_base64 "encoding/base64"
- resource_endpoints_service_base64 "encoding/base64"
- resource_endpoints_service_migration_base64 "encoding/base64"
- resource_kms_secret_ciphertext_base64 "encoding/base64"
- resource_secret_manager_secret_version_base64 "encoding/base64"
- resource_storage_bucket_object_base64 "encoding/base64"
- validation_base64 "encoding/base64"
- common_diff_suppress_hex "encoding/hex"
- access_context_manager_operation_json "encoding/json"
- active_directory_operation_json "encoding/json"
- apigee_operation_json "encoding/json"
- appengine_operation_json "encoding/json"
- convert_json "encoding/json"
- data_source_google_iam_policy_json "encoding/json"
- data_source_google_netblock_ip_ranges_json "encoding/json"
- datastore_operation_json "encoding/json"
- dialogflow_cx_operation_json "encoding/json"
- filestore_operation_json "encoding/json"
- firestore_operation_json "encoding/json"
- game_services_operation_json "encoding/json"
- gke_hub_operation_json "encoding/json"
- iam_json "encoding/json"
- memcache_operation_json "encoding/json"
- ml_engine_operation_json "encoding/json"
- network_management_operation_json "encoding/json"
- notebooks_operation_json "encoding/json"
- privateca_operation_json "encoding/json"
- redis_operation_json "encoding/json"
- resource_bigquery_routine_json "encoding/json"
- resource_bigquery_table_json "encoding/json"
- resource_data_catalog_entry_json "encoding/json"
- resource_endpoints_service_json "encoding/json"
- resource_firestore_document_json "encoding/json"
- resource_google_folder_json "encoding/json"
- resource_healthcare_hl7_v2_store_json "encoding/json"
- resource_iam_policy_json "encoding/json"
- resource_manager_operation_json "encoding/json"
- service_usage_operation_json "encoding/json"
- serviceusage_operation_json "encoding/json"
- spanner_operation_json "encoding/json"
- tags_operation_json "encoding/json"
- tpu_operation_json "encoding/json"
- transport_json "encoding/json"
- vertex_ai_operation_json "encoding/json"
- vpc_access_operation_json "encoding/json"
- workflows_operation_json "encoding/json"
- data_source_storage_object_signed_url_pem "encoding/pem"
- compute_operation_errors "errors"
- container_operation_errors "errors"
- data_source_compute_network_endpoint_group_errors "errors"
- data_source_google_compute_instance_group_errors "errors"
- data_source_storage_object_signed_url_errors "errors"
- iam_bigquery_dataset_errors "errors"
- metadata_errors "errors"
- resource_bigquery_table_errors "errors"
- resource_compute_instance_errors "errors"
- resource_dataproc_cluster_errors "errors"
- resource_endpoints_service_errors "errors"
- resource_iam_audit_config_errors "errors"
- resource_iam_binding_errors "errors"
- resource_iam_member_errors "errors"
- resource_iam_policy_errors "errors"
- resource_logging_project_sink_errors "errors"
- resource_sql_database_instance_errors "errors"
- resource_storage_bucket_errors "errors"
- retry_transport_errors "errors"
- self_link_helpers_errors "errors"
- test_utils_errors "errors"
- transport_errors "errors"
- access_context_manager_operation_fmt "fmt"
- active_directory_operation_fmt "fmt"
- apigee_operation_fmt "fmt"
- appengine_operation_fmt "fmt"
- batcher_fmt "fmt"
- cloudfunctions_operation_fmt "fmt"
- cloudrun_polling_fmt "fmt"
- common_operation_fmt "fmt"
- common_polling_fmt "fmt"
- composer_operation_fmt "fmt"
- compute_instance_helpers_fmt "fmt"
- compute_instance_network_interface_helpers_fmt "fmt"
- compute_operation_fmt "fmt"
- config_fmt "fmt"
- container_operation_fmt "fmt"
- data_google_game_services_game_server_deployment_rollout_fmt "fmt"
- data_source_cloud_identity_group_memberships_fmt "fmt"
- data_source_cloud_identity_groups_fmt "fmt"
- data_source_cloud_run_locations_fmt "fmt"
- data_source_cloud_run_service_fmt "fmt"
- data_source_compute_lb_ip_ranges_fmt "fmt"
- data_source_compute_network_endpoint_group_fmt "fmt"
- data_source_container_registry_image_fmt "fmt"
- data_source_container_registry_repository_fmt "fmt"
- data_source_dns_keys_fmt "fmt"
- data_source_dns_managed_zone_fmt "fmt"
- data_source_google_active_folder_fmt "fmt"
- data_source_google_app_engine_default_service_account_fmt "fmt"
- data_source_google_bigquery_default_service_account_fmt "fmt"
- data_source_google_billing_account_fmt "fmt"
- data_source_google_client_config_fmt "fmt"
- data_source_google_client_openid_userinfo_fmt "fmt"
- data_source_google_composer_environment_fmt "fmt"
- data_source_google_composer_image_versions_fmt "fmt"
- data_source_google_compute_address_fmt "fmt"
- data_source_google_compute_backend_bucket_fmt "fmt"
- data_source_google_compute_backend_service_fmt "fmt"
- data_source_google_compute_default_service_account_fmt "fmt"
- data_source_google_compute_forwarding_rule_fmt "fmt"
- data_source_google_compute_global_address_fmt "fmt"
- data_source_google_compute_ha_vpn_gateway_fmt "fmt"
- data_source_google_compute_image_fmt "fmt"
- data_source_google_compute_instance_fmt "fmt"
- data_source_google_compute_instance_group_fmt "fmt"
- data_source_google_compute_instance_serial_port_fmt "fmt"
- data_source_google_compute_instance_template_fmt "fmt"
- data_source_google_compute_network_fmt "fmt"
- data_source_google_compute_node_types_fmt "fmt"
- data_source_google_compute_region_instance_group_fmt "fmt"
- data_source_google_compute_region_ssl_certificate_fmt "fmt"
- data_source_google_compute_regions_fmt "fmt"
- data_source_google_compute_resource_policy_fmt "fmt"
- data_source_google_compute_router_status_fmt "fmt"
- data_source_google_compute_ssl_certificate_fmt "fmt"
- data_source_google_compute_ssl_policy_fmt "fmt"
- data_source_google_compute_subnetwork_fmt "fmt"
- data_source_google_compute_vpn_gateway_fmt "fmt"
- data_source_google_compute_zones_fmt "fmt"
- data_source_google_container_engine_versions_fmt "fmt"
- data_source_google_folder_fmt "fmt"
- data_source_google_folder_organization_policy_fmt "fmt"
- data_source_google_global_compute_forwarding_rule_fmt "fmt"
- data_source_google_iam_policy_fmt "fmt"
- data_source_google_iam_role_fmt "fmt"
- data_source_google_iam_testable_permissions_fmt "fmt"
- data_source_google_kms_crypto_key_version_fmt "fmt"
- data_source_google_kms_secret_ciphertext_fmt "fmt"
- data_source_google_kms_secret_fmt "fmt"
- data_source_google_monitoring_uptime_check_ips_fmt "fmt"
- data_source_google_netblock_ip_ranges_fmt "fmt"
- data_source_google_organization_fmt "fmt"
- data_source_google_project_fmt "fmt"
- data_source_google_project_organization_policy_fmt "fmt"
- data_source_google_projects_fmt "fmt"
- data_source_google_service_account_access_token_fmt "fmt"
- data_source_google_service_account_fmt "fmt"
- data_source_google_service_account_id_token_fmt "fmt"
- data_source_google_service_account_key_fmt "fmt"
- data_source_google_sql_ca_certs_fmt "fmt"
- data_source_google_storage_bucket_object_fmt "fmt"
- data_source_google_storage_project_service_account_fmt "fmt"
- data_source_google_storage_transfer_project_service_account_fmt "fmt"
- data_source_iap_client_fmt "fmt"
- data_source_monitoring_notification_channel_fmt "fmt"
- data_source_monitoring_service_fmt "fmt"
- data_source_pubsub_topic_fmt "fmt"
- data_source_secret_manager_secret_fmt "fmt"
- data_source_secret_manager_secret_version_fmt "fmt"
- data_source_sourcerepo_repository_fmt "fmt"
- data_source_spanner_instance_fmt "fmt"
- data_source_sql_backup_run_fmt "fmt"
- data_source_storage_bucket_object_content_fmt "fmt"
- data_source_storage_object_signed_url_fmt "fmt"
- data_source_tpu_tensorflow_versions_fmt "fmt"
- dataproc_cluster_operation_fmt "fmt"
- dataproc_job_operation_fmt "fmt"
- datastore_operation_fmt "fmt"
- dcl_logger_fmt "fmt"
- deployment_manager_operation_fmt "fmt"
- dialogflow_cx_operation_fmt "fmt"
- error_retry_predicates_fmt "fmt"
- field_helpers_fmt "fmt"
- filestore_operation_fmt "fmt"
- firestore_operation_fmt "fmt"
- game_services_operation_fmt "fmt"
- gke_hub_operation_fmt "fmt"
- healthcare_utils_fmt "fmt"
- iam_batching_fmt "fmt"
- iam_bigquery_dataset_fmt "fmt"
- iam_bigquery_table_fmt "fmt"
- iam_bigtable_instance_fmt "fmt"
- iam_bigtable_table_fmt "fmt"
- iam_billing_account_fmt "fmt"
- iam_binary_authorization_attestor_fmt "fmt"
- iam_cloud_run_service_fmt "fmt"
- iam_cloudfunctions_function_fmt "fmt"
- iam_compute_disk_fmt "fmt"
- iam_compute_image_fmt "fmt"
- iam_compute_instance_fmt "fmt"
- iam_compute_region_disk_fmt "fmt"
- iam_compute_subnetwork_fmt "fmt"
- iam_data_catalog_entry_group_fmt "fmt"
- iam_data_catalog_tag_template_fmt "fmt"
- iam_dataproc_cluster_fmt "fmt"
- iam_dataproc_job_fmt "fmt"
- iam_endpoints_service_fmt "fmt"
- iam_fmt "fmt"
- iam_folder_fmt "fmt"
- iam_healthcare_consent_store_fmt "fmt"
- iam_healthcare_dataset_fmt "fmt"
- iam_healthcare_dicom_store_fmt "fmt"
- iam_healthcare_fhir_store_fmt "fmt"
- iam_healthcare_hl7_v2_store_fmt "fmt"
- iam_iap_app_engine_service_fmt "fmt"
- iam_iap_app_engine_version_fmt "fmt"
- iam_iap_tunnel_fmt "fmt"
- iam_iap_tunnel_instance_fmt "fmt"
- iam_iap_web_backend_service_fmt "fmt"
- iam_iap_web_fmt "fmt"
- iam_iap_web_type_app_engine_fmt "fmt"
- iam_iap_web_type_compute_fmt "fmt"
- iam_kms_crypto_key_fmt "fmt"
- iam_kms_key_ring_fmt "fmt"
- iam_notebooks_instance_fmt "fmt"
- iam_organization_fmt "fmt"
- iam_privateca_ca_pool_fmt "fmt"
- iam_project_fmt "fmt"
- iam_pubsub_subscription_fmt "fmt"
- iam_pubsub_topic_fmt "fmt"
- iam_secret_manager_secret_fmt "fmt"
- iam_service_account_fmt "fmt"
- iam_sourcerepo_repository_fmt "fmt"
- iam_spanner_database_fmt "fmt"
- iam_spanner_instance_fmt "fmt"
- iam_storage_bucket_fmt "fmt"
- iam_tags_tag_key_fmt "fmt"
- iam_tags_tag_value_fmt "fmt"
- image_fmt "fmt"
- import_fmt "fmt"
- kms_utils_fmt "fmt"
- logging_exclusion_billing_account_fmt "fmt"
- logging_exclusion_folder_fmt "fmt"
- logging_exclusion_organization_fmt "fmt"
- logging_exclusion_project_fmt "fmt"
- logging_utils_fmt "fmt"
- memcache_operation_fmt "fmt"
- metadata_fmt "fmt"
- ml_engine_operation_fmt "fmt"
- mtls_util_fmt "fmt"
- network_management_operation_fmt "fmt"
- network_services_operation_fmt "fmt"
- notebooks_operation_fmt "fmt"
- orgpolicy_utils_fmt "fmt"
- privateca_operation_fmt "fmt"
- provider_fmt "fmt"
- pubsub_utils_fmt "fmt"
- redis_operation_fmt "fmt"
- regional_utils_fmt "fmt"
- resource_access_context_manager_access_level_condition_fmt "fmt"
- resource_access_context_manager_access_level_fmt "fmt"
- resource_access_context_manager_access_levels_fmt "fmt"
- resource_access_context_manager_access_policy_fmt "fmt"
- resource_access_context_manager_gcp_user_access_binding_fmt "fmt"
- resource_access_context_manager_service_perimeter_fmt "fmt"
- resource_access_context_manager_service_perimeter_resource_fmt "fmt"
- resource_access_context_manager_service_perimeters_fmt "fmt"
- resource_active_directory_domain_fmt "fmt"
- resource_active_directory_domain_trust_fmt "fmt"
- resource_apigee_envgroup_attachment_fmt "fmt"
- resource_apigee_envgroup_fmt "fmt"
- resource_apigee_environment_fmt "fmt"
- resource_apigee_instance_attachment_fmt "fmt"
- resource_apigee_instance_fmt "fmt"
- resource_apigee_organization_fmt "fmt"
- resource_app_engine_application_fmt "fmt"
- resource_app_engine_application_url_dispatch_rules_fmt "fmt"
- resource_app_engine_domain_mapping_fmt "fmt"
- resource_app_engine_firewall_rule_fmt "fmt"
- resource_app_engine_flexible_app_version_fmt "fmt"
- resource_app_engine_service_network_settings_fmt "fmt"
- resource_app_engine_service_split_traffic_fmt "fmt"
- resource_app_engine_standard_app_version_fmt "fmt"
- resource_assured_workloads_workload_fmt "fmt"
- resource_bigquery_data_transfer_config_fmt "fmt"
- resource_bigquery_dataset_access_fmt "fmt"
- resource_bigquery_dataset_fmt "fmt"
- resource_bigquery_job_fmt "fmt"
- resource_bigquery_reservation_fmt "fmt"
- resource_bigquery_routine_fmt "fmt"
- resource_bigquery_table_fmt "fmt"
- resource_bigtable_app_profile_fmt "fmt"
- resource_bigtable_gc_policy_fmt "fmt"
- resource_bigtable_instance_fmt "fmt"
- resource_bigtable_table_fmt "fmt"
- resource_billing_budget_fmt "fmt"
- resource_binary_authorization_attestor_fmt "fmt"
- resource_binary_authorization_policy_fmt "fmt"
- resource_cloud_asset_folder_feed_fmt "fmt"
- resource_cloud_asset_organization_feed_fmt "fmt"
- resource_cloud_asset_project_feed_fmt "fmt"
- resource_cloud_identity_group_fmt "fmt"
- resource_cloud_identity_group_membership_fmt "fmt"
- resource_cloud_run_domain_mapping_fmt "fmt"
- resource_cloud_run_service_fmt "fmt"
- resource_cloud_scheduler_job_fmt "fmt"
- resource_cloud_tasks_queue_fmt "fmt"
- resource_cloudbuild_trigger_fmt "fmt"
- resource_cloudfunctions_function_fmt "fmt"
- resource_cloudiot_device_fmt "fmt"
- resource_cloudiot_registry_fmt "fmt"
- resource_composer_environment_fmt "fmt"
- resource_compute_address_fmt "fmt"
- resource_compute_attached_disk_fmt "fmt"
- resource_compute_autoscaler_fmt "fmt"
- resource_compute_backend_bucket_fmt "fmt"
- resource_compute_backend_bucket_signed_url_key_fmt "fmt"
- resource_compute_backend_service_fmt "fmt"
- resource_compute_backend_service_signed_url_key_fmt "fmt"
- resource_compute_disk_fmt "fmt"
- resource_compute_disk_resource_policy_attachment_fmt "fmt"
- resource_compute_external_vpn_gateway_fmt "fmt"
- resource_compute_firewall_fmt "fmt"
- resource_compute_firewall_migrate_fmt "fmt"
- resource_compute_firewall_policy_association_fmt "fmt"
- resource_compute_firewall_policy_fmt "fmt"
- resource_compute_firewall_policy_rule_fmt "fmt"
- resource_compute_forwarding_rule_fmt "fmt"
- resource_compute_global_address_fmt "fmt"
- resource_compute_global_forwarding_rule_fmt "fmt"
- resource_compute_global_network_endpoint_fmt "fmt"
- resource_compute_global_network_endpoint_group_fmt "fmt"
- resource_compute_ha_vpn_gateway_fmt "fmt"
- resource_compute_health_check_fmt "fmt"
- resource_compute_http_health_check_fmt "fmt"
- resource_compute_https_health_check_fmt "fmt"
- resource_compute_image_fmt "fmt"
- resource_compute_instance_fmt "fmt"
- resource_compute_instance_from_template_fmt "fmt"
- resource_compute_instance_group_fmt "fmt"
- resource_compute_instance_group_manager_fmt "fmt"
- resource_compute_instance_group_migrate_fmt "fmt"
- resource_compute_instance_group_named_port_fmt "fmt"
- resource_compute_instance_migrate_fmt "fmt"
- resource_compute_instance_template_fmt "fmt"
- resource_compute_instance_template_migrate_fmt "fmt"
- resource_compute_interconnect_attachment_fmt "fmt"
- resource_compute_managed_ssl_certificate_fmt "fmt"
- resource_compute_network_endpoint_fmt "fmt"
- resource_compute_network_endpoint_group_fmt "fmt"
- resource_compute_network_fmt "fmt"
- resource_compute_network_peering_fmt "fmt"
- resource_compute_network_peering_routes_config_fmt "fmt"
- resource_compute_node_group_fmt "fmt"
- resource_compute_node_template_fmt "fmt"
- resource_compute_packet_mirroring_fmt "fmt"
- resource_compute_per_instance_config_fmt "fmt"
- resource_compute_project_default_network_tier_fmt "fmt"
- resource_compute_project_metadata_fmt "fmt"
- resource_compute_project_metadata_item_fmt "fmt"
- resource_compute_region_autoscaler_fmt "fmt"
- resource_compute_region_backend_service_fmt "fmt"
- resource_compute_region_disk_fmt "fmt"
- resource_compute_region_disk_resource_policy_attachment_fmt "fmt"
- resource_compute_region_health_check_fmt "fmt"
- resource_compute_region_instance_group_manager_fmt "fmt"
- resource_compute_region_network_endpoint_group_fmt "fmt"
- resource_compute_region_per_instance_config_fmt "fmt"
- resource_compute_region_ssl_certificate_fmt "fmt"
- resource_compute_region_target_http_proxy_fmt "fmt"
- resource_compute_region_target_https_proxy_fmt "fmt"
- resource_compute_region_url_map_fmt "fmt"
- resource_compute_reservation_fmt "fmt"
- resource_compute_resource_policy_fmt "fmt"
- resource_compute_route_fmt "fmt"
- resource_compute_router_fmt "fmt"
- resource_compute_router_interface_fmt "fmt"
- resource_compute_router_nat_fmt "fmt"
- resource_compute_router_peer_fmt "fmt"
- resource_compute_security_policy_fmt "fmt"
- resource_compute_service_attachment_fmt "fmt"
- resource_compute_shared_vpc_host_project_fmt "fmt"
- resource_compute_shared_vpc_service_project_fmt "fmt"
- resource_compute_snapshot_fmt "fmt"
- resource_compute_ssl_certificate_fmt "fmt"
- resource_compute_ssl_policy_fmt "fmt"
- resource_compute_subnetwork_fmt "fmt"
- resource_compute_target_grpc_proxy_fmt "fmt"
- resource_compute_target_http_proxy_fmt "fmt"
- resource_compute_target_https_proxy_fmt "fmt"
- resource_compute_target_instance_fmt "fmt"
- resource_compute_target_pool_fmt "fmt"
- resource_compute_target_ssl_proxy_fmt "fmt"
- resource_compute_target_tcp_proxy_fmt "fmt"
- resource_compute_url_map_fmt "fmt"
- resource_compute_vpn_gateway_fmt "fmt"
- resource_compute_vpn_tunnel_fmt "fmt"
- resource_container_analysis_note_fmt "fmt"
- resource_container_analysis_occurrence_fmt "fmt"
- resource_container_cluster_fmt "fmt"
- resource_container_cluster_migrate_fmt "fmt"
- resource_container_node_pool_fmt "fmt"
- resource_container_node_pool_migrate_fmt "fmt"
- resource_container_registry_fmt "fmt"
- resource_data_catalog_entry_fmt "fmt"
- resource_data_catalog_entry_group_fmt "fmt"
- resource_data_catalog_tag_fmt "fmt"
- resource_data_catalog_tag_template_fmt "fmt"
- resource_data_loss_prevention_deidentify_template_fmt "fmt"
- resource_data_loss_prevention_inspect_template_fmt "fmt"
- resource_data_loss_prevention_job_trigger_fmt "fmt"
- resource_data_loss_prevention_stored_info_type_fmt "fmt"
- resource_dataflow_job_fmt "fmt"
- resource_dataproc_autoscaling_policy_fmt "fmt"
- resource_dataproc_cluster_fmt "fmt"
- resource_dataproc_job_fmt "fmt"
- resource_dataproc_workflow_template_fmt "fmt"
- resource_datastore_index_fmt "fmt"
- resource_deployment_manager_deployment_fmt "fmt"
- resource_dialogflow_agent_fmt "fmt"
- resource_dialogflow_cx_agent_fmt "fmt"
- resource_dialogflow_cx_entity_type_fmt "fmt"
- resource_dialogflow_cx_environment_fmt "fmt"
- resource_dialogflow_cx_flow_fmt "fmt"
- resource_dialogflow_cx_intent_fmt "fmt"
- resource_dialogflow_cx_page_fmt "fmt"
- resource_dialogflow_cx_version_fmt "fmt"
- resource_dialogflow_entity_type_fmt "fmt"
- resource_dialogflow_fulfillment_fmt "fmt"
- resource_dialogflow_intent_fmt "fmt"
- resource_dns_managed_zone_fmt "fmt"
- resource_dns_policy_fmt "fmt"
- resource_dns_record_set_fmt "fmt"
- resource_endpoints_service_fmt "fmt"
- resource_endpoints_service_migration_fmt "fmt"
- resource_essential_contacts_contact_fmt "fmt"
- resource_eventarc_trigger_fmt "fmt"
- resource_filestore_instance_fmt "fmt"
- resource_firestore_document_fmt "fmt"
- resource_firestore_index_fmt "fmt"
- resource_folder_access_approval_settings_fmt "fmt"
- resource_game_services_game_server_cluster_fmt "fmt"
- resource_game_services_game_server_config_fmt "fmt"
- resource_game_services_game_server_deployment_fmt "fmt"
- resource_game_services_game_server_deployment_rollout_fmt "fmt"
- resource_game_services_realm_fmt "fmt"
- resource_gke_hub_membership_fmt "fmt"
- resource_google_billing_subaccount_fmt "fmt"
- resource_google_folder_fmt "fmt"
- resource_google_folder_organization_policy_fmt "fmt"
- resource_google_organization_iam_custom_role_fmt "fmt"
- resource_google_organization_policy_fmt "fmt"
- resource_google_project_default_service_accounts_fmt "fmt"
- resource_google_project_fmt "fmt"
- resource_google_project_iam_custom_role_fmt "fmt"
- resource_google_project_migrate_fmt "fmt"
- resource_google_project_organization_policy_fmt "fmt"
- resource_google_project_service_fmt "fmt"
- resource_google_service_account_fmt "fmt"
- resource_google_service_account_key_fmt "fmt"
- resource_google_service_networking_peered_dns_domain_fmt "fmt"
- resource_healthcare_consent_store_fmt "fmt"
- resource_healthcare_dataset_fmt "fmt"
- resource_healthcare_dicom_store_fmt "fmt"
- resource_healthcare_fhir_store_fmt "fmt"
- resource_healthcare_hl7_v2_store_fmt "fmt"
- resource_iam_audit_config_fmt "fmt"
- resource_iam_binding_fmt "fmt"
- resource_iam_member_fmt "fmt"
- resource_iam_policy_fmt "fmt"
- resource_iap_brand_fmt "fmt"
- resource_iap_client_fmt "fmt"
- resource_identity_platform_default_supported_idp_config_fmt "fmt"
- resource_identity_platform_inbound_saml_config_fmt "fmt"
- resource_identity_platform_oauth_idp_config_fmt "fmt"
- resource_identity_platform_tenant_default_supported_idp_config_fmt "fmt"
- resource_identity_platform_tenant_fmt "fmt"
- resource_identity_platform_tenant_inbound_saml_config_fmt "fmt"
- resource_identity_platform_tenant_oauth_idp_config_fmt "fmt"
- resource_kms_crypto_key_fmt "fmt"
- resource_kms_key_ring_fmt "fmt"
- resource_kms_key_ring_import_job_fmt "fmt"
- resource_kms_secret_ciphertext_fmt "fmt"
- resource_logging_billing_account_bucket_config_fmt "fmt"
- resource_logging_billing_account_sink_fmt "fmt"
- resource_logging_bucket_config_fmt "fmt"
- resource_logging_exclusion_fmt "fmt"
- resource_logging_folder_bucket_config_fmt "fmt"
- resource_logging_folder_sink_fmt "fmt"
- resource_logging_metric_fmt "fmt"
- resource_logging_organization_bucket_config_fmt "fmt"
- resource_logging_organization_sink_fmt "fmt"
- resource_logging_project_bucket_config_fmt "fmt"
- resource_logging_project_sink_fmt "fmt"
- resource_logging_sink_fmt "fmt"
- resource_manager_operation_fmt "fmt"
- resource_memcache_instance_fmt "fmt"
- resource_ml_engine_model_fmt "fmt"
- resource_monitoring_alert_policy_fmt "fmt"
- resource_monitoring_custom_service_fmt "fmt"
- resource_monitoring_dashboard_fmt "fmt"
- resource_monitoring_group_fmt "fmt"
- resource_monitoring_metric_descriptor_fmt "fmt"
- resource_monitoring_notification_channel_fmt "fmt"
- resource_monitoring_slo_fmt "fmt"
- resource_monitoring_uptime_check_config_fmt "fmt"
- resource_network_management_connectivity_test_resource_fmt "fmt"
- resource_network_services_edge_cache_keyset_fmt "fmt"
- resource_network_services_edge_cache_origin_fmt "fmt"
- resource_network_services_edge_cache_service_fmt "fmt"
- resource_notebooks_environment_fmt "fmt"
- resource_notebooks_instance_fmt "fmt"
- resource_notebooks_location_fmt "fmt"
- resource_org_policy_policy_fmt "fmt"
- resource_organization_access_approval_settings_fmt "fmt"
- resource_os_config_patch_deployment_fmt "fmt"
- resource_os_login_ssh_public_key_fmt "fmt"
- resource_privateca_ca_pool_fmt "fmt"
- resource_privateca_certificate_authority_fmt "fmt"
- resource_privateca_certificate_fmt "fmt"
- resource_privateca_certificate_template_fmt "fmt"
- resource_project_access_approval_settings_fmt "fmt"
- resource_pubsub_lite_reservation_fmt "fmt"
- resource_pubsub_lite_subscription_fmt "fmt"
- resource_pubsub_lite_topic_fmt "fmt"
- resource_pubsub_schema_fmt "fmt"
- resource_pubsub_subscription_fmt "fmt"
- resource_pubsub_topic_fmt "fmt"
- resource_redis_instance_fmt "fmt"
- resource_resource_manager_lien_fmt "fmt"
- resource_scc_notification_config_fmt "fmt"
- resource_scc_source_fmt "fmt"
- resource_secret_manager_secret_fmt "fmt"
- resource_secret_manager_secret_version_fmt "fmt"
- resource_service_networking_connection_fmt "fmt"
- resource_sourcerepo_repository_fmt "fmt"
- resource_spanner_database_fmt "fmt"
- resource_spanner_instance_fmt "fmt"
- resource_sql_database_fmt "fmt"
- resource_sql_database_instance_fmt "fmt"
- resource_sql_source_representation_instance_fmt "fmt"
- resource_sql_ssl_cert_fmt "fmt"
- resource_sql_user_fmt "fmt"
- resource_sql_user_migrate_fmt "fmt"
- resource_storage_bucket_access_control_fmt "fmt"
- resource_storage_bucket_acl_fmt "fmt"
- resource_storage_bucket_fmt "fmt"
- resource_storage_bucket_object_fmt "fmt"
- resource_storage_default_object_access_control_fmt "fmt"
- resource_storage_default_object_acl_fmt "fmt"
- resource_storage_hmac_key_fmt "fmt"
- resource_storage_notification_fmt "fmt"
- resource_storage_object_access_control_fmt "fmt"
- resource_storage_object_acl_fmt "fmt"
- resource_storage_transfer_job_fmt "fmt"
- resource_tags_tag_binding_fmt "fmt"
- resource_tags_tag_key_fmt "fmt"
- resource_tags_tag_value_fmt "fmt"
- resource_tpu_node_fmt "fmt"
- resource_usage_export_bucket_fmt "fmt"
- resource_vertex_ai_dataset_fmt "fmt"
- resource_vpc_access_connector_fmt "fmt"
- resource_workflows_workflow_fmt "fmt"
- retry_transport_fmt "fmt"
- self_link_helpers_fmt "fmt"
- service_account_waiter_fmt "fmt"
- service_usage_operation_fmt "fmt"
- serviceman_operation_fmt "fmt"
- serviceusage_batching_fmt "fmt"
- spanner_operation_fmt "fmt"
- sqladmin_operation_fmt "fmt"
- stateful_mig_polling_fmt "fmt"
- tags_operation_fmt "fmt"
- test_utils_fmt "fmt"
- tpgtools_utils_fmt "fmt"
- tpu_operation_fmt "fmt"
- transport_fmt "fmt"
- utils_fmt "fmt"
- validation_fmt "fmt"
- vertex_ai_operation_fmt "fmt"
- vpc_access_operation_fmt "fmt"
- workflows_operation_fmt "fmt"
- hashcode_crc32 "hash/crc32"
- error_retry_predicates_io "io"
- resource_storage_bucket_object_io "io"
- data_source_google_netblock_ip_ranges_ioutil "io/ioutil"
- data_source_storage_bucket_object_content_ioutil "io/ioutil"
- path_or_contents_ioutil "io/ioutil"
- resource_storage_bucket_object_ioutil "io/ioutil"
- retry_transport_ioutil "io/ioutil"
- batcher_log "log"
- cloudrun_polling_log "log"
- common_diff_suppress_log "log"
- common_operation_log "log"
- common_polling_log "log"
- compute_operation_log "log"
- config_log "log"
- container_operation_log "log"
- data_source_cloud_run_locations_log "log"
- data_source_dns_keys_log "log"
- data_source_google_composer_image_versions_log "log"
- data_source_google_compute_image_log "log"
- data_source_google_compute_node_types_log "log"
- data_source_google_compute_region_instance_group_log "log"
- data_source_google_compute_regions_log "log"
- data_source_google_compute_zones_log "log"
- data_source_google_kms_crypto_key_version_log "log"
- data_source_google_kms_secret_ciphertext_log "log"
- data_source_google_kms_secret_log "log"
- data_source_google_service_account_access_token_log "log"
- data_source_google_sql_ca_certs_log "log"
- data_source_secret_manager_secret_version_log "log"
- data_source_storage_object_signed_url_log "log"
- data_source_tpu_tensorflow_versions_log "log"
- dcl_logger_log "log"
- error_retry_predicates_log "log"
- iam_log "log"
- import_log "log"
- metadata_log "log"
- mutexkv_log "log"
- resource_access_context_manager_access_level_condition_log "log"
- resource_access_context_manager_access_level_log "log"
- resource_access_context_manager_access_levels_log "log"
- resource_access_context_manager_access_policy_log "log"
- resource_access_context_manager_gcp_user_access_binding_log "log"
- resource_access_context_manager_service_perimeter_log "log"
- resource_access_context_manager_service_perimeter_resource_log "log"
- resource_access_context_manager_service_perimeters_log "log"
- resource_active_directory_domain_log "log"
- resource_active_directory_domain_trust_log "log"
- resource_apigee_envgroup_attachment_log "log"
- resource_apigee_envgroup_log "log"
- resource_apigee_environment_log "log"
- resource_apigee_instance_attachment_log "log"
- resource_apigee_instance_log "log"
- resource_apigee_organization_log "log"
- resource_app_engine_application_log "log"
- resource_app_engine_application_url_dispatch_rules_log "log"
- resource_app_engine_domain_mapping_log "log"
- resource_app_engine_firewall_rule_log "log"
- resource_app_engine_flexible_app_version_log "log"
- resource_app_engine_service_network_settings_log "log"
- resource_app_engine_service_split_traffic_log "log"
- resource_app_engine_standard_app_version_log "log"
- resource_assured_workloads_workload_log "log"
- resource_bigquery_data_transfer_config_log "log"
- resource_bigquery_dataset_access_log "log"
- resource_bigquery_dataset_log "log"
- resource_bigquery_job_log "log"
- resource_bigquery_reservation_log "log"
- resource_bigquery_routine_log "log"
- resource_bigquery_table_log "log"
- resource_bigtable_app_profile_log "log"
- resource_bigtable_gc_policy_log "log"
- resource_bigtable_instance_log "log"
- resource_bigtable_instance_migrate_log "log"
- resource_bigtable_table_log "log"
- resource_billing_budget_log "log"
- resource_binary_authorization_attestor_log "log"
- resource_binary_authorization_policy_log "log"
- resource_cloud_asset_folder_feed_log "log"
- resource_cloud_asset_organization_feed_log "log"
- resource_cloud_asset_project_feed_log "log"
- resource_cloud_identity_group_log "log"
- resource_cloud_identity_group_membership_log "log"
- resource_cloud_run_domain_mapping_log "log"
- resource_cloud_run_service_log "log"
- resource_cloud_scheduler_job_log "log"
- resource_cloud_tasks_queue_log "log"
- resource_cloudbuild_trigger_log "log"
- resource_cloudfunctions_function_log "log"
- resource_cloudiot_device_log "log"
- resource_cloudiot_registry_log "log"
- resource_composer_environment_log "log"
- resource_compute_address_log "log"
- resource_compute_attached_disk_log "log"
- resource_compute_autoscaler_log "log"
- resource_compute_backend_bucket_log "log"
- resource_compute_backend_bucket_signed_url_key_log "log"
- resource_compute_backend_service_log "log"
- resource_compute_backend_service_signed_url_key_log "log"
- resource_compute_disk_log "log"
- resource_compute_disk_resource_policy_attachment_log "log"
- resource_compute_external_vpn_gateway_log "log"
- resource_compute_firewall_log "log"
- resource_compute_firewall_migrate_log "log"
- resource_compute_firewall_policy_association_log "log"
- resource_compute_firewall_policy_log "log"
- resource_compute_firewall_policy_rule_log "log"
- resource_compute_forwarding_rule_log "log"
- resource_compute_global_address_log "log"
- resource_compute_global_forwarding_rule_log "log"
- resource_compute_global_network_endpoint_group_log "log"
- resource_compute_global_network_endpoint_log "log"
- resource_compute_ha_vpn_gateway_log "log"
- resource_compute_health_check_log "log"
- resource_compute_http_health_check_log "log"
- resource_compute_https_health_check_log "log"
- resource_compute_image_log "log"
- resource_compute_instance_from_template_log "log"
- resource_compute_instance_group_log "log"
- resource_compute_instance_group_manager_log "log"
- resource_compute_instance_group_migrate_log "log"
- resource_compute_instance_group_named_port_log "log"
- resource_compute_instance_log "log"
- resource_compute_instance_migrate_log "log"
- resource_compute_instance_template_migrate_log "log"
- resource_compute_interconnect_attachment_log "log"
- resource_compute_managed_ssl_certificate_log "log"
- resource_compute_network_endpoint_group_log "log"
- resource_compute_network_endpoint_log "log"
- resource_compute_network_log "log"
- resource_compute_network_peering_log "log"
- resource_compute_network_peering_routes_config_log "log"
- resource_compute_node_group_log "log"
- resource_compute_node_template_log "log"
- resource_compute_packet_mirroring_log "log"
- resource_compute_per_instance_config_log "log"
- resource_compute_project_default_network_tier_log "log"
- resource_compute_project_metadata_item_log "log"
- resource_compute_project_metadata_log "log"
- resource_compute_region_autoscaler_log "log"
- resource_compute_region_backend_service_log "log"
- resource_compute_region_disk_log "log"
- resource_compute_region_disk_resource_policy_attachment_log "log"
- resource_compute_region_health_check_log "log"
- resource_compute_region_instance_group_manager_log "log"
- resource_compute_region_network_endpoint_group_log "log"
- resource_compute_region_per_instance_config_log "log"
- resource_compute_region_ssl_certificate_log "log"
- resource_compute_region_target_http_proxy_log "log"
- resource_compute_region_target_https_proxy_log "log"
- resource_compute_region_url_map_log "log"
- resource_compute_reservation_log "log"
- resource_compute_resource_policy_log "log"
- resource_compute_route_log "log"
- resource_compute_router_interface_log "log"
- resource_compute_router_log "log"
- resource_compute_router_nat_log "log"
- resource_compute_router_peer_log "log"
- resource_compute_security_policy_log "log"
- resource_compute_service_attachment_log "log"
- resource_compute_shared_vpc_host_project_log "log"
- resource_compute_shared_vpc_service_project_log "log"
- resource_compute_snapshot_log "log"
- resource_compute_ssl_certificate_log "log"
- resource_compute_ssl_policy_log "log"
- resource_compute_subnetwork_log "log"
- resource_compute_target_grpc_proxy_log "log"
- resource_compute_target_http_proxy_log "log"
- resource_compute_target_https_proxy_log "log"
- resource_compute_target_instance_log "log"
- resource_compute_target_pool_log "log"
- resource_compute_target_ssl_proxy_log "log"
- resource_compute_target_tcp_proxy_log "log"
- resource_compute_url_map_log "log"
- resource_compute_vpn_gateway_log "log"
- resource_compute_vpn_tunnel_log "log"
- resource_container_analysis_note_log "log"
- resource_container_analysis_occurrence_log "log"
- resource_container_cluster_log "log"
- resource_container_cluster_migrate_log "log"
- resource_container_node_pool_log "log"
- resource_container_node_pool_migrate_log "log"
- resource_container_registry_log "log"
- resource_data_catalog_entry_group_log "log"
- resource_data_catalog_entry_log "log"
- resource_data_catalog_tag_log "log"
- resource_data_catalog_tag_template_log "log"
- resource_data_loss_prevention_deidentify_template_log "log"
- resource_data_loss_prevention_inspect_template_log "log"
- resource_data_loss_prevention_job_trigger_log "log"
- resource_data_loss_prevention_stored_info_type_log "log"
- resource_dataflow_job_log "log"
- resource_dataproc_autoscaling_policy_log "log"
- resource_dataproc_cluster_log "log"
- resource_dataproc_job_log "log"
- resource_dataproc_workflow_template_log "log"
- resource_datastore_index_log "log"
- resource_deployment_manager_deployment_log "log"
- resource_dialogflow_agent_log "log"
- resource_dialogflow_cx_agent_log "log"
- resource_dialogflow_cx_entity_type_log "log"
- resource_dialogflow_cx_environment_log "log"
- resource_dialogflow_cx_flow_log "log"
- resource_dialogflow_cx_intent_log "log"
- resource_dialogflow_cx_page_log "log"
- resource_dialogflow_cx_version_log "log"
- resource_dialogflow_entity_type_log "log"
- resource_dialogflow_fulfillment_log "log"
- resource_dialogflow_intent_log "log"
- resource_dns_managed_zone_log "log"
- resource_dns_policy_log "log"
- resource_dns_record_set_log "log"
- resource_endpoints_service_log "log"
- resource_endpoints_service_migration_log "log"
- resource_essential_contacts_contact_log "log"
- resource_eventarc_trigger_log "log"
- resource_filestore_instance_log "log"
- resource_firestore_document_log "log"
- resource_firestore_index_log "log"
- resource_folder_access_approval_settings_log "log"
- resource_game_services_game_server_cluster_log "log"
- resource_game_services_game_server_config_log "log"
- resource_game_services_game_server_deployment_log "log"
- resource_game_services_game_server_deployment_rollout_log "log"
- resource_game_services_realm_log "log"
- resource_gke_hub_membership_log "log"
- resource_google_project_default_service_accounts_log "log"
- resource_google_project_log "log"
- resource_google_project_migrate_log "log"
- resource_google_project_service_log "log"
- resource_google_service_account_key_log "log"
- resource_google_service_networking_peered_dns_domain_log "log"
- resource_healthcare_consent_store_log "log"
- resource_healthcare_dataset_log "log"
- resource_healthcare_dicom_store_log "log"
- resource_healthcare_fhir_store_log "log"
- resource_healthcare_hl7_v2_store_log "log"
- resource_iam_audit_config_log "log"
- resource_iam_binding_log "log"
- resource_iam_member_log "log"
- resource_iap_brand_log "log"
- resource_iap_client_log "log"
- resource_identity_platform_default_supported_idp_config_log "log"
- resource_identity_platform_inbound_saml_config_log "log"
- resource_identity_platform_oauth_idp_config_log "log"
- resource_identity_platform_tenant_default_supported_idp_config_log "log"
- resource_identity_platform_tenant_inbound_saml_config_log "log"
- resource_identity_platform_tenant_log "log"
- resource_identity_platform_tenant_oauth_idp_config_log "log"
- resource_kms_crypto_key_log "log"
- resource_kms_key_ring_import_job_log "log"
- resource_kms_key_ring_log "log"
- resource_kms_secret_ciphertext_log "log"
- resource_logging_bucket_config_log "log"
- resource_logging_metric_log "log"
- resource_memcache_instance_log "log"
- resource_ml_engine_model_log "log"
- resource_monitoring_alert_policy_log "log"
- resource_monitoring_custom_service_log "log"
- resource_monitoring_group_log "log"
- resource_monitoring_metric_descriptor_log "log"
- resource_monitoring_notification_channel_log "log"
- resource_monitoring_slo_log "log"
- resource_monitoring_uptime_check_config_log "log"
- resource_network_management_connectivity_test_resource_log "log"
- resource_network_services_edge_cache_keyset_log "log"
- resource_network_services_edge_cache_origin_log "log"
- resource_network_services_edge_cache_service_log "log"
- resource_notebooks_environment_log "log"
- resource_notebooks_instance_log "log"
- resource_notebooks_location_log "log"
- resource_org_policy_policy_log "log"
- resource_organization_access_approval_settings_log "log"
- resource_os_config_patch_deployment_log "log"
- resource_os_login_ssh_public_key_log "log"
- resource_privateca_ca_pool_log "log"
- resource_privateca_certificate_authority_log "log"
- resource_privateca_certificate_log "log"
- resource_privateca_certificate_template_log "log"
- resource_project_access_approval_settings_log "log"
- resource_pubsub_lite_reservation_log "log"
- resource_pubsub_lite_subscription_log "log"
- resource_pubsub_lite_topic_log "log"
- resource_pubsub_schema_log "log"
- resource_pubsub_subscription_log "log"
- resource_pubsub_topic_log "log"
- resource_redis_instance_log "log"
- resource_resource_manager_lien_log "log"
- resource_scc_notification_config_log "log"
- resource_scc_source_log "log"
- resource_secret_manager_secret_log "log"
- resource_secret_manager_secret_version_log "log"
- resource_service_networking_connection_log "log"
- resource_sourcerepo_repository_log "log"
- resource_spanner_database_log "log"
- resource_spanner_instance_log "log"
- resource_sql_database_instance_log "log"
- resource_sql_database_log "log"
- resource_sql_source_representation_instance_log "log"
- resource_sql_ssl_cert_log "log"
- resource_sql_user_log "log"
- resource_sql_user_migrate_log "log"
- resource_storage_bucket_access_control_log "log"
- resource_storage_bucket_acl_log "log"
- resource_storage_bucket_log "log"
- resource_storage_bucket_object_log "log"
- resource_storage_default_object_access_control_log "log"
- resource_storage_hmac_key_log "log"
- resource_storage_object_access_control_log "log"
- resource_storage_transfer_job_log "log"
- resource_tags_tag_binding_log "log"
- resource_tags_tag_key_log "log"
- resource_tags_tag_value_log "log"
- resource_tpu_node_log "log"
- resource_usage_export_bucket_log "log"
- resource_vertex_ai_dataset_log "log"
- resource_vpc_access_connector_log "log"
- resource_workflows_workflow_log "log"
- retry_transport_log "log"
- retry_utils_log "log"
- service_usage_operation_log "log"
- serviceusage_batching_log "log"
- sql_utils_log "log"
- sqladmin_operation_log "log"
- tpgtools_utils_log "log"
- utils_log "log"
- resource_storage_bucket_math "math"
- common_diff_suppress_net "net"
- error_retry_predicates_net "net"
- resource_compute_subnetwork_net "net"
- resource_compute_vpn_tunnel_net "net"
- resource_dns_record_set_net "net"
- validation_net "net"
- config_http "net/http"
- data_source_google_netblock_ip_ranges_http "net/http"
- data_source_storage_bucket_object_content_http "net/http"
- dataproc_job_operation_http "net/http"
- header_transport_http "net/http"
- resource_google_project_http "net/http"
- resource_storage_bucket_object_http "net/http"
- retry_transport_http "net/http"
- transport_http "net/http"
- retry_transport_httputil "net/http/httputil"
- data_source_google_storage_bucket_object_url "net/url"
- data_source_monitoring_service_urlneturl "net/url"
- data_source_storage_object_signed_url_url "net/url"
- error_retry_predicates_url "net/url"
- mtls_util_url "net/url"
- resource_cloudfunctions_function_url "net/url"
- resource_service_networking_connection_url "net/url"
- self_link_helpers_url "net/url"
- transport_url "net/url"
- bigtable_client_factory_os "os"
- data_source_storage_object_signed_url_os "os"
- path_or_contents_os "os"
- provider_os "os"
- resource_storage_bucket_object_os "os"
- utils_os "os"
- common_diff_suppress_reflect "reflect"
- compute_instance_helpers_reflect "reflect"
- convert_reflect "reflect"
- iam_reflect "reflect"
- resource_access_context_manager_access_level_condition_reflect "reflect"
- resource_access_context_manager_access_level_reflect "reflect"
- resource_access_context_manager_access_levels_reflect "reflect"
- resource_access_context_manager_access_policy_reflect "reflect"
- resource_access_context_manager_gcp_user_access_binding_reflect "reflect"
- resource_access_context_manager_service_perimeter_reflect "reflect"
- resource_access_context_manager_service_perimeter_resource_reflect "reflect"
- resource_access_context_manager_service_perimeters_reflect "reflect"
- resource_active_directory_domain_reflect "reflect"
- resource_active_directory_domain_trust_reflect "reflect"
- resource_apigee_envgroup_attachment_reflect "reflect"
- resource_apigee_envgroup_reflect "reflect"
- resource_apigee_environment_reflect "reflect"
- resource_apigee_instance_attachment_reflect "reflect"
- resource_apigee_instance_reflect "reflect"
- resource_apigee_organization_reflect "reflect"
- resource_app_engine_application_url_dispatch_rules_reflect "reflect"
- resource_app_engine_domain_mapping_reflect "reflect"
- resource_app_engine_firewall_rule_reflect "reflect"
- resource_app_engine_flexible_app_version_reflect "reflect"
- resource_app_engine_service_network_settings_reflect "reflect"
- resource_app_engine_service_split_traffic_reflect "reflect"
- resource_app_engine_standard_app_version_reflect "reflect"
- resource_bigquery_data_transfer_config_reflect "reflect"
- resource_bigquery_dataset_access_reflect "reflect"
- resource_bigquery_dataset_reflect "reflect"
- resource_bigquery_job_reflect "reflect"
- resource_bigquery_reservation_reflect "reflect"
- resource_bigquery_routine_reflect "reflect"
- resource_bigtable_app_profile_reflect "reflect"
- resource_billing_budget_reflect "reflect"
- resource_binary_authorization_attestor_reflect "reflect"
- resource_binary_authorization_policy_reflect "reflect"
- resource_cloud_asset_folder_feed_reflect "reflect"
- resource_cloud_asset_organization_feed_reflect "reflect"
- resource_cloud_asset_project_feed_reflect "reflect"
- resource_cloud_identity_group_membership_reflect "reflect"
- resource_cloud_identity_group_reflect "reflect"
- resource_cloud_run_domain_mapping_reflect "reflect"
- resource_cloud_run_service_reflect "reflect"
- resource_cloud_scheduler_job_reflect "reflect"
- resource_cloud_tasks_queue_reflect "reflect"
- resource_cloudbuild_trigger_reflect "reflect"
- resource_cloudiot_device_reflect "reflect"
- resource_cloudiot_registry_reflect "reflect"
- resource_compute_address_reflect "reflect"
- resource_compute_autoscaler_reflect "reflect"
- resource_compute_backend_bucket_reflect "reflect"
- resource_compute_backend_bucket_signed_url_key_reflect "reflect"
- resource_compute_backend_service_reflect "reflect"
- resource_compute_backend_service_signed_url_key_reflect "reflect"
- resource_compute_disk_reflect "reflect"
- resource_compute_disk_resource_policy_attachment_reflect "reflect"
- resource_compute_external_vpn_gateway_reflect "reflect"
- resource_compute_firewall_reflect "reflect"
- resource_compute_global_address_reflect "reflect"
- resource_compute_global_network_endpoint_group_reflect "reflect"
- resource_compute_global_network_endpoint_reflect "reflect"
- resource_compute_ha_vpn_gateway_reflect "reflect"
- resource_compute_health_check_reflect "reflect"
- resource_compute_http_health_check_reflect "reflect"
- resource_compute_https_health_check_reflect "reflect"
- resource_compute_image_reflect "reflect"
- resource_compute_instance_group_named_port_reflect "reflect"
- resource_compute_instance_template_reflect "reflect"
- resource_compute_interconnect_attachment_reflect "reflect"
- resource_compute_managed_ssl_certificate_reflect "reflect"
- resource_compute_network_endpoint_group_reflect "reflect"
- resource_compute_network_endpoint_reflect "reflect"
- resource_compute_network_peering_routes_config_reflect "reflect"
- resource_compute_network_reflect "reflect"
- resource_compute_node_group_reflect "reflect"
- resource_compute_node_template_reflect "reflect"
- resource_compute_packet_mirroring_reflect "reflect"
- resource_compute_per_instance_config_reflect "reflect"
- resource_compute_region_autoscaler_reflect "reflect"
- resource_compute_region_backend_service_reflect "reflect"
- resource_compute_region_disk_reflect "reflect"
- resource_compute_region_disk_resource_policy_attachment_reflect "reflect"
- resource_compute_region_health_check_reflect "reflect"
- resource_compute_region_network_endpoint_group_reflect "reflect"
- resource_compute_region_per_instance_config_reflect "reflect"
- resource_compute_region_ssl_certificate_reflect "reflect"
- resource_compute_region_target_http_proxy_reflect "reflect"
- resource_compute_region_target_https_proxy_reflect "reflect"
- resource_compute_region_url_map_reflect "reflect"
- resource_compute_reservation_reflect "reflect"
- resource_compute_resource_policy_reflect "reflect"
- resource_compute_route_reflect "reflect"
- resource_compute_router_nat_reflect "reflect"
- resource_compute_router_peer_reflect "reflect"
- resource_compute_router_reflect "reflect"
- resource_compute_service_attachment_reflect "reflect"
- resource_compute_snapshot_reflect "reflect"
- resource_compute_ssl_certificate_reflect "reflect"
- resource_compute_ssl_policy_reflect "reflect"
- resource_compute_subnetwork_reflect "reflect"
- resource_compute_target_grpc_proxy_reflect "reflect"
- resource_compute_target_http_proxy_reflect "reflect"
- resource_compute_target_https_proxy_reflect "reflect"
- resource_compute_target_instance_reflect "reflect"
- resource_compute_target_ssl_proxy_reflect "reflect"
- resource_compute_target_tcp_proxy_reflect "reflect"
- resource_compute_url_map_reflect "reflect"
- resource_compute_vpn_gateway_reflect "reflect"
- resource_compute_vpn_tunnel_reflect "reflect"
- resource_container_analysis_note_reflect "reflect"
- resource_container_analysis_occurrence_reflect "reflect"
- resource_container_cluster_reflect "reflect"
- resource_data_catalog_entry_group_reflect "reflect"
- resource_data_catalog_entry_reflect "reflect"
- resource_data_catalog_tag_reflect "reflect"
- resource_data_catalog_tag_template_reflect "reflect"
- resource_data_loss_prevention_deidentify_template_reflect "reflect"
- resource_data_loss_prevention_inspect_template_reflect "reflect"
- resource_data_loss_prevention_job_trigger_reflect "reflect"
- resource_data_loss_prevention_stored_info_type_reflect "reflect"
- resource_dataproc_autoscaling_policy_reflect "reflect"
- resource_datastore_index_reflect "reflect"
- resource_deployment_manager_deployment_reflect "reflect"
- resource_dialogflow_agent_reflect "reflect"
- resource_dialogflow_cx_agent_reflect "reflect"
- resource_dialogflow_cx_entity_type_reflect "reflect"
- resource_dialogflow_cx_environment_reflect "reflect"
- resource_dialogflow_cx_flow_reflect "reflect"
- resource_dialogflow_cx_intent_reflect "reflect"
- resource_dialogflow_cx_page_reflect "reflect"
- resource_dialogflow_cx_version_reflect "reflect"
- resource_dialogflow_entity_type_reflect "reflect"
- resource_dialogflow_fulfillment_reflect "reflect"
- resource_dialogflow_intent_reflect "reflect"
- resource_dns_managed_zone_reflect "reflect"
- resource_dns_policy_reflect "reflect"
- resource_essential_contacts_contact_reflect "reflect"
- resource_filestore_instance_reflect "reflect"
- resource_firestore_document_reflect "reflect"
- resource_firestore_index_reflect "reflect"
- resource_folder_access_approval_settings_reflect "reflect"
- resource_game_services_game_server_cluster_reflect "reflect"
- resource_game_services_game_server_config_reflect "reflect"
- resource_game_services_game_server_deployment_reflect "reflect"
- resource_game_services_game_server_deployment_rollout_reflect "reflect"
- resource_game_services_realm_reflect "reflect"
- resource_gke_hub_membership_reflect "reflect"
- resource_healthcare_consent_store_reflect "reflect"
- resource_healthcare_dataset_reflect "reflect"
- resource_healthcare_dicom_store_reflect "reflect"
- resource_healthcare_fhir_store_reflect "reflect"
- resource_healthcare_hl7_v2_store_reflect "reflect"
- resource_iap_brand_reflect "reflect"
- resource_iap_client_reflect "reflect"
- resource_identity_platform_default_supported_idp_config_reflect "reflect"
- resource_identity_platform_inbound_saml_config_reflect "reflect"
- resource_identity_platform_oauth_idp_config_reflect "reflect"
- resource_identity_platform_tenant_default_supported_idp_config_reflect "reflect"
- resource_identity_platform_tenant_inbound_saml_config_reflect "reflect"
- resource_identity_platform_tenant_oauth_idp_config_reflect "reflect"
- resource_identity_platform_tenant_reflect "reflect"
- resource_kms_crypto_key_reflect "reflect"
- resource_kms_key_ring_import_job_reflect "reflect"
- resource_kms_key_ring_reflect "reflect"
- resource_kms_secret_ciphertext_reflect "reflect"
- resource_logging_metric_reflect "reflect"
- resource_memcache_instance_reflect "reflect"
- resource_ml_engine_model_reflect "reflect"
- resource_monitoring_alert_policy_reflect "reflect"
- resource_monitoring_custom_service_reflect "reflect"
- resource_monitoring_dashboard_reflect "reflect"
- resource_monitoring_group_reflect "reflect"
- resource_monitoring_metric_descriptor_reflect "reflect"
- resource_monitoring_notification_channel_reflect "reflect"
- resource_monitoring_slo_reflect "reflect"
- resource_monitoring_uptime_check_config_reflect "reflect"
- resource_network_management_connectivity_test_resource_reflect "reflect"
- resource_network_services_edge_cache_keyset_reflect "reflect"
- resource_network_services_edge_cache_origin_reflect "reflect"
- resource_network_services_edge_cache_service_reflect "reflect"
- resource_notebooks_environment_reflect "reflect"
- resource_notebooks_instance_reflect "reflect"
- resource_notebooks_location_reflect "reflect"
- resource_organization_access_approval_settings_reflect "reflect"
- resource_os_config_patch_deployment_reflect "reflect"
- resource_os_login_ssh_public_key_reflect "reflect"
- resource_privateca_ca_pool_reflect "reflect"
- resource_privateca_certificate_authority_reflect "reflect"
- resource_privateca_certificate_reflect "reflect"
- resource_project_access_approval_settings_reflect "reflect"
- resource_pubsub_lite_reservation_reflect "reflect"
- resource_pubsub_lite_subscription_reflect "reflect"
- resource_pubsub_lite_topic_reflect "reflect"
- resource_pubsub_schema_reflect "reflect"
- resource_pubsub_subscription_reflect "reflect"
- resource_pubsub_topic_reflect "reflect"
- resource_redis_instance_reflect "reflect"
- resource_resource_manager_lien_reflect "reflect"
- resource_scc_notification_config_reflect "reflect"
- resource_scc_source_reflect "reflect"
- resource_secret_manager_secret_reflect "reflect"
- resource_secret_manager_secret_version_reflect "reflect"
- resource_sourcerepo_repository_reflect "reflect"
- resource_spanner_database_reflect "reflect"
- resource_spanner_instance_reflect "reflect"
- resource_sql_database_reflect "reflect"
- resource_sql_source_representation_instance_reflect "reflect"
- resource_storage_bucket_access_control_reflect "reflect"
- resource_storage_default_object_access_control_reflect "reflect"
- resource_storage_hmac_key_reflect "reflect"
- resource_storage_object_access_control_reflect "reflect"
- resource_tags_tag_binding_reflect "reflect"
- resource_tags_tag_key_reflect "reflect"
- resource_tags_tag_value_reflect "reflect"
- resource_tpu_node_reflect "reflect"
- resource_vertex_ai_dataset_reflect "reflect"
- resource_vpc_access_connector_reflect "reflect"
- resource_workflows_workflow_reflect "reflect"
- test_utils_reflect "reflect"
- transport_reflect "reflect"
- appengine_operation_regexp "regexp"
- config_regexp "regexp"
- data_source_google_compute_address_regexp "regexp"
- data_source_google_iam_policy_regexp "regexp"
- data_source_google_service_account_key_regexp "regexp"
- data_source_secret_manager_secret_version_regexp "regexp"
- field_helpers_regexp "regexp"
- healthcare_utils_regexp "regexp"
- iam_sourcerepo_repository_regexp "regexp"
- iam_spanner_instance_regexp "regexp"
- image_regexp "regexp"
- import_regexp "regexp"
- kms_utils_regexp "regexp"
- logging_utils_regexp "regexp"
- pubsub_utils_regexp "regexp"
- resource_bigquery_dataset_regexp "regexp"
- resource_bigquery_job_regexp "regexp"
- resource_bigquery_table_regexp "regexp"
- resource_binary_authorization_attestor_regexp "regexp"
- resource_binary_authorization_policy_regexp "regexp"
- resource_cloud_asset_folder_feed_regexp "regexp"
- resource_cloud_asset_organization_feed_regexp "regexp"
- resource_cloud_identity_group_membership_regexp "regexp"
- resource_cloud_run_service_regexp "regexp"
- resource_cloud_scheduler_job_regexp "regexp"
- resource_cloudfunctions_function_regexp "regexp"
- resource_cloudiot_registry_regexp "regexp"
- resource_composer_environment_regexp "regexp"
- resource_compute_backend_service_regexp "regexp"
- resource_compute_node_group_regexp "regexp"
- resource_compute_snapshot_regexp "regexp"
- resource_compute_target_pool_regexp "regexp"
- resource_container_cluster_regexp "regexp"
- resource_container_node_pool_regexp "regexp"
- resource_data_catalog_entry_group_regexp "regexp"
- resource_data_catalog_entry_regexp "regexp"
- resource_data_catalog_tag_regexp "regexp"
- resource_data_catalog_tag_template_regexp "regexp"
- resource_dataproc_cluster_regexp "regexp"
- resource_endpoints_service_regexp "regexp"
- resource_firestore_document_regexp "regexp"
- resource_google_project_regexp "regexp"
- resource_iam_binding_regexp "regexp"
- resource_iam_member_regexp "regexp"
- resource_kms_crypto_key_regexp "regexp"
- resource_kms_secret_ciphertext_regexp "regexp"
- resource_logging_bucket_config_regexp "regexp"
- resource_logging_exclusion_regexp "regexp"
- resource_pubsub_lite_subscription_regexp "regexp"
- resource_pubsub_subscription_regexp "regexp"
- resource_redis_instance_regexp "regexp"
- resource_secret_manager_secret_version_regexp "regexp"
- resource_service_networking_connection_regexp "regexp"
- resource_spanner_instance_regexp "regexp"
- resource_tpu_node_regexp "regexp"
- self_link_helpers_regexp "regexp"
- source_repo_utils_regexp "regexp"
- transport_regexp "regexp"
- validation_regexp "regexp"
- resource_storage_bucket_runtime "runtime"
- data_source_cloud_run_locations_sort "sort"
- data_source_google_compute_instance_template_sort "sort"
- data_source_google_compute_node_types_sort "sort"
- data_source_google_compute_regions_sort "sort"
- data_source_google_compute_zones_sort "sort"
- data_source_google_iam_policy_sort "sort"
- data_source_storage_object_signed_url_sort "sort"
- data_source_tpu_tensorflow_versions_sort "sort"
- iam_sort "sort"
- metadata_sort "sort"
- resource_bigquery_table_sort "sort"
- resource_compute_firewall_migrate_sort "sort"
- resource_compute_firewall_sort "sort"
- resource_compute_network_peering_sort "sort"
- utils_sort "sort"
- common_diff_suppress_strconv "strconv"
- data_source_google_compute_image_strconv "strconv"
- data_source_google_iam_policy_strconv "strconv"
- data_source_google_kms_crypto_key_version_strconv "strconv"
- data_source_storage_object_signed_url_strconv "strconv"
- import_strconv "strconv"
- kms_utils_strconv "strconv"
- privateca_utils_strconv "strconv"
- resource_app_engine_firewall_rule_strconv "strconv"
- resource_app_engine_flexible_app_version_strconv "strconv"
- resource_app_engine_standard_app_version_strconv "strconv"
- resource_bigquery_data_transfer_config_strconv "strconv"
- resource_bigquery_dataset_strconv "strconv"
- resource_bigquery_job_strconv "strconv"
- resource_bigquery_reservation_strconv "strconv"
- resource_bigquery_routine_strconv "strconv"
- resource_bigquery_table_strconv "strconv"
- resource_billing_budget_strconv "strconv"
- resource_cloud_run_domain_mapping_strconv "strconv"
- resource_cloud_run_service_strconv "strconv"
- resource_cloud_scheduler_job_strconv "strconv"
- resource_cloud_tasks_queue_strconv "strconv"
- resource_cloudbuild_trigger_strconv "strconv"
- resource_cloudfunctions_function_strconv "strconv"
- resource_cloudiot_device_strconv "strconv"
- resource_compute_address_strconv "strconv"
- resource_compute_autoscaler_strconv "strconv"
- resource_compute_backend_bucket_strconv "strconv"
- resource_compute_backend_service_strconv "strconv"
- resource_compute_disk_strconv "strconv"
- resource_compute_external_vpn_gateway_strconv "strconv"
- resource_compute_firewall_migrate_strconv "strconv"
- resource_compute_firewall_strconv "strconv"
- resource_compute_global_address_strconv "strconv"
- resource_compute_global_network_endpoint_group_strconv "strconv"
- resource_compute_ha_vpn_gateway_strconv "strconv"
- resource_compute_health_check_strconv "strconv"
- resource_compute_http_health_check_strconv "strconv"
- resource_compute_https_health_check_strconv "strconv"
- resource_compute_image_strconv "strconv"
- resource_compute_instance_group_migrate_strconv "strconv"
- resource_compute_instance_group_named_port_strconv "strconv"
- resource_compute_instance_migrate_strconv "strconv"
- resource_compute_instance_strconv "strconv"
- resource_compute_interconnect_attachment_strconv "strconv"
- resource_compute_managed_ssl_certificate_strconv "strconv"
- resource_compute_network_endpoint_group_strconv "strconv"
- resource_compute_network_strconv "strconv"
- resource_compute_node_group_strconv "strconv"
- resource_compute_packet_mirroring_strconv "strconv"
- resource_compute_region_autoscaler_strconv "strconv"
- resource_compute_region_backend_service_strconv "strconv"
- resource_compute_region_disk_strconv "strconv"
- resource_compute_region_health_check_strconv "strconv"
- resource_compute_region_ssl_certificate_strconv "strconv"
- resource_compute_region_target_http_proxy_strconv "strconv"
- resource_compute_region_target_https_proxy_strconv "strconv"
- resource_compute_region_url_map_strconv "strconv"
- resource_compute_reservation_strconv "strconv"
- resource_compute_resource_policy_strconv "strconv"
- resource_compute_route_strconv "strconv"
- resource_compute_router_nat_strconv "strconv"
- resource_compute_router_peer_strconv "strconv"
- resource_compute_router_strconv "strconv"
- resource_compute_service_attachment_strconv "strconv"
- resource_compute_snapshot_strconv "strconv"
- resource_compute_ssl_certificate_strconv "strconv"
- resource_compute_target_http_proxy_strconv "strconv"
- resource_compute_target_https_proxy_strconv "strconv"
- resource_compute_target_ssl_proxy_strconv "strconv"
- resource_compute_target_tcp_proxy_strconv "strconv"
- resource_compute_url_map_strconv "strconv"
- resource_compute_vpn_gateway_strconv "strconv"
- resource_compute_vpn_tunnel_strconv "strconv"
- resource_container_cluster_migrate_strconv "strconv"
- resource_data_catalog_entry_strconv "strconv"
- resource_data_catalog_tag_strconv "strconv"
- resource_data_catalog_tag_template_strconv "strconv"
- resource_data_loss_prevention_deidentify_template_strconv "strconv"
- resource_data_loss_prevention_inspect_template_strconv "strconv"
- resource_data_loss_prevention_job_trigger_strconv "strconv"
- resource_dataproc_autoscaling_policy_strconv "strconv"
- resource_dataproc_cluster_strconv "strconv"
- resource_dialogflow_cx_intent_strconv "strconv"
- resource_dialogflow_intent_strconv "strconv"
- resource_dns_managed_zone_strconv "strconv"
- resource_endpoints_service_strconv "strconv"
- resource_filestore_instance_strconv "strconv"
- resource_google_project_strconv "strconv"
- resource_google_service_networking_peered_dns_domain_strconv "strconv"
- resource_healthcare_fhir_store_strconv "strconv"
- resource_logging_metric_strconv "strconv"
- resource_memcache_instance_strconv "strconv"
- resource_monitoring_alert_policy_strconv "strconv"
- resource_monitoring_uptime_check_config_strconv "strconv"
- resource_network_management_connectivity_test_resource_strconv "strconv"
- resource_network_services_edge_cache_origin_strconv "strconv"
- resource_notebooks_instance_strconv "strconv"
- resource_os_config_patch_deployment_strconv "strconv"
- resource_pubsub_lite_reservation_strconv "strconv"
- resource_pubsub_lite_topic_strconv "strconv"
- resource_pubsub_subscription_strconv "strconv"
- resource_redis_instance_strconv "strconv"
- resource_resource_manager_lien_strconv "strconv"
- resource_sourcerepo_repository_strconv "strconv"
- resource_spanner_instance_strconv "strconv"
- resource_sql_source_representation_instance_strconv "strconv"
- resource_storage_bucket_acl_strconv "strconv"
- resource_storage_bucket_strconv "strconv"
- resource_storage_default_object_access_control_strconv "strconv"
- resource_storage_object_access_control_strconv "strconv"
- resource_tpu_node_strconv "strconv"
- resource_vpc_access_connector_strconv "strconv"
- validation_strconv "strconv"
- common_diff_suppress_strings "strings"
- config_strings "strings"
- data_source_container_registry_image_strings "strings"
- data_source_container_registry_repository_strings "strings"
- data_source_google_billing_account_strings "strings"
- data_source_google_compute_address_strings "strings"
- data_source_google_compute_zones_strings "strings"
- data_source_google_container_engine_versions_strings "strings"
- data_source_google_folder_strings "strings"
- data_source_google_iam_testable_permissions_strings "strings"
- data_source_google_kms_crypto_key_version_strings "strings"
- data_source_google_organization_strings "strings"
- data_source_google_service_account_access_token_strings "strings"
- data_source_google_service_account_id_token_strings "strings"
- data_source_google_service_account_strings "strings"
- data_source_google_storage_bucket_object_strings "strings"
- data_source_monitoring_notification_channel_strings "strings"
- data_source_storage_object_signed_url_strings "strings"
- error_retry_predicates_strings "strings"
- healthcare_utils_strings "strings"
- iam_bigquery_dataset_strings "strings"
- iam_folder_strings "strings"
- iam_iap_web_type_app_engine_strings "strings"
- iam_spanner_instance_strings "strings"
- iam_strings "strings"
- image_strings "strings"
- import_strings "strings"
- kms_utils_strings "strings"
- mtls_util_strings "strings"
- regional_utils_strings "strings"
- resource_access_context_manager_access_level_strings "strings"
- resource_access_context_manager_access_policy_strings "strings"
- resource_access_context_manager_gcp_user_access_binding_strings "strings"
- resource_access_context_manager_service_perimeter_strings "strings"
- resource_active_directory_domain_strings "strings"
- resource_apigee_envgroup_strings "strings"
- resource_apigee_environment_strings "strings"
- resource_apigee_instance_strings "strings"
- resource_apigee_organization_strings "strings"
- resource_app_engine_domain_mapping_strings "strings"
- resource_app_engine_firewall_rule_strings "strings"
- resource_app_engine_service_network_settings_strings "strings"
- resource_app_engine_service_split_traffic_strings "strings"
- resource_bigquery_data_transfer_config_strings "strings"
- resource_bigquery_dataset_access_strings "strings"
- resource_bigquery_reservation_strings "strings"
- resource_bigquery_table_strings "strings"
- resource_bigtable_app_profile_strings "strings"
- resource_billing_budget_strings "strings"
- resource_cloud_asset_folder_feed_strings "strings"
- resource_cloud_asset_organization_feed_strings "strings"
- resource_cloud_asset_project_feed_strings "strings"
- resource_cloud_identity_group_strings "strings"
- resource_cloud_run_domain_mapping_strings "strings"
- resource_cloud_run_service_strings "strings"
- resource_cloud_scheduler_job_strings "strings"
- resource_cloud_tasks_queue_strings "strings"
- resource_cloudfunctions_function_strings "strings"
- resource_cloudiot_device_strings "strings"
- resource_cloudiot_registry_strings "strings"
- resource_composer_environment_strings "strings"
- resource_compute_attached_disk_strings "strings"
- resource_compute_disk_strings "strings"
- resource_compute_firewall_migrate_strings "strings"
- resource_compute_firewall_strings "strings"
- resource_compute_health_check_strings "strings"
- resource_compute_instance_group_manager_strings "strings"
- resource_compute_instance_group_migrate_strings "strings"
- resource_compute_instance_group_strings "strings"
- resource_compute_instance_migrate_strings "strings"
- resource_compute_instance_strings "strings"
- resource_compute_instance_template_strings "strings"
- resource_compute_network_peering_strings "strings"
- resource_compute_region_disk_strings "strings"
- resource_compute_region_instance_group_manager_strings "strings"
- resource_compute_router_interface_strings "strings"
- resource_compute_router_nat_strings "strings"
- resource_compute_router_peer_strings "strings"
- resource_compute_shared_vpc_service_project_strings "strings"
- resource_compute_snapshot_strings "strings"
- resource_compute_target_instance_strings "strings"
- resource_compute_target_pool_strings "strings"
- resource_compute_url_map_strings "strings"
- resource_compute_vpn_tunnel_strings "strings"
- resource_container_analysis_note_strings "strings"
- resource_container_analysis_occurrence_strings "strings"
- resource_container_cluster_migrate_strings "strings"
- resource_container_cluster_strings "strings"
- resource_container_node_pool_strings "strings"
- resource_container_registry_strings "strings"
- resource_data_catalog_entry_group_strings "strings"
- resource_data_catalog_entry_strings "strings"
- resource_data_catalog_tag_strings "strings"
- resource_data_catalog_tag_template_strings "strings"
- resource_data_loss_prevention_deidentify_template_strings "strings"
- resource_data_loss_prevention_inspect_template_strings "strings"
- resource_data_loss_prevention_job_trigger_strings "strings"
- resource_data_loss_prevention_stored_info_type_strings "strings"
- resource_dataflow_job_strings "strings"
- resource_dataproc_cluster_strings "strings"
- resource_dataproc_job_strings "strings"
- resource_dialogflow_cx_agent_strings "strings"
- resource_dialogflow_cx_entity_type_strings "strings"
- resource_dialogflow_cx_environment_strings "strings"
- resource_dialogflow_cx_flow_strings "strings"
- resource_dialogflow_cx_intent_strings "strings"
- resource_dialogflow_cx_page_strings "strings"
- resource_dialogflow_cx_version_strings "strings"
- resource_dialogflow_entity_type_strings "strings"
- resource_dialogflow_fulfillment_strings "strings"
- resource_dialogflow_intent_strings "strings"
- resource_dns_managed_zone_strings "strings"
- resource_dns_policy_strings "strings"
- resource_dns_record_set_strings "strings"
- resource_endpoints_service_strings "strings"
- resource_essential_contacts_contact_strings "strings"
- resource_filestore_instance_strings "strings"
- resource_firestore_index_strings "strings"
- resource_folder_access_approval_settings_strings "strings"
- resource_game_services_game_server_cluster_strings "strings"
- resource_game_services_game_server_deployment_rollout_strings "strings"
- resource_game_services_game_server_deployment_strings "strings"
- resource_game_services_realm_strings "strings"
- resource_gke_hub_membership_strings "strings"
- resource_google_billing_subaccount_strings "strings"
- resource_google_folder_strings "strings"
- resource_google_organization_policy_strings "strings"
- resource_google_project_default_service_accounts_strings "strings"
- resource_google_project_iam_custom_role_strings "strings"
- resource_google_project_service_strings "strings"
- resource_google_project_strings "strings"
- resource_google_service_account_strings "strings"
- resource_google_service_networking_peered_dns_domain_strings "strings"
- resource_healthcare_consent_store_strings "strings"
- resource_healthcare_dataset_strings "strings"
- resource_healthcare_dicom_store_strings "strings"
- resource_healthcare_fhir_store_strings "strings"
- resource_healthcare_hl7_v2_store_strings "strings"
- resource_iam_audit_config_strings "strings"
- resource_iam_binding_strings "strings"
- resource_iam_member_strings "strings"
- resource_iap_brand_strings "strings"
- resource_iap_client_strings "strings"
- resource_identity_platform_default_supported_idp_config_strings "strings"
- resource_identity_platform_inbound_saml_config_strings "strings"
- resource_identity_platform_oauth_idp_config_strings "strings"
- resource_identity_platform_tenant_default_supported_idp_config_strings "strings"
- resource_identity_platform_tenant_inbound_saml_config_strings "strings"
- resource_identity_platform_tenant_oauth_idp_config_strings "strings"
- resource_identity_platform_tenant_strings "strings"
- resource_kms_crypto_key_strings "strings"
- resource_kms_key_ring_import_job_strings "strings"
- resource_logging_billing_account_bucket_config_strings "strings"
- resource_logging_bucket_config_strings "strings"
- resource_logging_exclusion_strings "strings"
- resource_logging_folder_bucket_config_strings "strings"
- resource_logging_folder_sink_strings "strings"
- resource_logging_organization_bucket_config_strings "strings"
- resource_logging_organization_sink_strings "strings"
- resource_logging_project_bucket_config_strings "strings"
- resource_logging_sink_strings "strings"
- resource_memcache_instance_strings "strings"
- resource_monitoring_alert_policy_strings "strings"
- resource_monitoring_custom_service_strings "strings"
- resource_monitoring_slo_strings "strings"
- resource_monitoring_uptime_check_config_strings "strings"
- resource_network_management_connectivity_test_resource_strings "strings"
- resource_network_services_edge_cache_keyset_strings "strings"
- resource_network_services_edge_cache_origin_strings "strings"
- resource_network_services_edge_cache_service_strings "strings"
- resource_notebooks_instance_strings "strings"
- resource_organization_access_approval_settings_strings "strings"
- resource_os_login_ssh_public_key_strings "strings"
- resource_privateca_ca_pool_strings "strings"
- resource_project_access_approval_settings_strings "strings"
- resource_pubsub_lite_reservation_strings "strings"
- resource_pubsub_lite_subscription_strings "strings"
- resource_pubsub_lite_topic_strings "strings"
- resource_pubsub_subscription_strings "strings"
- resource_pubsub_topic_strings "strings"
- resource_redis_instance_strings "strings"
- resource_resource_manager_lien_strings "strings"
- resource_scc_notification_config_strings "strings"
- resource_scc_source_strings "strings"
- resource_secret_manager_secret_strings "strings"
- resource_secret_manager_secret_version_strings "strings"
- resource_service_networking_connection_strings "strings"
- resource_sourcerepo_repository_strings "strings"
- resource_spanner_instance_strings "strings"
- resource_sql_database_instance_strings "strings"
- resource_sql_source_representation_instance_strings "strings"
- resource_sql_user_strings "strings"
- resource_storage_bucket_acl_strings "strings"
- resource_storage_bucket_object_strings "strings"
- resource_storage_bucket_strings "strings"
- resource_storage_notification_strings "strings"
- resource_storage_object_acl_strings "strings"
- resource_storage_transfer_job_strings "strings"
- resource_tags_tag_binding_strings "strings"
- resource_tags_tag_key_strings "strings"
- resource_tags_tag_value_strings "strings"
- resource_vertex_ai_dataset_strings "strings"
- resource_workflows_workflow_strings "strings"
- self_link_helpers_strings "strings"
- service_usage_operation_strings "strings"
- sql_utils_strings "strings"
- stateful_mig_polling_strings "strings"
- transport_strings "strings"
- utils_strings "strings"
- validation_strings "strings"
- batcher_sync "sync"
- common_polling_sync "sync"
- mutexkv_sync "sync"
- access_context_manager_operation_time "time"
- active_directory_operation_time "time"
- apigee_operation_time "time"
- appengine_operation_time "time"
- batcher_time "time"
- cloudfunctions_operation_time "time"
- common_diff_suppress_time "time"
- common_operation_time "time"
- common_polling_time "time"
- composer_operation_time "time"
- compute_operation_time "time"
- config_time "time"
- container_operation_time "time"
- data_source_cloud_identity_group_memberships_time "time"
- data_source_cloud_identity_groups_time "time"
- data_source_google_container_engine_versions_time "time"
- data_source_storage_object_signed_url_time "time"
- dataproc_cluster_operation_time "time"
- dataproc_job_operation_time "time"
- datastore_operation_time "time"
- deployment_manager_operation_time "time"
- dialogflow_cx_operation_time "time"
- dns_change_time "time"
- filestore_operation_time "time"
- firestore_operation_time "time"
- game_services_operation_time "time"
- gke_hub_operation_time "time"
- iam_batching_time "time"
- iam_time "time"
- kms_utils_time "time"
- memcache_operation_time "time"
- ml_engine_operation_time "time"
- network_management_operation_time "time"
- network_services_operation_time "time"
- notebooks_operation_time "time"
- privateca_operation_time "time"
- provider_dcl_client_creation_time "time"
- provider_time "time"
- redis_operation_time "time"
- resource_access_context_manager_access_level_condition_time "time"
- resource_access_context_manager_access_level_time "time"
- resource_access_context_manager_access_levels_time "time"
- resource_access_context_manager_access_policy_time "time"
- resource_access_context_manager_gcp_user_access_binding_time "time"
- resource_access_context_manager_service_perimeter_resource_time "time"
- resource_access_context_manager_service_perimeter_time "time"
- resource_access_context_manager_service_perimeters_time "time"
- resource_active_directory_domain_time "time"
- resource_active_directory_domain_trust_time "time"
- resource_apigee_envgroup_attachment_time "time"
- resource_apigee_envgroup_time "time"
- resource_apigee_environment_time "time"
- resource_apigee_instance_attachment_time "time"
- resource_apigee_instance_time "time"
- resource_apigee_organization_time "time"
- resource_app_engine_application_time "time"
- resource_app_engine_application_url_dispatch_rules_time "time"
- resource_app_engine_domain_mapping_time "time"
- resource_app_engine_firewall_rule_time "time"
- resource_app_engine_flexible_app_version_time "time"
- resource_app_engine_service_network_settings_time "time"
- resource_app_engine_service_split_traffic_time "time"
- resource_app_engine_standard_app_version_time "time"
- resource_assured_workloads_workload_time "time"
- resource_bigquery_data_transfer_config_time "time"
- resource_bigquery_dataset_access_time "time"
- resource_bigquery_dataset_time "time"
- resource_bigquery_job_time "time"
- resource_bigquery_reservation_time "time"
- resource_bigquery_routine_time "time"
- resource_bigtable_app_profile_time "time"
- resource_bigtable_gc_policy_time "time"
- resource_billing_budget_time "time"
- resource_binary_authorization_attestor_time "time"
- resource_binary_authorization_policy_time "time"
- resource_cloud_asset_folder_feed_time "time"
- resource_cloud_asset_organization_feed_time "time"
- resource_cloud_asset_project_feed_time "time"
- resource_cloud_identity_group_membership_time "time"
- resource_cloud_identity_group_time "time"
- resource_cloud_run_domain_mapping_time "time"
- resource_cloud_run_service_time "time"
- resource_cloud_scheduler_job_time "time"
- resource_cloud_tasks_queue_time "time"
- resource_cloudbuild_trigger_time "time"
- resource_cloudfunctions_function_time "time"
- resource_cloudiot_device_time "time"
- resource_cloudiot_registry_time "time"
- resource_composer_environment_time "time"
- resource_compute_address_time "time"
- resource_compute_attached_disk_time "time"
- resource_compute_autoscaler_time "time"
- resource_compute_backend_bucket_signed_url_key_time "time"
- resource_compute_backend_bucket_time "time"
- resource_compute_backend_service_signed_url_key_time "time"
- resource_compute_backend_service_time "time"
- resource_compute_disk_resource_policy_attachment_time "time"
- resource_compute_disk_time "time"
- resource_compute_external_vpn_gateway_time "time"
- resource_compute_firewall_policy_association_time "time"
- resource_compute_firewall_policy_rule_time "time"
- resource_compute_firewall_policy_time "time"
- resource_compute_firewall_time "time"
- resource_compute_forwarding_rule_time "time"
- resource_compute_global_address_time "time"
- resource_compute_global_forwarding_rule_time "time"
- resource_compute_global_network_endpoint_group_time "time"
- resource_compute_global_network_endpoint_time "time"
- resource_compute_ha_vpn_gateway_time "time"
- resource_compute_health_check_time "time"
- resource_compute_http_health_check_time "time"
- resource_compute_https_health_check_time "time"
- resource_compute_image_time "time"
- resource_compute_instance_group_manager_time "time"
- resource_compute_instance_group_named_port_time "time"
- resource_compute_instance_group_time "time"
- resource_compute_instance_template_time "time"
- resource_compute_instance_time "time"
- resource_compute_interconnect_attachment_time "time"
- resource_compute_managed_ssl_certificate_time "time"
- resource_compute_network_endpoint_group_time "time"
- resource_compute_network_endpoint_time "time"
- resource_compute_network_peering_routes_config_time "time"
- resource_compute_network_peering_time "time"
- resource_compute_network_time "time"
- resource_compute_node_group_time "time"
- resource_compute_node_template_time "time"
- resource_compute_packet_mirroring_time "time"
- resource_compute_per_instance_config_time "time"
- resource_compute_project_default_network_tier_time "time"
- resource_compute_project_metadata_item_time "time"
- resource_compute_project_metadata_time "time"
- resource_compute_region_autoscaler_time "time"
- resource_compute_region_backend_service_time "time"
- resource_compute_region_disk_resource_policy_attachment_time "time"
- resource_compute_region_disk_time "time"
- resource_compute_region_health_check_time "time"
- resource_compute_region_instance_group_manager_time "time"
- resource_compute_region_network_endpoint_group_time "time"
- resource_compute_region_per_instance_config_time "time"
- resource_compute_region_ssl_certificate_time "time"
- resource_compute_region_target_http_proxy_time "time"
- resource_compute_region_target_https_proxy_time "time"
- resource_compute_region_url_map_time "time"
- resource_compute_reservation_time "time"
- resource_compute_resource_policy_time "time"
- resource_compute_route_time "time"
- resource_compute_router_interface_time "time"
- resource_compute_router_nat_time "time"
- resource_compute_router_peer_time "time"
- resource_compute_router_time "time"
- resource_compute_security_policy_time "time"
- resource_compute_service_attachment_time "time"
- resource_compute_shared_vpc_host_project_time "time"
- resource_compute_shared_vpc_service_project_time "time"
- resource_compute_snapshot_time "time"
- resource_compute_ssl_certificate_time "time"
- resource_compute_ssl_policy_time "time"
- resource_compute_subnetwork_time "time"
- resource_compute_target_grpc_proxy_time "time"
- resource_compute_target_http_proxy_time "time"
- resource_compute_target_https_proxy_time "time"
- resource_compute_target_instance_time "time"
- resource_compute_target_pool_time "time"
- resource_compute_target_ssl_proxy_time "time"
- resource_compute_target_tcp_proxy_time "time"
- resource_compute_url_map_time "time"
- resource_compute_vpn_gateway_time "time"
- resource_compute_vpn_tunnel_time "time"
- resource_container_analysis_note_time "time"
- resource_container_analysis_occurrence_time "time"
- resource_container_cluster_time "time"
- resource_container_node_pool_time "time"
- resource_data_catalog_entry_group_time "time"
- resource_data_catalog_entry_time "time"
- resource_data_catalog_tag_template_time "time"
- resource_data_catalog_tag_time "time"
- resource_data_loss_prevention_deidentify_template_time "time"
- resource_data_loss_prevention_inspect_template_time "time"
- resource_data_loss_prevention_job_trigger_time "time"
- resource_data_loss_prevention_stored_info_type_time "time"
- resource_dataflow_job_time "time"
- resource_dataproc_autoscaling_policy_time "time"
- resource_dataproc_cluster_time "time"
- resource_dataproc_job_time "time"
- resource_dataproc_workflow_template_time "time"
- resource_datastore_index_time "time"
- resource_deployment_manager_deployment_time "time"
- resource_dialogflow_agent_time "time"
- resource_dialogflow_cx_agent_time "time"
- resource_dialogflow_cx_entity_type_time "time"
- resource_dialogflow_cx_environment_time "time"
- resource_dialogflow_cx_flow_time "time"
- resource_dialogflow_cx_intent_time "time"
- resource_dialogflow_cx_page_time "time"
- resource_dialogflow_cx_version_time "time"
- resource_dialogflow_entity_type_time "time"
- resource_dialogflow_fulfillment_time "time"
- resource_dialogflow_intent_time "time"
- resource_dns_managed_zone_time "time"
- resource_dns_policy_time "time"
- resource_endpoints_service_time "time"
- resource_essential_contacts_contact_time "time"
- resource_eventarc_trigger_time "time"
- resource_filestore_instance_time "time"
- resource_firestore_document_time "time"
- resource_firestore_index_time "time"
- resource_folder_access_approval_settings_time "time"
- resource_game_services_game_server_cluster_time "time"
- resource_game_services_game_server_config_time "time"
- resource_game_services_game_server_deployment_rollout_time "time"
- resource_game_services_game_server_deployment_time "time"
- resource_game_services_realm_time "time"
- resource_gke_hub_membership_time "time"
- resource_google_billing_subaccount_time "time"
- resource_google_folder_organization_policy_time "time"
- resource_google_folder_time "time"
- resource_google_organization_policy_time "time"
- resource_google_project_default_service_accounts_time "time"
- resource_google_project_organization_policy_time "time"
- resource_google_project_service_time "time"
- resource_google_project_time "time"
- resource_google_service_account_key_time "time"
- resource_google_service_account_time "time"
- resource_google_service_networking_peered_dns_domain_time "time"
- resource_healthcare_consent_store_time "time"
- resource_healthcare_dataset_time "time"
- resource_healthcare_dicom_store_time "time"
- resource_healthcare_fhir_store_time "time"
- resource_healthcare_hl7_v2_store_time "time"
- resource_iap_brand_time "time"
- resource_iap_client_time "time"
- resource_identity_platform_default_supported_idp_config_time "time"
- resource_identity_platform_inbound_saml_config_time "time"
- resource_identity_platform_oauth_idp_config_time "time"
- resource_identity_platform_tenant_default_supported_idp_config_time "time"
- resource_identity_platform_tenant_inbound_saml_config_time "time"
- resource_identity_platform_tenant_oauth_idp_config_time "time"
- resource_identity_platform_tenant_time "time"
- resource_kms_crypto_key_time "time"
- resource_kms_key_ring_import_job_time "time"
- resource_kms_key_ring_time "time"
- resource_kms_secret_ciphertext_time "time"
- resource_logging_metric_time "time"
- resource_manager_operation_time "time"
- resource_memcache_instance_time "time"
- resource_ml_engine_model_time "time"
- resource_monitoring_alert_policy_time "time"
- resource_monitoring_custom_service_time "time"
- resource_monitoring_dashboard_time "time"
- resource_monitoring_group_time "time"
- resource_monitoring_metric_descriptor_time "time"
- resource_monitoring_notification_channel_time "time"
- resource_monitoring_slo_time "time"
- resource_monitoring_uptime_check_config_time "time"
- resource_network_management_connectivity_test_resource_time "time"
- resource_network_services_edge_cache_keyset_time "time"
- resource_network_services_edge_cache_origin_time "time"
- resource_network_services_edge_cache_service_time "time"
- resource_notebooks_environment_time "time"
- resource_notebooks_instance_time "time"
- resource_notebooks_location_time "time"
- resource_org_policy_policy_time "time"
- resource_organization_access_approval_settings_time "time"
- resource_os_config_patch_deployment_time "time"
- resource_os_login_ssh_public_key_time "time"
- resource_privateca_ca_pool_time "time"
- resource_privateca_certificate_authority_time "time"
- resource_privateca_certificate_template_time "time"
- resource_privateca_certificate_time "time"
- resource_project_access_approval_settings_time "time"
- resource_pubsub_lite_reservation_time "time"
- resource_pubsub_lite_subscription_time "time"
- resource_pubsub_lite_topic_time "time"
- resource_pubsub_schema_time "time"
- resource_pubsub_subscription_time "time"
- resource_pubsub_topic_time "time"
- resource_redis_instance_time "time"
- resource_resource_manager_lien_time "time"
- resource_scc_notification_config_time "time"
- resource_scc_source_time "time"
- resource_secret_manager_secret_time "time"
- resource_secret_manager_secret_version_time "time"
- resource_service_networking_connection_time "time"
- resource_sourcerepo_repository_time "time"
- resource_spanner_database_time "time"
- resource_spanner_instance_time "time"
- resource_sql_database_instance_time "time"
- resource_sql_database_time "time"
- resource_sql_source_representation_instance_time "time"
- resource_sql_ssl_cert_time "time"
- resource_sql_user_time "time"
- resource_storage_bucket_access_control_time "time"
- resource_storage_bucket_object_time "time"
- resource_storage_bucket_time "time"
- resource_storage_default_object_access_control_time "time"
- resource_storage_hmac_key_time "time"
- resource_storage_object_access_control_time "time"
- resource_storage_transfer_job_time "time"
- resource_tags_tag_binding_time "time"
- resource_tags_tag_key_time "time"
- resource_tags_tag_value_time "time"
- resource_tpu_node_time "time"
- resource_usage_export_bucket_time "time"
- resource_vertex_ai_dataset_time "time"
- resource_vpc_access_connector_time "time"
- resource_workflows_workflow_time "time"
- retry_transport_time "time"
- retry_utils_time "time"
- service_account_waiter_time "time"
- service_networking_operation_time "time"
- service_usage_operation_time "time"
- serviceman_operation_time "time"
- serviceusage_batching_time "time"
- serviceusage_operation_time "time"
- spanner_operation_time "time"
- sqladmin_operation_time "time"
- tags_operation_time "time"
- test_utils_time "time"
- tpu_operation_time "time"
- transport_time "time"
- utils_time "time"
- validation_time "time"
- vertex_ai_operation_time "time"
- vpc_access_operation_time "time"
- workflows_operation_time "time"
-
- bigtable_client_factory_bigtable "cloud.google.com/go/bigtable"
- resource_bigtable_gc_policy_bigtable "cloud.google.com/go/bigtable"
- resource_bigtable_instance_bigtable "cloud.google.com/go/bigtable"
- dcl_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- provider_dcl_client_creation_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_assured_workloads_workload_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_compute_firewall_policy_association_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_compute_firewall_policy_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_compute_firewall_policy_rule_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_compute_forwarding_rule_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_compute_global_forwarding_rule_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_dataproc_workflow_template_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_eventarc_trigger_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_org_policy_policy_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- resource_privateca_certificate_template_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- tpgtools_utils_dcldcl "github.com/GoogleCloudPlatform/declarative-resource-client-library/dcl"
- provider_dcl_client_creation_assuredworkloadsassuredworkloads "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/assuredworkloads"
- resource_assured_workloads_workload_assuredworkloadsassuredworkloads "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/assuredworkloads"
- provider_dcl_client_creation_cloudresourcemanagercloudresourcemanager "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/cloudresourcemanager"
- provider_dcl_client_creation_computecompute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute"
- resource_compute_firewall_policy_association_computecompute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute"
- resource_compute_firewall_policy_computecompute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute"
- resource_compute_firewall_policy_rule_computecompute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute"
- resource_compute_forwarding_rule_computecompute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute"
- resource_compute_global_forwarding_rule_computecompute "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/compute"
- provider_dcl_client_creation_dataprocdataproc "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/dataproc"
- resource_dataproc_workflow_template_dataprocdataproc "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/dataproc"
- provider_dcl_client_creation_eventarceventarc "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/eventarc"
- resource_eventarc_trigger_eventarceventarc "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/eventarc"
- provider_dcl_client_creation_orgpolicyorgpolicy "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/orgpolicy"
- resource_org_policy_policy_orgpolicyorgpolicy "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/orgpolicy"
- provider_dcl_client_creation_privatecaprivateca "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/privateca"
- resource_privateca_certificate_template_privatecaprivateca "github.com/GoogleCloudPlatform/declarative-resource-client-library/services/google/privateca"
- resource_compute_subnetwork_cidr "github.com/apparentlymart/go-cidr/cidr"
- iam_spew "github.com/davecgh/go-spew/spew"
- resource_iam_binding_spew "github.com/davecgh/go-spew/spew"
- resource_iam_member_spew "github.com/davecgh/go-spew/spew"
- resource_storage_bucket_workerpool "github.com/gammazero/workerpool"
- batcher_errwrap "github.com/hashicorp/errwrap"
- cloudrun_polling_errwrap "github.com/hashicorp/errwrap"
- compute_instance_network_interface_helpers_errwrap "github.com/hashicorp/errwrap"
- data_source_storage_object_signed_url_errwrap "github.com/hashicorp/errwrap"
- iam_bigquery_dataset_errwrap "github.com/hashicorp/errwrap"
- iam_bigquery_table_errwrap "github.com/hashicorp/errwrap"
- iam_bigtable_instance_errwrap "github.com/hashicorp/errwrap"
- iam_bigtable_table_errwrap "github.com/hashicorp/errwrap"
- iam_billing_account_errwrap "github.com/hashicorp/errwrap"
- iam_binary_authorization_attestor_errwrap "github.com/hashicorp/errwrap"
- iam_cloud_run_service_errwrap "github.com/hashicorp/errwrap"
- iam_cloudfunctions_function_errwrap "github.com/hashicorp/errwrap"
- iam_compute_disk_errwrap "github.com/hashicorp/errwrap"
- iam_compute_image_errwrap "github.com/hashicorp/errwrap"
- iam_compute_instance_errwrap "github.com/hashicorp/errwrap"
- iam_compute_region_disk_errwrap "github.com/hashicorp/errwrap"
- iam_compute_subnetwork_errwrap "github.com/hashicorp/errwrap"
- iam_data_catalog_entry_group_errwrap "github.com/hashicorp/errwrap"
- iam_data_catalog_tag_template_errwrap "github.com/hashicorp/errwrap"
- iam_dataproc_cluster_errwrap "github.com/hashicorp/errwrap"
- iam_dataproc_job_errwrap "github.com/hashicorp/errwrap"
- iam_endpoints_service_errwrap "github.com/hashicorp/errwrap"
- iam_errwrap "github.com/hashicorp/errwrap"
- iam_folder_errwrap "github.com/hashicorp/errwrap"
- iam_healthcare_consent_store_errwrap "github.com/hashicorp/errwrap"
- iam_healthcare_dataset_errwrap "github.com/hashicorp/errwrap"
- iam_healthcare_dicom_store_errwrap "github.com/hashicorp/errwrap"
- iam_healthcare_fhir_store_errwrap "github.com/hashicorp/errwrap"
- iam_healthcare_hl7_v2_store_errwrap "github.com/hashicorp/errwrap"
- iam_iap_app_engine_service_errwrap "github.com/hashicorp/errwrap"
- iam_iap_app_engine_version_errwrap "github.com/hashicorp/errwrap"
- iam_iap_tunnel_errwrap "github.com/hashicorp/errwrap"
- iam_iap_tunnel_instance_errwrap "github.com/hashicorp/errwrap"
- iam_iap_web_backend_service_errwrap "github.com/hashicorp/errwrap"
- iam_iap_web_errwrap "github.com/hashicorp/errwrap"
- iam_iap_web_type_app_engine_errwrap "github.com/hashicorp/errwrap"
- iam_iap_web_type_compute_errwrap "github.com/hashicorp/errwrap"
- iam_kms_crypto_key_errwrap "github.com/hashicorp/errwrap"
- iam_kms_key_ring_errwrap "github.com/hashicorp/errwrap"
- iam_notebooks_instance_errwrap "github.com/hashicorp/errwrap"
- iam_organization_errwrap "github.com/hashicorp/errwrap"
- iam_privateca_ca_pool_errwrap "github.com/hashicorp/errwrap"
- iam_project_errwrap "github.com/hashicorp/errwrap"
- iam_pubsub_subscription_errwrap "github.com/hashicorp/errwrap"
- iam_pubsub_topic_errwrap "github.com/hashicorp/errwrap"
- iam_secret_manager_secret_errwrap "github.com/hashicorp/errwrap"
- iam_service_account_errwrap "github.com/hashicorp/errwrap"
- iam_sourcerepo_repository_errwrap "github.com/hashicorp/errwrap"
- iam_spanner_database_errwrap "github.com/hashicorp/errwrap"
- iam_spanner_instance_errwrap "github.com/hashicorp/errwrap"
- iam_storage_bucket_errwrap "github.com/hashicorp/errwrap"
- iam_tags_tag_key_errwrap "github.com/hashicorp/errwrap"
- iam_tags_tag_value_errwrap "github.com/hashicorp/errwrap"
- logging_exclusion_billing_account_errwrap "github.com/hashicorp/errwrap"
- logging_exclusion_folder_errwrap "github.com/hashicorp/errwrap"
- logging_exclusion_organization_errwrap "github.com/hashicorp/errwrap"
- logging_exclusion_project_errwrap "github.com/hashicorp/errwrap"
- resource_compute_backend_service_errwrap "github.com/hashicorp/errwrap"
- resource_compute_instance_errwrap "github.com/hashicorp/errwrap"
- resource_compute_instance_template_errwrap "github.com/hashicorp/errwrap"
- resource_compute_security_policy_errwrap "github.com/hashicorp/errwrap"
- resource_container_cluster_errwrap "github.com/hashicorp/errwrap"
- resource_google_project_errwrap "github.com/hashicorp/errwrap"
- resource_service_networking_connection_errwrap "github.com/hashicorp/errwrap"
- retry_utils_errwrap "github.com/hashicorp/errwrap"
- sql_utils_errwrap "github.com/hashicorp/errwrap"
- tpgtools_utils_errwrap "github.com/hashicorp/errwrap"
- utils_errwrap "github.com/hashicorp/errwrap"
- config_cleanhttp "github.com/hashicorp/go-cleanhttp"
- resource_composer_environment_version "github.com/hashicorp/go-version"
- resource_container_cluster_version "github.com/hashicorp/go-version"
- provider_diag "github.com/hashicorp/terraform-plugin-sdk/v2/diag"
- resource_app_engine_application_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_bigquery_table_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_bigtable_instance_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_compute_disk_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_compute_firewall_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_compute_instance_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_compute_instance_template_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_compute_region_disk_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_compute_subnetwork_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_container_cluster_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_container_node_pool_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_dataflow_job_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_redis_instance_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_sql_database_instance_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- resource_storage_bucket_customdiff "github.com/hashicorp/terraform-plugin-sdk/v2/helper/customdiff"
- config_logging "github.com/hashicorp/terraform-plugin-sdk/v2/helper/logging"
- common_operation_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- common_polling_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- dns_change_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_instance_group_manager_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_instance_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_instance_template_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_interconnect_attachment_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_region_instance_group_manager_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_region_ssl_certificate_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_compute_ssl_certificate_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_container_cluster_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_container_node_pool_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_dataflow_job_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_spanner_instance_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_sql_database_instance_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_storage_bucket_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_storage_transfer_job_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- resource_workflows_workflow_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- retry_transport_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- retry_utils_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- service_account_waiter_resource "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
- common_diff_suppress_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- compute_instance_helpers_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- compute_instance_network_interface_helpers_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_google_game_services_game_server_deployment_rollout_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_cloud_identity_group_memberships_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_cloud_identity_groups_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_cloud_run_locations_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_cloud_run_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_compute_health_check_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_compute_lb_ip_ranges_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_compute_network_endpoint_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_container_registry_image_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_container_registry_repository_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_dns_keys_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_dns_managed_zone_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_active_folder_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_app_engine_default_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_bigquery_default_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_billing_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_client_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_client_openid_userinfo_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_cloudfunctions_function_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_composer_environment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_composer_image_versions_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_address_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_backend_bucket_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_backend_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_default_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_forwarding_rule_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_global_address_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_ha_vpn_gateway_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_image_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_instance_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_instance_serial_port_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_instance_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_network_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_node_types_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_region_instance_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_region_ssl_certificate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_regions_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_resource_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_router_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_router_status_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_ssl_certificate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_ssl_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_subnetwork_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_vpn_gateway_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_compute_zones_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_container_cluster_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_container_engine_versions_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_folder_organization_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_folder_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_global_compute_forwarding_rule_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_iam_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_iam_role_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_iam_testable_permissions_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_kms_crypto_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_kms_crypto_key_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_kms_key_ring_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_kms_secret_ciphertext_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_kms_secret_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_monitoring_uptime_check_ips_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_netblock_ip_ranges_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_organization_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_project_organization_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_project_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_projects_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_service_account_access_token_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_service_account_id_token_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_service_account_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_service_networking_peered_dns_domain_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_sql_ca_certs_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_storage_bucket_object_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_storage_bucket_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_storage_project_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_google_storage_transfer_project_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_iap_client_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_monitoring_istio_canonical_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_monitoring_notification_channel_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_monitoring_service_app_engine_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_monitoring_service_cluster_istio_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_monitoring_service_mesh_istio_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_monitoring_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_pubsub_topic_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_redis_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_secret_manager_secret_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_secret_manager_secret_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_sourcerepo_repository_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_spanner_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_sql_backup_run_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_sql_database_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_storage_bucket_object_content_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_storage_object_signed_url_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- data_source_tpu_tensorflow_versions_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- datasource_helpers_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- expanders_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_bigquery_dataset_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_bigquery_table_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_bigtable_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_bigtable_table_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_billing_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_binary_authorization_attestor_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_cloud_run_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_cloudfunctions_function_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_compute_disk_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_compute_image_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_compute_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_compute_region_disk_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_compute_subnetwork_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_data_catalog_entry_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_data_catalog_tag_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_dataproc_cluster_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_dataproc_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_endpoints_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_folder_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_healthcare_consent_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_healthcare_dataset_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_healthcare_dicom_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_healthcare_fhir_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_healthcare_hl7_v2_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_app_engine_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_app_engine_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_tunnel_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_tunnel_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_web_backend_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_web_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_web_type_app_engine_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_iap_web_type_compute_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_kms_crypto_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_kms_key_ring_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_notebooks_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_organization_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_privateca_ca_pool_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_project_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_pubsub_subscription_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_pubsub_topic_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_secret_manager_secret_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_sourcerepo_repository_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_spanner_database_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_spanner_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_storage_bucket_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_tags_tag_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- iam_tags_tag_value_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- kms_utils_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- logging_exclusion_billing_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- logging_exclusion_folder_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- logging_exclusion_organization_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- logging_exclusion_project_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- node_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- orgpolicy_utils_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- privateca_utils_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- provider_dcl_endpoints_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- provider_handwritten_endpoint_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- provider_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_access_level_condition_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_access_level_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_access_levels_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_access_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_gcp_user_access_binding_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_service_perimeter_resource_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_service_perimeter_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_access_context_manager_service_perimeters_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_active_directory_domain_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_active_directory_domain_trust_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_apigee_envgroup_attachment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_apigee_envgroup_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_apigee_environment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_apigee_instance_attachment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_apigee_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_apigee_organization_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_application_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_application_url_dispatch_rules_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_domain_mapping_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_firewall_rule_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_flexible_app_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_service_network_settings_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_service_split_traffic_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_app_engine_standard_app_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_assured_workloads_workload_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_data_transfer_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_dataset_access_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_dataset_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_reservation_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_routine_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_table_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigtable_app_profile_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigtable_gc_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigtable_instance_migrate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigtable_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigtable_table_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_billing_budget_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_binary_authorization_attestor_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_binary_authorization_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_asset_folder_feed_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_asset_organization_feed_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_asset_project_feed_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_identity_group_membership_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_identity_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_run_domain_mapping_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_run_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_scheduler_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloud_tasks_queue_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloudbuild_trigger_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloudfunctions_function_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloudiot_device_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_cloudiot_registry_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_composer_environment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_address_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_attached_disk_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_autoscaler_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_backend_bucket_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_backend_bucket_signed_url_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_backend_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_backend_service_signed_url_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_disk_resource_policy_attachment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_disk_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_external_vpn_gateway_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_firewall_policy_association_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_firewall_policy_rule_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_firewall_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_firewall_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_forwarding_rule_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_global_address_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_global_forwarding_rule_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_global_network_endpoint_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_global_network_endpoint_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_ha_vpn_gateway_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_health_check_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_http_health_check_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_https_health_check_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_image_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_from_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_group_manager_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_group_migrate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_group_named_port_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_instance_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_interconnect_attachment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_managed_ssl_certificate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_network_endpoint_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_network_endpoint_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_network_peering_routes_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_network_peering_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_network_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_node_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_node_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_packet_mirroring_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_per_instance_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_project_default_network_tier_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_project_metadata_item_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_project_metadata_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_autoscaler_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_backend_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_disk_resource_policy_attachment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_disk_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_health_check_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_instance_group_manager_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_network_endpoint_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_per_instance_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_ssl_certificate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_target_http_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_target_https_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_region_url_map_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_reservation_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_resource_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_route_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_router_interface_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_router_nat_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_router_peer_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_router_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_security_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_service_attachment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_shared_vpc_host_project_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_shared_vpc_service_project_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_snapshot_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_ssl_certificate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_ssl_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_subnetwork_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_grpc_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_http_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_https_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_pool_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_ssl_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_target_tcp_proxy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_url_map_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_vpn_gateway_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_compute_vpn_tunnel_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_container_analysis_note_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_container_analysis_occurrence_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_container_cluster_migrate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_container_cluster_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_container_node_pool_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_container_registry_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_catalog_entry_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_catalog_entry_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_catalog_tag_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_catalog_tag_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_loss_prevention_deidentify_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_loss_prevention_inspect_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_loss_prevention_job_trigger_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_data_loss_prevention_stored_info_type_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dataflow_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dataproc_autoscaling_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dataproc_cluster_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dataproc_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dataproc_workflow_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_datastore_index_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_deployment_manager_deployment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_agent_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_agent_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_entity_type_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_environment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_flow_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_intent_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_page_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_cx_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_entity_type_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_fulfillment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dialogflow_intent_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dns_managed_zone_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dns_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_dns_record_set_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_endpoints_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_essential_contacts_contact_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_eventarc_trigger_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_filestore_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_firestore_document_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_firestore_index_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_folder_access_approval_settings_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_game_services_game_server_cluster_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_game_services_game_server_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_game_services_game_server_deployment_rollout_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_game_services_game_server_deployment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_game_services_realm_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_gke_hub_membership_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_billing_subaccount_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_folder_organization_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_folder_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_organization_iam_custom_role_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_organization_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_project_default_service_accounts_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_project_iam_custom_role_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_project_organization_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_project_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_project_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_service_account_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_service_account_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_google_service_networking_peered_dns_domain_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_healthcare_consent_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_healthcare_dataset_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_healthcare_dicom_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_healthcare_fhir_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_healthcare_hl7_v2_store_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_iam_audit_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_iam_binding_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_iam_member_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_iam_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_iap_brand_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_iap_client_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_default_supported_idp_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_inbound_saml_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_oauth_idp_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_tenant_default_supported_idp_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_tenant_inbound_saml_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_tenant_oauth_idp_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_identity_platform_tenant_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_kms_crypto_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_kms_key_ring_import_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_kms_key_ring_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_kms_secret_ciphertext_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_billing_account_bucket_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_billing_account_sink_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_bucket_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_exclusion_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_folder_bucket_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_folder_sink_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_metric_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_organization_bucket_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_organization_sink_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_project_bucket_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_project_sink_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_logging_sink_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_memcache_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_ml_engine_model_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_alert_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_custom_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_dashboard_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_group_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_metric_descriptor_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_notification_channel_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_slo_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_monitoring_uptime_check_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_network_management_connectivity_test_resource_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_network_services_edge_cache_keyset_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_network_services_edge_cache_origin_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_network_services_edge_cache_service_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_notebooks_environment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_notebooks_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_notebooks_location_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_org_policy_policy_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_organization_access_approval_settings_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_os_config_patch_deployment_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_os_login_ssh_public_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_privateca_ca_pool_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_privateca_certificate_authority_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_privateca_certificate_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_privateca_certificate_template_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_project_access_approval_settings_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_pubsub_lite_reservation_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_pubsub_lite_subscription_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_pubsub_lite_topic_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_pubsub_schema_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_pubsub_subscription_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_pubsub_topic_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_redis_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_resource_manager_lien_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_scc_notification_config_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_scc_source_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_secret_manager_secret_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_secret_manager_secret_version_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_service_networking_connection_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_sourcerepo_repository_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_spanner_database_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_spanner_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_sql_database_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_sql_database_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_sql_source_representation_instance_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_sql_ssl_cert_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_sql_user_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_bucket_access_control_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_bucket_acl_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_bucket_object_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_bucket_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_default_object_access_control_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_default_object_acl_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_hmac_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_notification_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_object_access_control_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_object_acl_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_storage_transfer_job_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_tags_tag_binding_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_tags_tag_key_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_tags_tag_value_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_tpu_node_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_usage_export_bucket_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_vertex_ai_dataset_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_vpc_access_connector_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_workflows_workflow_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- self_link_helpers_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- service_scope_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- serviceusage_batching_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- stateful_mig_polling_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- tpgtools_utils_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- utils_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- validation_schema "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
- resource_bigquery_routine_structure "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- resource_bigquery_table_structure "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- resource_data_catalog_entry_structure "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- resource_firestore_document_structure "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- resource_healthcare_hl7_v2_store_structure "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- resource_monitoring_dashboard_structure "github.com/hashicorp/terraform-plugin-sdk/v2/helper/structure"
- compute_instance_helpers_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- data_source_google_compute_regions_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- data_source_google_compute_zones_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- data_source_google_iam_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- data_source_google_iam_testable_permissions_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- data_source_google_service_account_key_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- data_source_storage_object_signed_url_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- node_config_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_access_context_manager_access_level_condition_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_access_context_manager_access_level_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_access_context_manager_access_levels_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_access_context_manager_service_perimeter_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_access_context_manager_service_perimeters_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_active_directory_domain_trust_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_apigee_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_apigee_organization_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_application_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_domain_mapping_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_firewall_rule_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_flexible_app_version_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_service_network_settings_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_service_split_traffic_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_app_engine_standard_app_version_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_bigquery_job_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_bigquery_routine_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_bigquery_table_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_bigtable_gc_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_bigtable_instance_migrate_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_bigtable_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_billing_budget_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_binary_authorization_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloud_asset_folder_feed_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloud_asset_organization_feed_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloud_asset_project_feed_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloud_identity_group_membership_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloud_identity_group_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloud_run_domain_mapping_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloudbuild_trigger_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloudfunctions_function_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloudiot_device_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_cloudiot_registry_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_composer_environment_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_address_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_attached_disk_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_autoscaler_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_backend_bucket_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_backend_service_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_external_vpn_gateway_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_firewall_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_global_address_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_global_network_endpoint_group_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_health_check_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_image_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_instance_group_manager_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_instance_template_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_interconnect_attachment_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_managed_ssl_certificate_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_network_endpoint_group_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_network_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_node_group_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_node_template_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_packet_mirroring_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_per_instance_config_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_project_default_network_tier_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_autoscaler_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_backend_service_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_health_check_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_instance_group_manager_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_network_endpoint_group_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_per_instance_config_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_region_url_map_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_reservation_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_resource_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_router_nat_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_router_peer_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_router_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_security_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_ssl_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_subnetwork_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_target_https_proxy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_target_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_target_ssl_proxy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_target_tcp_proxy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_url_map_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_container_cluster_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_container_node_pool_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_data_catalog_entry_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_data_catalog_tag_template_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_data_loss_prevention_deidentify_template_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_data_loss_prevention_inspect_template_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_data_loss_prevention_job_trigger_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dataflow_job_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dataproc_cluster_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dataproc_job_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_datastore_index_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_deployment_manager_deployment_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_agent_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_agent_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_entity_type_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_environment_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_flow_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_intent_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_page_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_cx_version_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_entity_type_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_fulfillment_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dialogflow_intent_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dns_managed_zone_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_dns_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_filestore_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_firestore_document_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_firestore_index_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_folder_access_approval_settings_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_google_billing_subaccount_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_google_organization_iam_custom_role_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_google_project_default_service_accounts_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_google_project_iam_custom_role_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_google_service_account_key_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_google_service_account_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_healthcare_fhir_store_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_healthcare_hl7_v2_store_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_iam_binding_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_iam_member_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_kms_crypto_key_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_kms_key_ring_import_job_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_logging_metric_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_memcache_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_monitoring_alert_policy_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_monitoring_dashboard_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_monitoring_metric_descriptor_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_monitoring_slo_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_monitoring_uptime_check_config_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_network_management_connectivity_test_resource_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_network_services_edge_cache_origin_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_network_services_edge_cache_service_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_notebooks_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_organization_access_approval_settings_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_os_config_patch_deployment_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_privateca_ca_pool_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_privateca_certificate_authority_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_privateca_certificate_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_project_access_approval_settings_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_pubsub_lite_subscription_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_pubsub_schema_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_pubsub_topic_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_redis_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_scc_notification_config_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_scc_source_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_sourcerepo_repository_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_sql_database_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_sql_source_representation_instance_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_sql_user_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_bucket_access_control_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_bucket_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_default_object_access_control_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_hmac_key_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_notification_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_object_access_control_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_object_acl_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_storage_transfer_job_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_tags_tag_key_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_tags_tag_value_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_vpc_access_connector_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- validation_validation "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
- resource_compute_firewall_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_compute_instance_group_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_compute_instance_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_compute_instance_template_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_container_cluster_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_container_node_pool_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_endpoints_service_migration_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_google_project_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- resource_sql_user_migrate_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- test_utils_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- utils_terraform "github.com/hashicorp/terraform-plugin-sdk/v2/terraform"
- provider_version "github.com/hashicorp/terraform-provider-google/v4/version"
- path_or_contents_homedir "github.com/mitchellh/go-homedir"
- resource_compute_instance_hashstructure "github.com/mitchellh/hashstructure"
- data_source_google_service_account_id_token_context "golang.org/x/net/context"
- bigtable_client_factory_oauth2 "golang.org/x/oauth2"
- config_oauth2 "golang.org/x/oauth2"
- config_googlegoogleoauth "golang.org/x/oauth2/google"
- data_source_storage_object_signed_url_google "golang.org/x/oauth2/google"
- provider_googlegoogleoauth "golang.org/x/oauth2/google"
- data_source_storage_object_signed_url_jwt "golang.org/x/oauth2/jwt"
- appengine_operation_appengine "google.golang.org/api/appengine/v1"
- config_appengineappengine "google.golang.org/api/appengine/v1"
- resource_app_engine_application_appengineappengine "google.golang.org/api/appengine/v1"
- config_bigquery "google.golang.org/api/bigquery/v2"
- resource_bigquery_table_bigquery "google.golang.org/api/bigquery/v2"
- config_bigtableadmin "google.golang.org/api/bigtableadmin/v2"
- iam_bigtable_instance_bigtableadmin "google.golang.org/api/bigtableadmin/v2"
- iam_bigtable_table_bigtableadmin "google.golang.org/api/bigtableadmin/v2"
- resource_bigtable_app_profile_bigtableadmin "google.golang.org/api/bigtableadmin/v2"
- config_cloudbilling "google.golang.org/api/cloudbilling/v1"
- data_source_google_billing_account_cloudbilling "google.golang.org/api/cloudbilling/v1"
- iam_billing_account_cloudbilling "google.golang.org/api/cloudbilling/v1"
- resource_google_billing_subaccount_cloudbilling "google.golang.org/api/cloudbilling/v1"
- resource_google_project_cloudbilling "google.golang.org/api/cloudbilling/v1"
- config_cloudbuild "google.golang.org/api/cloudbuild/v1"
- cloudfunctions_operation_cloudfunctions "google.golang.org/api/cloudfunctions/v1"
- config_cloudfunctions "google.golang.org/api/cloudfunctions/v1"
- resource_cloudfunctions_function_cloudfunctions "google.golang.org/api/cloudfunctions/v1"
- config_cloudidentity "google.golang.org/api/cloudidentity/v1"
- data_source_cloud_identity_group_memberships_cloudidentity "google.golang.org/api/cloudidentity/v1"
- data_source_cloud_identity_groups_cloudidentity "google.golang.org/api/cloudidentity/v1"
- config_cloudiot "google.golang.org/api/cloudiot/v1"
- config_cloudkms "google.golang.org/api/cloudkms/v1"
- data_source_google_kms_secret_ciphertext_cloudkms "google.golang.org/api/cloudkms/v1"
- data_source_google_kms_secret_cloudkms "google.golang.org/api/cloudkms/v1"
- iam_kms_crypto_key_cloudkms "google.golang.org/api/cloudkms/v1"
- iam_kms_key_ring_cloudkms "google.golang.org/api/cloudkms/v1"
- kms_utils_cloudkms "google.golang.org/api/cloudkms/v1"
- common_operation_cloudresourcemanagercloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- config_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- data_source_google_iam_policy_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- data_source_google_organization_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_batching_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_bigquery_dataset_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_bigquery_table_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_bigtable_instance_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_bigtable_table_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_billing_account_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_binary_authorization_attestor_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_cloud_run_service_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_cloudfunctions_function_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_compute_disk_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_compute_image_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_compute_instance_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_compute_region_disk_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_compute_subnetwork_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_data_catalog_entry_group_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_data_catalog_tag_template_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_dataproc_cluster_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_dataproc_job_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_endpoints_service_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_folder_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_healthcare_consent_store_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_healthcare_dataset_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_healthcare_dicom_store_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_healthcare_fhir_store_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_healthcare_hl7_v2_store_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_app_engine_service_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_app_engine_version_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_tunnel_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_tunnel_instance_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_web_backend_service_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_web_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_web_type_app_engine_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_iap_web_type_compute_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_kms_crypto_key_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_kms_key_ring_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_notebooks_instance_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_organization_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_privateca_ca_pool_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_project_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_pubsub_subscription_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_pubsub_topic_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_secret_manager_secret_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_service_account_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_sourcerepo_repository_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_spanner_database_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_spanner_instance_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_storage_bucket_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_tags_tag_key_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- iam_tags_tag_value_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_google_folder_organization_policy_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_google_organization_policy_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_google_project_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_google_project_default_service_accounts_cloudresourcemanagercloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_google_project_migrate_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_google_project_organization_policy_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_iam_audit_config_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_iam_binding_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_iam_member_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- resource_iam_policy_cloudresourcemanager "google.golang.org/api/cloudresourcemanager/v1"
- config_cloudresourcemanagerresourceManagerV2 "google.golang.org/api/cloudresourcemanager/v2"
- data_source_google_active_folder_cloudresourcemanagerresourceManagerV2 "google.golang.org/api/cloudresourcemanager/v2"
- iam_folder_cloudresourcemanagerresourceManagerV2 "google.golang.org/api/cloudresourcemanager/v2"
- resource_google_folder_cloudresourcemanagerresourceManagerV2 "google.golang.org/api/cloudresourcemanager/v2"
- composer_operation_composer "google.golang.org/api/composer/v1"
- config_composer "google.golang.org/api/composer/v1"
- resource_composer_environment_composer "google.golang.org/api/composer/v1"
- compute_backend_service_helpers_compute "google.golang.org/api/compute/v1"
- compute_instance_helpers_compute "google.golang.org/api/compute/v1"
- compute_instance_network_interface_helpers_compute "google.golang.org/api/compute/v1"
- compute_operation_compute "google.golang.org/api/compute/v1"
- config_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_image_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_instance_template_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_node_types_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_region_instance_group_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_regions_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_router_status_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_subnetwork_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_vpn_gateway_compute "google.golang.org/api/compute/v1"
- data_source_google_compute_zones_compute "google.golang.org/api/compute/v1"
- deployment_manager_operation_compute "google.golang.org/api/compute/v1"
- metadata_compute "google.golang.org/api/compute/v1"
- resource_compute_attached_disk_compute "google.golang.org/api/compute/v1"
- resource_compute_instance_compute "google.golang.org/api/compute/v1"
- resource_compute_instance_from_template_compute "google.golang.org/api/compute/v1"
- resource_compute_instance_group_compute "google.golang.org/api/compute/v1"
- resource_compute_instance_group_manager_compute "google.golang.org/api/compute/v1"
- resource_compute_instance_migrate_compute "google.golang.org/api/compute/v1"
- resource_compute_instance_template_compute "google.golang.org/api/compute/v1"
- resource_compute_network_peering_compute "google.golang.org/api/compute/v1"
- resource_compute_project_default_network_tier_compute "google.golang.org/api/compute/v1"
- resource_compute_project_metadata_compute "google.golang.org/api/compute/v1"
- resource_compute_project_metadata_item_compute "google.golang.org/api/compute/v1"
- resource_compute_region_instance_group_manager_compute "google.golang.org/api/compute/v1"
- resource_compute_router_interface_compute "google.golang.org/api/compute/v1"
- resource_compute_security_policy_compute "google.golang.org/api/compute/v1"
- resource_compute_shared_vpc_service_project_compute "google.golang.org/api/compute/v1"
- resource_compute_target_pool_compute "google.golang.org/api/compute/v1"
- resource_service_networking_connection_compute "google.golang.org/api/compute/v1"
- resource_usage_export_bucket_compute "google.golang.org/api/compute/v1"
- config_container "google.golang.org/api/container/v1"
- container_operation_container "google.golang.org/api/container/v1"
- node_config_container "google.golang.org/api/container/v1"
- resource_container_cluster_container "google.golang.org/api/container/v1"
- resource_container_node_pool_container "google.golang.org/api/container/v1"
- config_dataflowdataflow "google.golang.org/api/dataflow/v1b3"
- resource_dataflow_job_dataflowdataflow "google.golang.org/api/dataflow/v1b3"
- config_dataproc "google.golang.org/api/dataproc/v1"
- dataproc_cluster_operation_dataproc "google.golang.org/api/dataproc/v1"
- dataproc_job_operation_dataproc "google.golang.org/api/dataproc/v1"
- iam_dataproc_cluster_dataproc "google.golang.org/api/dataproc/v1"
- iam_dataproc_job_dataproc "google.golang.org/api/dataproc/v1"
- resource_dataproc_cluster_dataproc "google.golang.org/api/dataproc/v1"
- resource_dataproc_job_dataproc "google.golang.org/api/dataproc/v1"
- config_dns "google.golang.org/api/dns/v1"
- data_source_dns_keys_dns "google.golang.org/api/dns/v1"
- dns_change_dns "google.golang.org/api/dns/v1"
- resource_dns_managed_zone_dns "google.golang.org/api/dns/v1"
- resource_dns_record_set_dns "google.golang.org/api/dns/v1"
- compute_instance_helpers_googleapi "google.golang.org/api/googleapi"
- data_source_google_compute_region_instance_group_googleapi "google.golang.org/api/googleapi"
- error_retry_predicates_googleapi "google.golang.org/api/googleapi"
- image_googleapi "google.golang.org/api/googleapi"
- resource_access_context_manager_access_level_condition_googleapi "google.golang.org/api/googleapi"
- resource_access_context_manager_service_perimeter_resource_googleapi "google.golang.org/api/googleapi"
- resource_bigquery_dataset_access_googleapi "google.golang.org/api/googleapi"
- resource_bigquery_dataset_googleapi "google.golang.org/api/googleapi"
- resource_bigquery_job_googleapi "google.golang.org/api/googleapi"
- resource_bigquery_routine_googleapi "google.golang.org/api/googleapi"
- resource_cloud_run_domain_mapping_googleapi "google.golang.org/api/googleapi"
- resource_cloud_run_service_googleapi "google.golang.org/api/googleapi"
- resource_compute_backend_service_googleapi "google.golang.org/api/googleapi"
- resource_compute_disk_googleapi "google.golang.org/api/googleapi"
- resource_compute_instance_group_googleapi "google.golang.org/api/googleapi"
- resource_compute_instance_group_named_port_googleapi "google.golang.org/api/googleapi"
- resource_compute_network_googleapi "google.golang.org/api/googleapi"
- resource_compute_network_peering_googleapi "google.golang.org/api/googleapi"
- resource_compute_region_backend_service_googleapi "google.golang.org/api/googleapi"
- resource_compute_region_disk_googleapi "google.golang.org/api/googleapi"
- resource_compute_router_interface_googleapi "google.golang.org/api/googleapi"
- resource_compute_router_nat_googleapi "google.golang.org/api/googleapi"
- resource_compute_router_peer_googleapi "google.golang.org/api/googleapi"
- resource_compute_shared_vpc_service_project_googleapi "google.golang.org/api/googleapi"
- resource_compute_target_pool_googleapi "google.golang.org/api/googleapi"
- resource_data_loss_prevention_stored_info_type_googleapi "google.golang.org/api/googleapi"
- resource_dataflow_job_googleapi "google.golang.org/api/googleapi"
- resource_google_project_googleapi "google.golang.org/api/googleapi"
- resource_google_project_service_googleapi "google.golang.org/api/googleapi"
- resource_monitoring_slo_googleapi "google.golang.org/api/googleapi"
- resource_secret_manager_secret_version_googleapi "google.golang.org/api/googleapi"
- resource_sql_database_instance_googleapi "google.golang.org/api/googleapi"
- resource_sql_source_representation_instance_googleapi "google.golang.org/api/googleapi"
- resource_storage_bucket_googleapi "google.golang.org/api/googleapi"
- resource_storage_bucket_object_googleapi "google.golang.org/api/googleapi"
- resource_storage_hmac_key_googleapi "google.golang.org/api/googleapi"
- retry_transport_googleapi "google.golang.org/api/googleapi"
- service_account_waiter_googleapi "google.golang.org/api/googleapi"
- service_usage_operation_googleapi "google.golang.org/api/googleapi"
- serviceman_operation_googleapi "google.golang.org/api/googleapi"
- serviceusage_operation_googleapi "google.golang.org/api/googleapi"
- sql_utils_googleapi "google.golang.org/api/googleapi"
- transport_googleapi "google.golang.org/api/googleapi"
- utils_googleapi "google.golang.org/api/googleapi"
- config_healthcarehealthcare "google.golang.org/api/healthcare/v1"
- iam_healthcare_dataset_healthcarehealthcare "google.golang.org/api/healthcare/v1"
- iam_healthcare_dicom_store_healthcarehealthcare "google.golang.org/api/healthcare/v1"
- iam_healthcare_fhir_store_healthcarehealthcare "google.golang.org/api/healthcare/v1"
- iam_healthcare_hl7_v2_store_healthcarehealthcare "google.golang.org/api/healthcare/v1"
- config_iam "google.golang.org/api/iam/v1"
- iam_service_account_iam "google.golang.org/api/iam/v1"
- resource_google_organization_iam_custom_role_iam "google.golang.org/api/iam/v1"
- resource_google_project_default_service_accounts_iam "google.golang.org/api/iam/v1"
- resource_google_project_iam_custom_role_iam "google.golang.org/api/iam/v1"
- resource_google_service_account_iam "google.golang.org/api/iam/v1"
- resource_google_service_account_key_iam "google.golang.org/api/iam/v1"
- service_account_waiter_iam "google.golang.org/api/iam/v1"
- config_iamcredentialsiamcredentials "google.golang.org/api/iamcredentials/v1"
- data_source_google_service_account_access_token_iamcredentialsiamcredentials "google.golang.org/api/iamcredentials/v1"
- data_source_google_service_account_id_token_iamcredentialsiamcredentials "google.golang.org/api/iamcredentials/v1"
- data_source_google_service_account_id_token_idtoken "google.golang.org/api/idtoken"
- config_loggingcloudlogging "google.golang.org/api/logging/v2"
- logging_exclusion_billing_account_logging "google.golang.org/api/logging/v2"
- logging_exclusion_folder_logging "google.golang.org/api/logging/v2"
- logging_exclusion_organization_logging "google.golang.org/api/logging/v2"
- logging_exclusion_project_logging "google.golang.org/api/logging/v2"
- resource_logging_exclusion_logging "google.golang.org/api/logging/v2"
- resource_logging_sink_logging "google.golang.org/api/logging/v2"
- bigtable_client_factory_option "google.golang.org/api/option"
- config_option "google.golang.org/api/option"
- data_source_google_service_account_id_token_option "google.golang.org/api/option"
- mtls_util_internaloption "google.golang.org/api/option/internaloption"
- config_pubsub "google.golang.org/api/pubsub/v1"
- iam_pubsub_subscription_pubsub "google.golang.org/api/pubsub/v1"
- config_servicemanagement "google.golang.org/api/servicemanagement/v1"
- resource_endpoints_service_servicemanagement "google.golang.org/api/servicemanagement/v1"
- serviceman_operation_servicemanagement "google.golang.org/api/servicemanagement/v1"
- config_servicenetworking "google.golang.org/api/servicenetworking/v1"
- resource_google_service_networking_peered_dns_domain_servicenetworking "google.golang.org/api/servicenetworking/v1"
- resource_service_networking_connection_servicenetworking "google.golang.org/api/servicenetworking/v1"
- service_networking_operation_servicenetworking "google.golang.org/api/servicenetworking/v1"
- config_serviceusage "google.golang.org/api/serviceusage/v1"
- resource_google_project_service_serviceusage "google.golang.org/api/serviceusage/v1"
- resource_google_project_serviceusage "google.golang.org/api/serviceusage/v1"
- serviceusage_operation_serviceusage "google.golang.org/api/serviceusage/v1"
- config_sourcerepo "google.golang.org/api/sourcerepo/v1"
- config_spanner "google.golang.org/api/spanner/v1"
- iam_spanner_database_spanner "google.golang.org/api/spanner/v1"
- iam_spanner_instance_spannerspanner "google.golang.org/api/spanner/v1"
- config_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- data_source_sql_backup_run_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- error_retry_predicates_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- resource_sql_database_instance_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- resource_sql_ssl_cert_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- resource_sql_user_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- sqladmin_operation_sqladminsqladmin "google.golang.org/api/sqladmin/v1beta4"
- config_storage "google.golang.org/api/storage/v1"
- data_source_storage_bucket_object_content_storage "google.golang.org/api/storage/v1"
- resource_storage_bucket_acl_storage "google.golang.org/api/storage/v1"
- resource_storage_bucket_object_storage "google.golang.org/api/storage/v1"
- resource_storage_bucket_storage "google.golang.org/api/storage/v1"
- resource_storage_default_object_acl_storage "google.golang.org/api/storage/v1"
- resource_storage_notification_storage "google.golang.org/api/storage/v1"
- resource_storage_object_acl_storage "google.golang.org/api/storage/v1"
- config_storagetransfer "google.golang.org/api/storagetransfer/v1"
- resource_storage_transfer_job_storagetransfer "google.golang.org/api/storagetransfer/v1"
- config_transport "google.golang.org/api/transport"
- mtls_util_transport "google.golang.org/api/transport"
- error_retry_predicates_status "google.golang.org/grpc/status"
-)
-
-type AccessContextManagerOperationWaiter struct {
- Config *Config
- UserAgent string
- CommonOperationWaiter
-}
-
-func (w *AccessContextManagerOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, access_context_manager_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := access_context_manager_operation_fmt.Sprintf("https://accesscontextmanager.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", "", url, w.UserAgent, nil)
-}
-
-func createAccessContextManagerWaiter(config *Config, op map[string]interface{}, activity, userAgent string) (*AccessContextManagerOperationWaiter, error) {
- w := &AccessContextManagerOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func accessContextManagerOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, activity, userAgent string, timeout access_context_manager_operation_time.Duration) error {
- w, err := createAccessContextManagerWaiter(config, op, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return access_context_manager_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func accessContextManagerOperationWaitTime(config *Config, op map[string]interface{}, activity, userAgent string, timeout access_context_manager_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createAccessContextManagerWaiter(config, op, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type ActiveDirectoryOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- CommonOperationWaiter
-}
-
-func (w *ActiveDirectoryOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, active_directory_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := active_directory_operation_fmt.Sprintf("https://managedidentities.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", w.Project, url, w.UserAgent, nil)
-}
-
-func createActiveDirectoryWaiter(config *Config, op map[string]interface{}, project, activity, userAgent string) (*ActiveDirectoryOperationWaiter, error) {
- w := &ActiveDirectoryOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- Project: project,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func activeDirectoryOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout active_directory_operation_time.Duration) error {
- w, err := createActiveDirectoryWaiter(config, op, project, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return active_directory_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func activeDirectoryOperationWaitTime(config *Config, op map[string]interface{}, project, activity, userAgent string, timeout active_directory_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createActiveDirectoryWaiter(config, op, project, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type ApigeeOperationWaiter struct {
- Config *Config
- UserAgent string
- CommonOperationWaiter
-}
-
-func (w *ApigeeOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, apigee_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := apigee_operation_fmt.Sprintf("https://apigee.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", "", url, w.UserAgent, nil)
-}
-
-func createApigeeWaiter(config *Config, op map[string]interface{}, activity, userAgent string) (*ApigeeOperationWaiter, error) {
- w := &ApigeeOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func apigeeOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, activity, userAgent string, timeout apigee_operation_time.Duration) error {
- w, err := createApigeeWaiter(config, op, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return apigee_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func apigeeOperationWaitTime(config *Config, op map[string]interface{}, activity, userAgent string, timeout apigee_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createApigeeWaiter(config, op, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-var (
- appEngineOperationIdRegexp = appengine_operation_regexp.MustCompile(appengine_operation_fmt.Sprintf("apps/%s/operations/(.*)", ProjectRegex))
-)
-
-type AppEngineOperationWaiter struct {
- Service *appengine_operation_appengine.APIService
- AppId string
- CommonOperationWaiter
-}
-
-func (w *AppEngineOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, appengine_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- matches := appEngineOperationIdRegexp.FindStringSubmatch(w.Op.Name)
- if len(matches) != 2 {
- return nil, appengine_operation_fmt.Errorf("Expected %d results of parsing operation name, got %d from %s", 2, len(matches), w.Op.Name)
- }
- return w.Service.Apps.Operations.Get(w.AppId, matches[1]).Do()
-}
-
-func appEngineOperationWaitTimeWithResponse(config *Config, res interface{}, response *map[string]interface{}, appId, activity, userAgent string, timeout appengine_operation_time.Duration) error {
- op := &appengine_operation_appengine.Operation{}
- err := Convert(res, op)
- if err != nil {
- return err
- }
-
- w := &AppEngineOperationWaiter{
- Service: config.NewAppEngineClient(userAgent),
- AppId: appId,
- }
-
- if err := w.SetOp(op); err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return appengine_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func appEngineOperationWaitTime(config *Config, res interface{}, appId, activity, userAgent string, timeout appengine_operation_time.Duration) error {
- op := &appengine_operation_appengine.Operation{}
- err := Convert(res, op)
- if err != nil {
- return err
- }
-
- w := &AppEngineOperationWaiter{
- Service: config.NewAppEngineClient(userAgent),
- AppId: appId,
- }
-
- if err := w.SetOp(op); err != nil {
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-const defaultBatchSendIntervalSec = 3
-
-type RequestBatcher struct {
- batcher_sync.Mutex
-
- *batchingConfig
- parentCtx batcher_context.Context
- batches map[string]*startedBatch
- debugId string
-}
-
-type (
- BatchRequest struct {
- ResourceName string
-
- Body interface{}
-
- CombineF BatcherCombineFunc
-
- SendF BatcherSendFunc
-
- DebugId string
- }
-
- BatcherCombineFunc func(body interface{}, toAdd interface{}) (interface{}, error)
-
- BatcherSendFunc func(resourceName string, body interface{}) (interface{}, error)
-)
-
-type batchResponse struct {
- body interface{}
- err error
-}
-
-func (br *batchResponse) IsError() bool {
- return br.err != nil
-}
-
-type startedBatch struct {
- batchKey string
-
- *BatchRequest
-
- subscribers []batchSubscriber
-
- timer *batcher_time.Timer
-}
-
-type batchSubscriber struct {
- singleRequest *BatchRequest
-
- respCh chan batchResponse
-}
-
-type batchingConfig struct {
- sendAfter batcher_time.Duration
- enableBatching bool
-}
-
-func NewRequestBatcher(debugId string, ctx batcher_context.Context, config *batchingConfig) *RequestBatcher {
- batcher := &RequestBatcher{
- debugId: debugId,
- parentCtx: ctx,
- batchingConfig: config,
- batches: make(map[string]*startedBatch),
- }
-
- go func(b *RequestBatcher) {
-
- <-b.parentCtx.Done()
-
- batcher_log.Printf("[DEBUG] parent context canceled, cleaning up batcher batches")
- b.stop()
- }(batcher)
-
- return batcher
-}
-
-func (b *RequestBatcher) stop() {
- b.Lock()
- defer b.Unlock()
-
- batcher_log.Printf("[DEBUG] Stopping batcher %q", b.debugId)
- for batchKey, batch := range b.batches {
- batcher_log.Printf("[DEBUG] Cancelling started batch for batchKey %q", batchKey)
- batch.timer.Stop()
- for _, l := range batch.subscribers {
- close(l.respCh)
- }
- }
-}
-
-func (b *RequestBatcher) SendRequestWithTimeout(batchKey string, request *BatchRequest, timeout batcher_time.Duration) (interface{}, error) {
- if request == nil {
- return nil, batcher_fmt.Errorf("error, cannot request batching for nil BatchRequest")
- }
- if request.CombineF == nil {
- return nil, batcher_fmt.Errorf("error, cannot request batching for BatchRequest with nil CombineF")
- }
- if request.SendF == nil {
- return nil, batcher_fmt.Errorf("error, cannot request batching for BatchRequest with nil SendF")
- }
- if !b.enableBatching {
- batcher_log.Printf("[DEBUG] Batching is disabled, sending single request for %q", request.DebugId)
- return request.SendF(request.ResourceName, request.Body)
- }
-
- respCh, err := b.registerBatchRequest(batchKey, request)
- if err != nil {
- return nil, batcher_fmt.Errorf("error adding request to batch: %s", err)
- }
-
- ctx, cancel := batcher_context.WithTimeout(b.parentCtx, timeout)
- defer cancel()
-
- select {
- case resp := <-respCh:
- if resp.err != nil {
- return nil, batcher_errwrap.Wrapf(
- batcher_fmt.Sprintf("Request `%s` returned error: {{err}}", request.DebugId),
- resp.err)
- }
- return resp.body, nil
- case <-ctx.Done():
- break
- }
- if b.parentCtx.Err() != nil {
- switch b.parentCtx.Err() {
- case batcher_context.Canceled:
- return nil, batcher_fmt.Errorf("Parent context of request %s canceled", batchKey)
- case batcher_context.DeadlineExceeded:
- return nil, batcher_fmt.Errorf("Parent context of request %s timed out", batchKey)
- default:
- return nil, batcher_fmt.Errorf("Parent context of request %s encountered an error: %v", batchKey, ctx.Err())
- }
- }
- switch ctx.Err() {
- case batcher_context.Canceled:
- return nil, batcher_fmt.Errorf("Request %s canceled", batchKey)
- case batcher_context.DeadlineExceeded:
- return nil, batcher_fmt.Errorf("Request %s timed out after %v", batchKey, timeout)
- default:
- return nil, batcher_fmt.Errorf("Error making request %s: %v", batchKey, ctx.Err())
- }
-}
-
-func (b *RequestBatcher) registerBatchRequest(batchKey string, newRequest *BatchRequest) (<-chan batchResponse, error) {
- b.Lock()
- defer b.Unlock()
-
- if batch, ok := b.batches[batchKey]; ok {
- return batch.addRequest(newRequest)
- }
-
- batcher_log.Printf("[DEBUG] Creating new batch %q from request %q", newRequest.DebugId, batchKey)
-
- respCh := make(chan batchResponse, 1)
- sub := batchSubscriber{
- singleRequest: newRequest,
- respCh: respCh,
- }
-
- b.batches[batchKey] = &startedBatch{
- BatchRequest: &BatchRequest{
- ResourceName: newRequest.ResourceName,
- Body: newRequest.Body,
- CombineF: newRequest.CombineF,
- SendF: newRequest.SendF,
- DebugId: batcher_fmt.Sprintf("Combined batch for started batch %q", batchKey),
- },
- batchKey: batchKey,
- subscribers: []batchSubscriber{sub},
- }
-
- b.batches[batchKey].timer = batcher_time.AfterFunc(b.sendAfter, func() {
- batch := b.popBatch(batchKey)
- if batch == nil {
- batcher_log.Printf("[ERROR] batch should have been added to saved batches - just run as single request %q", newRequest.DebugId)
- respCh <- newRequest.send()
- close(respCh)
- } else {
- b.sendBatchWithSingleRetry(batchKey, batch)
- }
- })
-
- return respCh, nil
-}
-
-func (b *RequestBatcher) sendBatchWithSingleRetry(batchKey string, batch *startedBatch) {
- batcher_log.Printf("[DEBUG] Sending batch %q combining %d requests)", batchKey, len(batch.subscribers))
- resp := batch.send()
-
- if resp.IsError() && len(batch.subscribers) > 1 {
- batcher_log.Printf("[DEBUG] Batch failed with error: %v", resp.err)
- batcher_log.Printf("[DEBUG] Sending each request in batch separately")
- for _, sub := range batch.subscribers {
- batcher_log.Printf("[DEBUG] Retrying single request %q", sub.singleRequest.DebugId)
- singleResp := sub.singleRequest.send()
- batcher_log.Printf("[DEBUG] Retried single request %q returned response: %v", sub.singleRequest.DebugId, singleResp)
-
- if singleResp.IsError() {
- singleResp.err = batcher_errwrap.Wrapf(
- batcher_fmt.Sprintf("Batch request and retried single request %q both failed. Final error: {{err}}", sub.singleRequest.DebugId),
- singleResp.err)
- }
- sub.respCh <- singleResp
- close(sub.respCh)
- }
- } else {
-
- for _, sub := range batch.subscribers {
- sub.respCh <- resp
- close(sub.respCh)
- }
- }
-}
-
-func (b *RequestBatcher) popBatch(batchKey string) *startedBatch {
- b.Lock()
- defer b.Unlock()
-
- batch, ok := b.batches[batchKey]
- if !ok {
- batcher_log.Printf("[DEBUG] Batch with ID %q not found in batcher", batchKey)
- return nil
- }
-
- delete(b.batches, batchKey)
- return batch
-}
-
-func (batch *startedBatch) addRequest(newRequest *BatchRequest) (<-chan batchResponse, error) {
- batcher_log.Printf("[DEBUG] Adding batch request %q to existing batch %q", newRequest.DebugId, batch.batchKey)
- if batch.CombineF == nil {
- return nil, batcher_fmt.Errorf("Provider Error: unable to add request %q to batch %q with no CombineF", newRequest.DebugId, batch.batchKey)
- }
- newBody, err := batch.CombineF(batch.Body, newRequest.Body)
- if err != nil {
- return nil, batcher_fmt.Errorf("Provider Error: Unable to combine request %q data into existing batch %q: %v", newRequest.DebugId, batch.batchKey, err)
- }
- batch.Body = newBody
-
- batcher_log.Printf("[DEBUG] Added batch request %q to batch. New batch body: %v", newRequest.DebugId, batch.Body)
-
- respCh := make(chan batchResponse, 1)
- sub := batchSubscriber{
- singleRequest: newRequest,
- respCh: respCh,
- }
- batch.subscribers = append(batch.subscribers, sub)
- return respCh, nil
-}
-
-func (req *BatchRequest) send() batchResponse {
- if req.SendF == nil {
- return batchResponse{
- err: batcher_fmt.Errorf("provider error: Batch request has no SendBatch function"),
- }
- }
- v, err := req.SendF(req.ResourceName, req.Body)
- return batchResponse{v, err}
-}
-
-type BigtableClientFactory struct {
- UserAgent string
- TokenSource bigtable_client_factory_oauth2.TokenSource
- BillingProject string
- UserProjectOverride bool
-}
-
-func (s BigtableClientFactory) NewInstanceAdminClient(project string) (*bigtable_client_factory_bigtable.InstanceAdminClient, error) {
- var opts []bigtable_client_factory_option.ClientOption
- if requestReason := bigtable_client_factory_os.Getenv("CLOUDSDK_CORE_REQUEST_REASON"); requestReason != "" {
- opts = append(opts, bigtable_client_factory_option.WithRequestReason(requestReason))
- }
-
- if s.UserProjectOverride && s.BillingProject != "" {
- opts = append(opts, bigtable_client_factory_option.WithQuotaProject(s.BillingProject))
- }
-
- opts = append(opts, bigtable_client_factory_option.WithTokenSource(s.TokenSource), bigtable_client_factory_option.WithUserAgent(s.UserAgent))
- return bigtable_client_factory_bigtable.NewInstanceAdminClient(bigtable_client_factory_context.Background(), project, opts...)
-}
-
-func (s BigtableClientFactory) NewAdminClient(project, instance string) (*bigtable_client_factory_bigtable.AdminClient, error) {
- var opts []bigtable_client_factory_option.ClientOption
- if requestReason := bigtable_client_factory_os.Getenv("CLOUDSDK_CORE_REQUEST_REASON"); requestReason != "" {
- opts = append(opts, bigtable_client_factory_option.WithRequestReason(requestReason))
- }
-
- if s.UserProjectOverride && s.BillingProject != "" {
- opts = append(opts, bigtable_client_factory_option.WithQuotaProject(s.BillingProject))
- }
-
- opts = append(opts, bigtable_client_factory_option.WithTokenSource(s.TokenSource), bigtable_client_factory_option.WithUserAgent(s.UserAgent))
- return bigtable_client_factory_bigtable.NewAdminClient(bigtable_client_factory_context.Background(), project, instance, opts...)
-}
-
-type CloudFunctionsOperationWaiter struct {
- Service *cloudfunctions_operation_cloudfunctions.Service
- CommonOperationWaiter
-}
-
-func (w *CloudFunctionsOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, cloudfunctions_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- return w.Service.Operations.Get(w.Op.Name).Do()
-}
-
-func cloudFunctionsOperationWait(config *Config, op *cloudfunctions_operation_cloudfunctions.Operation, activity, userAgent string, timeout cloudfunctions_operation_time.Duration) error {
- w := &CloudFunctionsOperationWaiter{
- Service: config.NewCloudFunctionsClient(userAgent),
- }
- if err := w.SetOp(op); err != nil {
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-const readyStatusType string = "Ready"
-
-const pendingCertificateReason string = "CertificatePending"
-
-type Condition struct {
- Type string
- Status string
- Reason string
- Message string
-}
-
-type KnativeStatus struct {
- Metadata struct {
- Name string
- Namespace string
- SelfLink string
- }
- Status struct {
- Conditions []Condition
- ObservedGeneration float64
- }
-}
-
-func getGeneration(res map[string]interface{}) (int, error) {
- metadata, ok := res["metadata"]
- if !ok {
- return 0, cloudrun_polling_fmt.Errorf("Unable to find knative metadata")
- }
- m, ok := metadata.(map[string]interface{})
- if !ok {
- return 0, cloudrun_polling_fmt.Errorf("Unable to find generation in knative metadata")
- }
- gen, ok := m["generation"]
- if !ok {
- return 0, cloudrun_polling_fmt.Errorf("Unable to find generation in knative metadata")
- }
- return int(gen.(float64)), nil
-}
-
-func PollCheckKnativeStatusFunc(knativeRestResponse map[string]interface{}) func(resp map[string]interface{}, respErr error) PollResult {
- return func(resp map[string]interface{}, respErr error) PollResult {
- if respErr != nil {
- return ErrorPollResult(respErr)
- }
- s := KnativeStatus{}
- if err := Convert(resp, &s); err != nil {
- return ErrorPollResult(cloudrun_polling_errwrap.Wrapf("unable to get KnativeStatus: {{err}}", err))
- }
-
- gen, err := getGeneration(knativeRestResponse)
- if err != nil {
- return ErrorPollResult(cloudrun_polling_errwrap.Wrapf("unable to find Knative generation: {{err}}", err))
- }
- if int(s.Status.ObservedGeneration) != gen {
- return PendingStatusPollResult("waiting for observed generation to match")
- }
- for _, condition := range s.Status.Conditions {
- if condition.Type == readyStatusType {
- cloudrun_polling_log.Printf("[DEBUG] checking KnativeStatus Ready condition %s: %s", condition.Status, condition.Message)
- switch condition.Status {
- case "True":
-
- return SuccessPollResult()
- case "Unknown":
-
- if condition.Reason == pendingCertificateReason {
- return SuccessPollResult()
- }
- return PendingStatusPollResult(cloudrun_polling_fmt.Sprintf("%s:%s", condition.Status, condition.Message))
- case "False":
- return ErrorPollResult(cloudrun_polling_fmt.Errorf(`resource is in failed state "Ready:False", message: %s`, condition.Message))
- }
- }
- }
- return PendingStatusPollResult("no status yet")
- }
-}
-
-func optionalPrefixSuppress(prefix string) common_diff_suppress_schema.SchemaDiffSuppressFunc {
- return func(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- return prefix+old == new || prefix+new == old
- }
-}
-
-func ignoreMissingKeyInMap(key string) common_diff_suppress_schema.SchemaDiffSuppressFunc {
- return func(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- common_diff_suppress_log.Printf("[DEBUG] - suppressing diff %q with old %q, new %q", k, old, new)
- if common_diff_suppress_strings.HasSuffix(k, ".%") {
- oldNum, err := common_diff_suppress_strconv.Atoi(old)
- if err != nil {
- common_diff_suppress_log.Printf("[ERROR] could not parse %q as number, no longer attempting diff suppress", old)
- return false
- }
- newNum, err := common_diff_suppress_strconv.Atoi(new)
- if err != nil {
- common_diff_suppress_log.Printf("[ERROR] could not parse %q as number, no longer attempting diff suppress", new)
- return false
- }
- return oldNum+1 == newNum
- } else if common_diff_suppress_strings.HasSuffix(k, "."+key) {
- return old == ""
- }
- return false
- }
-}
-
-func optionalSurroundingSpacesSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- return common_diff_suppress_strings.TrimSpace(old) == common_diff_suppress_strings.TrimSpace(new)
-}
-
-func emptyOrDefaultStringSuppress(defaultVal string) common_diff_suppress_schema.SchemaDiffSuppressFunc {
- return func(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- return (old == "" && new == defaultVal) || (new == "" && old == defaultVal)
- }
-}
-
-func ipCidrRangeDiffSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
-
- if len(new) > 0 && new[0] == '/' {
- oldNetmaskStartPos := common_diff_suppress_strings.LastIndex(old, "/")
-
- if oldNetmaskStartPos != -1 {
- oldNetmask := old[common_diff_suppress_strings.LastIndex(old, "/"):]
- if oldNetmask == new {
- return true
- }
- }
- }
-
- return false
-}
-
-func sha256DiffSuppress(_, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
- return common_diff_suppress_hex.EncodeToString(common_diff_suppress_sha256.New().Sum([]byte(old))) == new
-}
-
-func caseDiffSuppress(_, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
- return common_diff_suppress_strings.ToUpper(old) == common_diff_suppress_strings.ToUpper(new)
-}
-
-func portRangeDiffSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- return old == new+"-"+new
-}
-
-func rfc3339TimeDiffSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- if (len(old) == 4 && "0"+old == new) || (len(new) == 4 && "0"+new == old) {
- return true
- }
- return false
-}
-
-func emptyOrUnsetBlockDiffSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- o, n := d.GetChange(common_diff_suppress_strings.TrimSuffix(k, ".#"))
- var l []interface{}
- if old == "0" && new == "1" {
- l = n.([]interface{})
- } else if new == "0" && old == "1" {
- l = o.([]interface{})
- } else {
-
- return false
- }
-
- contents := l[0].(map[string]interface{})
- for _, v := range contents {
- if !isEmptyValue(common_diff_suppress_reflect.ValueOf(v)) {
- return false
- }
- }
- return true
-}
-
-func locationDiffSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- return locationDiffSuppressHelper(old, new) || locationDiffSuppressHelper(new, old)
-}
-
-func locationDiffSuppressHelper(a, b string) bool {
- return common_diff_suppress_strings.Replace(a, "/locations/", "/regions/", 1) == b ||
- common_diff_suppress_strings.Replace(a, "/locations/", "/zones/", 1) == b
-}
-
-func absoluteDomainSuppress(k, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
- if common_diff_suppress_strings.HasPrefix(k, "managed.0.domains.") {
- return old == common_diff_suppress_strings.TrimRight(new, ".") || new == common_diff_suppress_strings.TrimRight(old, ".")
- }
- return false
-}
-
-func timestampDiffSuppress(format string) common_diff_suppress_schema.SchemaDiffSuppressFunc {
- return func(_, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
- oldT, err := common_diff_suppress_time.Parse(format, old)
- if err != nil {
- return false
- }
-
- newT, err := common_diff_suppress_time.Parse(format, new)
- if err != nil {
- return false
- }
-
- return oldT == newT
- }
-}
-
-func internalIpDiffSuppress(_, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
- return (common_diff_suppress_net.ParseIP(old) != nil) && (common_diff_suppress_net.ParseIP(new) == nil)
-}
-
-func durationDiffSuppress(k, old, new string, d *common_diff_suppress_schema.ResourceData) bool {
- oDuration, err := common_diff_suppress_time.ParseDuration(old)
- if err != nil {
- return false
- }
- nDuration, err := common_diff_suppress_time.ParseDuration(new)
- if err != nil {
- return false
- }
- return oDuration == nDuration
-}
-
-func compareIpAddressOrSelfLinkOrResourceName(_, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
-
- if common_diff_suppress_net.ParseIP(new) != nil {
- return new == old
- }
-
- return compareSelfLinkOrResourceName("", old, new, nil)
-}
-
-func compareOptionalSubnet(_, old, new string, _ *common_diff_suppress_schema.ResourceData) bool {
- if isEmptyValue(common_diff_suppress_reflect.ValueOf(new)) {
- return true
- }
-
- return compareSelfLinkOrResourceName("", old, new, nil)
-}
-
-type CommonOpError struct {
- *common_operation_cloudresourcemanagercloudresourcemanager.Status
-}
-
-func (e *CommonOpError) Error() string {
- return common_operation_fmt.Sprintf("Error code %v, message: %s", e.Code, e.Message)
-}
-
-type Waiter interface {
- State() string
-
- Error() error
-
- IsRetryable(error) bool
-
- SetOp(interface{}) error
-
- QueryOp() (interface{}, error)
-
- OpName() string
-
- PendingStates() []string
-
- TargetStates() []string
-}
-
-type CommonOperationWaiter struct {
- Op CommonOperation
-}
-
-func (w *CommonOperationWaiter) State() string {
- if w == nil {
- return common_operation_fmt.Sprintf("Operation is nil!")
- }
-
- return common_operation_fmt.Sprintf("done: %v", w.Op.Done)
-}
-
-func (w *CommonOperationWaiter) Error() error {
- if w != nil && w.Op.Error != nil {
- return &CommonOpError{w.Op.Error}
- }
- return nil
-}
-
-func (w *CommonOperationWaiter) IsRetryable(error) bool {
- return false
-}
-
-func (w *CommonOperationWaiter) SetOp(op interface{}) error {
- if err := Convert(op, &w.Op); err != nil {
- return err
- }
- return nil
-}
-
-func (w *CommonOperationWaiter) OpName() string {
- if w == nil {
- return ""
- }
-
- return w.Op.Name
-}
-
-func (w *CommonOperationWaiter) PendingStates() []string {
- return []string{"done: false"}
-}
-
-func (w *CommonOperationWaiter) TargetStates() []string {
- return []string{"done: true"}
-}
-
-func OperationDone(w Waiter) bool {
- for _, s := range w.TargetStates() {
- if s == w.State() {
- return true
- }
- }
- return false
-}
-
-func CommonRefreshFunc(w Waiter) common_operation_resource.StateRefreshFunc {
- return func() (interface{}, string, error) {
- op, err := w.QueryOp()
- if err != nil {
-
- if isRetryableError(err, isNotFoundRetryableError("GET operation"), isOperationReadQuotaError) {
- common_operation_log.Printf("[DEBUG] Dismissed retryable error on GET operation %q: %s", w.OpName(), err)
- return nil, "done: false", nil
- }
- return nil, "", common_operation_fmt.Errorf("error while retrieving operation: %s", err)
- }
-
- if err = w.SetOp(op); err != nil {
- return nil, "", common_operation_fmt.Errorf("Cannot continue, unable to use operation: %s", err)
- }
-
- if err = w.Error(); err != nil {
- if w.IsRetryable(err) {
- common_operation_log.Printf("[DEBUG] Retrying operation GET based on retryable err: %s", err)
- return nil, w.State(), nil
- }
- return nil, "", err
- }
-
- common_operation_log.Printf("[DEBUG] Got %v while polling for operation %s's status", w.State(), w.OpName())
- return op, w.State(), nil
- }
-}
-
-func OperationWait(w Waiter, activity string, timeout common_operation_time.Duration, pollInterval common_operation_time.Duration) error {
- if OperationDone(w) {
- if w.Error() != nil {
- return w.Error()
- }
- return nil
- }
-
- c := &common_operation_resource.StateChangeConf{
- Pending: w.PendingStates(),
- Target: w.TargetStates(),
- Refresh: CommonRefreshFunc(w),
- Timeout: timeout,
- MinTimeout: 2 * common_operation_time.Second,
- PollInterval: pollInterval,
- }
- opRaw, err := c.WaitForState()
- if err != nil {
- return common_operation_fmt.Errorf("Error waiting for %s: %s", activity, err)
- }
-
- err = w.SetOp(opRaw)
- if err != nil {
- return err
- }
- if w.Error() != nil {
- return w.Error()
- }
-
- return nil
-}
-
-type CommonOperation common_operation_cloudresourcemanagercloudresourcemanager.Operation
-
-type (
- PollReadFunc func() (resp map[string]interface{}, respErr error)
-
- PollCheckResponseFunc func(resp map[string]interface{}, respErr error) PollResult
-
- PollResult *common_polling_resource.RetryError
-)
-
-func ErrorPollResult(err error) PollResult {
- return common_polling_resource.NonRetryableError(err)
-}
-
-func PendingStatusPollResult(status string) PollResult {
- return common_polling_resource.RetryableError(common_polling_fmt.Errorf("got pending status %q", status))
-}
-
-func SuccessPollResult() PollResult {
- return nil
-}
-
-func PollingWaitTime(pollF PollReadFunc, checkResponse PollCheckResponseFunc, activity string,
- timeout common_polling_time.Duration, targetOccurrences int) error {
- common_polling_log.Printf("[DEBUG] %s: Polling until expected state is read", activity)
- common_polling_log.Printf("[DEBUG] Target occurrences: %d", targetOccurrences)
- if targetOccurrences == 1 {
- return common_polling_resource.Retry(timeout, func() *common_polling_resource.RetryError {
- readResp, readErr := pollF()
- return checkResponse(readResp, readErr)
- })
- }
- return RetryWithTargetOccurrences(timeout, targetOccurrences, func() *common_polling_resource.RetryError {
- readResp, readErr := pollF()
- return checkResponse(readResp, readErr)
- })
-}
-
-func RetryWithTargetOccurrences(timeout common_polling_time.Duration, targetOccurrences int,
- f common_polling_resource.RetryFunc) error {
-
- var resultErr error
- var resultErrMu common_polling_sync.Mutex
-
- c := &common_polling_resource.StateChangeConf{
- Pending: []string{"retryableerror"},
- Target: []string{"success"},
- Timeout: timeout,
- MinTimeout: 500 * common_polling_time.Millisecond,
- ContinuousTargetOccurence: targetOccurrences,
- Refresh: func() (interface{}, string, error) {
- rerr := f()
-
- resultErrMu.Lock()
- defer resultErrMu.Unlock()
-
- if rerr == nil {
- resultErr = nil
- return 42, "success", nil
- }
-
- resultErr = rerr.Err
-
- if rerr.Retryable {
- return 42, "retryableerror", nil
- }
- return nil, "quit", rerr.Err
- },
- }
-
- _, waitErr := c.WaitForState()
-
- resultErrMu.Lock()
- defer resultErrMu.Unlock()
-
- if resultErr == nil {
- return waitErr
- }
-
- return resultErr
-}
-
-func PollCheckForExistence(_ map[string]interface{}, respErr error) PollResult {
- if respErr != nil {
- if isGoogleApiErrorWithCode(respErr, 404) {
- return PendingStatusPollResult("not found")
- }
- return ErrorPollResult(respErr)
- }
- return SuccessPollResult()
-}
-
-func PollCheckForExistenceWith403(_ map[string]interface{}, respErr error) PollResult {
- if respErr != nil {
- if isGoogleApiErrorWithCode(respErr, 404) || isGoogleApiErrorWithCode(respErr, 403) {
- return PendingStatusPollResult("not found")
- }
- return ErrorPollResult(respErr)
- }
- return SuccessPollResult()
-}
-
-func PollCheckForAbsence(_ map[string]interface{}, respErr error) PollResult {
- if respErr != nil {
- if isGoogleApiErrorWithCode(respErr, 404) {
- return SuccessPollResult()
- }
- return ErrorPollResult(respErr)
- }
- return PendingStatusPollResult("found")
-}
-
-type ComposerOperationWaiter struct {
- Service *composer_operation_composer.ProjectsLocationsService
- CommonOperationWaiter
-}
-
-func (w *ComposerOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, composer_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- return w.Service.Operations.Get(w.Op.Name).Do()
-}
-
-func composerOperationWaitTime(config *Config, op *composer_operation_composer.Operation, project, activity, userAgent string, timeout composer_operation_time.Duration) error {
- w := &ComposerOperationWaiter{
- Service: config.NewComposerClient(userAgent).Projects.Locations,
- }
- if err := w.SetOp(op); err != nil {
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func emptySecurityPolicyReference() *compute_backend_service_helpers_compute.SecurityPolicyReference {
- return &compute_backend_service_helpers_compute.SecurityPolicyReference{}
-}
-
-func instanceSchedulingNodeAffinitiesElemSchema() *compute_instance_helpers_schema.Resource {
- return &compute_instance_helpers_schema.Resource{
- Schema: map[string]*compute_instance_helpers_schema.Schema{
- "key": {
- Type: compute_instance_helpers_schema.TypeString,
- Required: true,
- },
- "operator": {
- Type: compute_instance_helpers_schema.TypeString,
- Required: true,
- ValidateFunc: compute_instance_helpers_validation.StringInSlice([]string{"IN", "NOT_IN"}, false),
- },
- "values": {
- Type: compute_instance_helpers_schema.TypeSet,
- Required: true,
- Elem: &compute_instance_helpers_schema.Schema{Type: compute_instance_helpers_schema.TypeString},
- Set: compute_instance_helpers_schema.HashString,
- },
- },
- }
-}
-
-func expandAliasIpRanges(ranges []interface{}) []*compute_instance_helpers_compute.AliasIpRange {
- ipRanges := make([]*compute_instance_helpers_compute.AliasIpRange, 0, len(ranges))
- for _, raw := range ranges {
- data := raw.(map[string]interface{})
- ipRanges = append(ipRanges, &compute_instance_helpers_compute.AliasIpRange{
- IpCidrRange: data["ip_cidr_range"].(string),
- SubnetworkRangeName: data["subnetwork_range_name"].(string),
- })
- }
- return ipRanges
-}
-
-func flattenAliasIpRange(ranges []*compute_instance_helpers_compute.AliasIpRange) []map[string]interface{} {
- rangesSchema := make([]map[string]interface{}, 0, len(ranges))
- for _, ipRange := range ranges {
- rangesSchema = append(rangesSchema, map[string]interface{}{
- "ip_cidr_range": ipRange.IpCidrRange,
- "subnetwork_range_name": ipRange.SubnetworkRangeName,
- })
- }
- return rangesSchema
-}
-
-func expandScheduling(v interface{}) (*compute_instance_helpers_compute.Scheduling, error) {
- if v == nil {
-
- return &compute_instance_helpers_compute.Scheduling{
- AutomaticRestart: compute_instance_helpers_googleapi.Bool(true),
- }, nil
- }
-
- ls := v.([]interface{})
- if len(ls) == 0 {
-
- return &compute_instance_helpers_compute.Scheduling{
- AutomaticRestart: compute_instance_helpers_googleapi.Bool(true),
- }, nil
- }
-
- if len(ls) > 1 || ls[0] == nil {
- return nil, compute_instance_helpers_fmt.Errorf("expected exactly one scheduling block")
- }
-
- original := ls[0].(map[string]interface{})
- scheduling := &compute_instance_helpers_compute.Scheduling{
- ForceSendFields: make([]string, 0, 4),
- }
-
- if v, ok := original["automatic_restart"]; ok {
- scheduling.AutomaticRestart = compute_instance_helpers_googleapi.Bool(v.(bool))
- scheduling.ForceSendFields = append(scheduling.ForceSendFields, "AutomaticRestart")
- }
-
- if v, ok := original["preemptible"]; ok {
- scheduling.Preemptible = v.(bool)
- scheduling.ForceSendFields = append(scheduling.ForceSendFields, "Preemptible")
- }
-
- if v, ok := original["on_host_maintenance"]; ok {
- scheduling.OnHostMaintenance = v.(string)
- scheduling.ForceSendFields = append(scheduling.ForceSendFields, "OnHostMaintenance")
- }
-
- if v, ok := original["node_affinities"]; ok && v != nil {
- naSet := v.(*compute_instance_helpers_schema.Set).List()
- scheduling.NodeAffinities = make([]*compute_instance_helpers_compute.SchedulingNodeAffinity, len(ls))
- scheduling.ForceSendFields = append(scheduling.ForceSendFields, "NodeAffinities")
- for _, nodeAffRaw := range naSet {
- if nodeAffRaw == nil {
- continue
- }
- nodeAff := nodeAffRaw.(map[string]interface{})
- transformed := &compute_instance_helpers_compute.SchedulingNodeAffinity{
- Key: nodeAff["key"].(string),
- Operator: nodeAff["operator"].(string),
- Values: convertStringArr(nodeAff["values"].(*compute_instance_helpers_schema.Set).List()),
- }
- scheduling.NodeAffinities = append(scheduling.NodeAffinities, transformed)
- }
- }
-
- if v, ok := original["min_node_cpus"]; ok {
- scheduling.MinNodeCpus = int64(v.(int))
- }
-
- return scheduling, nil
-}
-
-func flattenScheduling(resp *compute_instance_helpers_compute.Scheduling) []map[string]interface{} {
- schedulingMap := map[string]interface{}{
- "on_host_maintenance": resp.OnHostMaintenance,
- "preemptible": resp.Preemptible,
- "min_node_cpus": resp.MinNodeCpus,
- }
-
- if resp.AutomaticRestart != nil {
- schedulingMap["automatic_restart"] = *resp.AutomaticRestart
- }
-
- nodeAffinities := compute_instance_helpers_schema.NewSet(compute_instance_helpers_schema.HashResource(instanceSchedulingNodeAffinitiesElemSchema()), nil)
- for _, na := range resp.NodeAffinities {
- nodeAffinities.Add(map[string]interface{}{
- "key": na.Key,
- "operator": na.Operator,
- "values": compute_instance_helpers_schema.NewSet(compute_instance_helpers_schema.HashString, convertStringArrToInterface(na.Values)),
- })
- }
- schedulingMap["node_affinities"] = nodeAffinities
-
- return []map[string]interface{}{schedulingMap}
-}
-
-func flattenAccessConfigs(accessConfigs []*compute_instance_helpers_compute.AccessConfig) ([]map[string]interface{}, string) {
- flattened := make([]map[string]interface{}, len(accessConfigs))
- natIP := ""
- for i, ac := range accessConfigs {
- flattened[i] = map[string]interface{}{
- "nat_ip": ac.NatIP,
- "network_tier": ac.NetworkTier,
- }
- if ac.SetPublicPtr {
- flattened[i]["public_ptr_domain_name"] = ac.PublicPtrDomainName
- }
- if natIP == "" {
- natIP = ac.NatIP
- }
- }
- return flattened, natIP
-}
-
-func flattenIpv6AccessConfigs(ipv6AccessConfigs []*compute_instance_helpers_compute.AccessConfig) []map[string]interface{} {
- flattened := make([]map[string]interface{}, len(ipv6AccessConfigs))
- for i, ac := range ipv6AccessConfigs {
- flattened[i] = map[string]interface{}{
- "network_tier": ac.NetworkTier,
- }
- flattened[i]["public_ptr_domain_name"] = ac.PublicPtrDomainName
- }
- return flattened
-}
-
-func flattenNetworkInterfaces(d *compute_instance_helpers_schema.ResourceData, config *Config, networkInterfaces []*compute_instance_helpers_compute.NetworkInterface) ([]map[string]interface{}, string, string, string, error) {
- flattened := make([]map[string]interface{}, len(networkInterfaces))
- var region, internalIP, externalIP string
-
- for i, iface := range networkInterfaces {
- var ac []map[string]interface{}
- ac, externalIP = flattenAccessConfigs(iface.AccessConfigs)
-
- subnet, err := ParseSubnetworkFieldValue(iface.Subnetwork, d, config)
- if err != nil {
- return nil, "", "", "", err
- }
- region = subnet.Region
-
- flattened[i] = map[string]interface{}{
- "network_ip": iface.NetworkIP,
- "network": ConvertSelfLinkToV1(iface.Network),
- "subnetwork": ConvertSelfLinkToV1(iface.Subnetwork),
- "subnetwork_project": subnet.Project,
- "access_config": ac,
- "alias_ip_range": flattenAliasIpRange(iface.AliasIpRanges),
- "nic_type": iface.NicType,
- "stack_type": iface.StackType,
- "ipv6_access_config": flattenIpv6AccessConfigs(iface.Ipv6AccessConfigs),
- "queue_count": iface.QueueCount,
- }
-
- if iface.Name != "" {
- flattened[i]["name"] = iface.Name
- }
- if internalIP == "" {
- internalIP = iface.NetworkIP
- }
- }
- return flattened, region, internalIP, externalIP, nil
-}
-
-func expandAccessConfigs(configs []interface{}) []*compute_instance_helpers_compute.AccessConfig {
- acs := make([]*compute_instance_helpers_compute.AccessConfig, len(configs))
- for i, raw := range configs {
- acs[i] = &compute_instance_helpers_compute.AccessConfig{}
- acs[i].Type = "ONE_TO_ONE_NAT"
- if raw != nil {
- data := raw.(map[string]interface{})
- acs[i].NatIP = data["nat_ip"].(string)
- acs[i].NetworkTier = data["network_tier"].(string)
- if ptr, ok := data["public_ptr_domain_name"]; ok && ptr != "" {
- acs[i].SetPublicPtr = true
- acs[i].PublicPtrDomainName = ptr.(string)
- }
- }
- }
- return acs
-}
-
-func expandIpv6AccessConfigs(configs []interface{}) []*compute_instance_helpers_compute.AccessConfig {
- iacs := make([]*compute_instance_helpers_compute.AccessConfig, len(configs))
- for i, raw := range configs {
- iacs[i] = &compute_instance_helpers_compute.AccessConfig{}
- if raw != nil {
- data := raw.(map[string]interface{})
- iacs[i].NetworkTier = data["network_tier"].(string)
- if ptr, ok := data["public_ptr_domain_name"]; ok && ptr != "" {
- iacs[i].PublicPtrDomainName = ptr.(string)
- }
- iacs[i].Type = "DIRECT_IPV6"
- }
- }
- return iacs
-}
-
-func expandNetworkInterfaces(d TerraformResourceData, config *Config) ([]*compute_instance_helpers_compute.NetworkInterface, error) {
- configs := d.Get("network_interface").([]interface{})
- ifaces := make([]*compute_instance_helpers_compute.NetworkInterface, len(configs))
- for i, raw := range configs {
- data := raw.(map[string]interface{})
-
- network := data["network"].(string)
- subnetwork := data["subnetwork"].(string)
- if network == "" && subnetwork == "" {
- return nil, compute_instance_helpers_fmt.Errorf("exactly one of network or subnetwork must be provided")
- }
-
- nf, err := ParseNetworkFieldValue(network, d, config)
- if err != nil {
- return nil, compute_instance_helpers_fmt.Errorf("cannot determine self_link for network %q: %s", network, err)
- }
-
- subnetProjectField := compute_instance_helpers_fmt.Sprintf("network_interface.%d.subnetwork_project", i)
- sf, err := ParseSubnetworkFieldValueWithProjectField(subnetwork, subnetProjectField, d, config)
- if err != nil {
- return nil, compute_instance_helpers_fmt.Errorf("cannot determine self_link for subnetwork %q: %s", subnetwork, err)
- }
-
- ifaces[i] = &compute_instance_helpers_compute.NetworkInterface{
- NetworkIP: data["network_ip"].(string),
- Network: nf.RelativeLink(),
- Subnetwork: sf.RelativeLink(),
- AccessConfigs: expandAccessConfigs(data["access_config"].([]interface{})),
- AliasIpRanges: expandAliasIpRanges(data["alias_ip_range"].([]interface{})),
- NicType: data["nic_type"].(string),
- StackType: data["stack_type"].(string),
- QueueCount: int64(data["queue_count"].(int)),
- Ipv6AccessConfigs: expandIpv6AccessConfigs(data["ipv6_access_config"].([]interface{})),
- }
- }
- return ifaces, nil
-}
-
-func flattenServiceAccounts(serviceAccounts []*compute_instance_helpers_compute.ServiceAccount) []map[string]interface{} {
- result := make([]map[string]interface{}, len(serviceAccounts))
- for i, serviceAccount := range serviceAccounts {
- result[i] = map[string]interface{}{
- "email": serviceAccount.Email,
- "scopes": compute_instance_helpers_schema.NewSet(stringScopeHashcode, convertStringArrToInterface(serviceAccount.Scopes)),
- }
- }
- return result
-}
-
-func expandServiceAccounts(configs []interface{}) []*compute_instance_helpers_compute.ServiceAccount {
- accounts := make([]*compute_instance_helpers_compute.ServiceAccount, len(configs))
- for i, raw := range configs {
- data := raw.(map[string]interface{})
-
- accounts[i] = &compute_instance_helpers_compute.ServiceAccount{
- Email: data["email"].(string),
- Scopes: canonicalizeServiceScopes(convertStringSet(data["scopes"].(*compute_instance_helpers_schema.Set))),
- }
-
- if accounts[i].Email == "" {
- accounts[i].Email = "default"
- }
- }
- return accounts
-}
-
-func flattenGuestAccelerators(accelerators []*compute_instance_helpers_compute.AcceleratorConfig) []map[string]interface{} {
- acceleratorsSchema := make([]map[string]interface{}, len(accelerators))
- for i, accelerator := range accelerators {
- acceleratorsSchema[i] = map[string]interface{}{
- "count": accelerator.AcceleratorCount,
- "type": accelerator.AcceleratorType,
- }
- }
- return acceleratorsSchema
-}
-
-func resourceInstanceTags(d TerraformResourceData) *compute_instance_helpers_compute.Tags {
-
- var tags *compute_instance_helpers_compute.Tags
- if v := d.Get("tags"); v != nil {
- vs := v.(*compute_instance_helpers_schema.Set)
- tags = new(compute_instance_helpers_compute.Tags)
- tags.Items = make([]string, vs.Len())
- for i, v := range vs.List() {
- tags.Items[i] = v.(string)
- }
-
- tags.Fingerprint = d.Get("tags_fingerprint").(string)
- }
-
- return tags
-}
-
-func expandShieldedVmConfigs(d TerraformResourceData) *compute_instance_helpers_compute.ShieldedInstanceConfig {
- if _, ok := d.GetOk("shielded_instance_config"); !ok {
- return nil
- }
-
- prefix := "shielded_instance_config.0"
- return &compute_instance_helpers_compute.ShieldedInstanceConfig{
- EnableSecureBoot: d.Get(prefix + ".enable_secure_boot").(bool),
- EnableVtpm: d.Get(prefix + ".enable_vtpm").(bool),
- EnableIntegrityMonitoring: d.Get(prefix + ".enable_integrity_monitoring").(bool),
- ForceSendFields: []string{"EnableSecureBoot", "EnableVtpm", "EnableIntegrityMonitoring"},
- }
-}
-
-func expandConfidentialInstanceConfig(d TerraformResourceData) *compute_instance_helpers_compute.ConfidentialInstanceConfig {
- if _, ok := d.GetOk("confidential_instance_config"); !ok {
- return nil
- }
-
- prefix := "confidential_instance_config.0"
- return &compute_instance_helpers_compute.ConfidentialInstanceConfig{
- EnableConfidentialCompute: d.Get(prefix + ".enable_confidential_compute").(bool),
- }
-}
-
-func flattenConfidentialInstanceConfig(ConfidentialInstanceConfig *compute_instance_helpers_compute.ConfidentialInstanceConfig) []map[string]bool {
- if ConfidentialInstanceConfig == nil {
- return nil
- }
-
- return []map[string]bool{{
- "enable_confidential_compute": ConfidentialInstanceConfig.EnableConfidentialCompute,
- }}
-}
-
-func expandAdvancedMachineFeatures(d TerraformResourceData) *compute_instance_helpers_compute.AdvancedMachineFeatures {
- if _, ok := d.GetOk("advanced_machine_features"); !ok {
- return nil
- }
-
- prefix := "advanced_machine_features.0"
- return &compute_instance_helpers_compute.AdvancedMachineFeatures{
- EnableNestedVirtualization: d.Get(prefix + ".enable_nested_virtualization").(bool),
- ThreadsPerCore: int64(d.Get(prefix + ".threads_per_core").(int)),
- }
-}
-
-func flattenAdvancedMachineFeatures(AdvancedMachineFeatures *compute_instance_helpers_compute.AdvancedMachineFeatures) []map[string]interface{} {
- if AdvancedMachineFeatures == nil {
- return nil
- }
- return []map[string]interface{}{{
- "enable_nested_virtualization": AdvancedMachineFeatures.EnableNestedVirtualization,
- "threads_per_core": AdvancedMachineFeatures.ThreadsPerCore,
- }}
-}
-
-func flattenShieldedVmConfig(shieldedVmConfig *compute_instance_helpers_compute.ShieldedInstanceConfig) []map[string]bool {
- if shieldedVmConfig == nil {
- return nil
- }
-
- return []map[string]bool{{
- "enable_secure_boot": shieldedVmConfig.EnableSecureBoot,
- "enable_vtpm": shieldedVmConfig.EnableVtpm,
- "enable_integrity_monitoring": shieldedVmConfig.EnableIntegrityMonitoring,
- }}
-}
-
-func expandDisplayDevice(d TerraformResourceData) *compute_instance_helpers_compute.DisplayDevice {
- if _, ok := d.GetOk("enable_display"); !ok {
- return nil
- }
- return &compute_instance_helpers_compute.DisplayDevice{
- EnableDisplay: d.Get("enable_display").(bool),
- ForceSendFields: []string{"EnableDisplay"},
- }
-}
-
-func flattenEnableDisplay(displayDevice *compute_instance_helpers_compute.DisplayDevice) interface{} {
- if displayDevice == nil {
- return nil
- }
-
- return displayDevice.EnableDisplay
-}
-
-func schedulingHasChangeRequiringReboot(d *compute_instance_helpers_schema.ResourceData) bool {
- o, n := d.GetChange("scheduling")
- oScheduling := o.([]interface{})[0].(map[string]interface{})
- newScheduling := n.([]interface{})[0].(map[string]interface{})
-
- return hasNodeAffinitiesChanged(oScheduling, newScheduling)
-}
-
-func schedulingHasChangeWithoutReboot(d *compute_instance_helpers_schema.ResourceData) bool {
- if !d.HasChange("scheduling") {
-
- return false
- }
- o, n := d.GetChange("scheduling")
- oScheduling := o.([]interface{})[0].(map[string]interface{})
- newScheduling := n.([]interface{})[0].(map[string]interface{})
-
- if schedulingHasChangeRequiringReboot(d) {
- return false
- }
-
- if oScheduling["automatic_restart"] != newScheduling["automatic_restart"] {
- return true
- }
-
- if oScheduling["preemptible"] != newScheduling["preemptible"] {
- return true
- }
-
- if oScheduling["on_host_maintenance"] != newScheduling["on_host_maintenance"] {
- return true
- }
-
- if oScheduling["min_node_cpus"] != newScheduling["min_node_cpus"] {
- return true
- }
-
- return false
-}
-
-func hasNodeAffinitiesChanged(oScheduling, newScheduling map[string]interface{}) bool {
- oldNAs := oScheduling["node_affinities"].(*compute_instance_helpers_schema.Set).List()
- newNAs := newScheduling["node_affinities"].(*compute_instance_helpers_schema.Set).List()
- if len(oldNAs) != len(newNAs) {
- return true
- }
- for i := range oldNAs {
- oldNodeAffinity := oldNAs[i].(map[string]interface{})
- newNodeAffinity := newNAs[i].(map[string]interface{})
- if oldNodeAffinity["key"] != newNodeAffinity["key"] {
- return true
- }
- if oldNodeAffinity["operator"] != newNodeAffinity["operator"] {
- return true
- }
-
- if !compute_instance_helpers_reflect.DeepEqual(convertStringSet(oldNodeAffinity["values"].(*compute_instance_helpers_schema.Set)), convertStringSet(newNodeAffinity["values"].(*compute_instance_helpers_schema.Set))) {
- return true
- }
- }
-
- return false
-}
-
-func expandReservationAffinity(d *compute_instance_helpers_schema.ResourceData) (*compute_instance_helpers_compute.ReservationAffinity, error) {
- _, ok := d.GetOk("reservation_affinity")
- if !ok {
- return nil, nil
- }
-
- prefix := "reservation_affinity.0"
- reservationAffinityType := d.Get(prefix + ".type").(string)
-
- affinity := compute_instance_helpers_compute.ReservationAffinity{
- ConsumeReservationType: reservationAffinityType,
- ForceSendFields: []string{"ConsumeReservationType"},
- }
-
- _, hasSpecificReservation := d.GetOk(prefix + ".specific_reservation")
- if (reservationAffinityType == "SPECIFIC_RESERVATION") != hasSpecificReservation {
- return nil, compute_instance_helpers_fmt.Errorf("specific_reservation must be set when reservation_affinity is SPECIFIC_RESERVATION, and not set otherwise")
- }
-
- prefix = prefix + ".specific_reservation.0"
- if hasSpecificReservation {
- affinity.Key = d.Get(prefix + ".key").(string)
- affinity.ForceSendFields = append(affinity.ForceSendFields, "Key", "Values")
-
- for _, v := range d.Get(prefix + ".values").([]interface{}) {
- affinity.Values = append(affinity.Values, v.(string))
- }
- }
-
- return &affinity, nil
-}
-
-func flattenReservationAffinity(affinity *compute_instance_helpers_compute.ReservationAffinity) []map[string]interface{} {
- if affinity == nil {
- return nil
- }
-
- flattened := map[string]interface{}{
- "type": affinity.ConsumeReservationType,
- }
-
- if affinity.ConsumeReservationType == "SPECIFIC_RESERVATION" {
- flattened["specific_reservation"] = []map[string]interface{}{{
- "key": affinity.Key,
- "values": affinity.Values,
- }}
- }
-
- return []map[string]interface{}{flattened}
-}
-
-func computeInstanceDeleteAccessConfigs(d *compute_instance_network_interface_helpers_schema.ResourceData, config *Config, instNetworkInterface *compute_instance_network_interface_helpers_compute.NetworkInterface, project, zone, userAgent, instanceName string) error {
-
- for _, ac := range instNetworkInterface.AccessConfigs {
- op, err := config.NewComputeClient(userAgent).Instances.DeleteAccessConfig(
- project, zone, instanceName, ac.Name, instNetworkInterface.Name).Do()
- if err != nil {
- return compute_instance_network_interface_helpers_fmt.Errorf("Error deleting old access_config: %s", err)
- }
- opErr := computeOperationWaitTime(config, op, project, "old access_config to delete", userAgent, d.Timeout(compute_instance_network_interface_helpers_schema.TimeoutUpdate))
- if opErr != nil {
- return opErr
- }
- }
- return nil
-}
-
-func computeInstanceAddAccessConfigs(d *compute_instance_network_interface_helpers_schema.ResourceData, config *Config, instNetworkInterface *compute_instance_network_interface_helpers_compute.NetworkInterface, accessConfigs []*compute_instance_network_interface_helpers_compute.AccessConfig, project, zone, userAgent, instanceName string) error {
-
- for _, ac := range accessConfigs {
- op, err := config.NewComputeClient(userAgent).Instances.AddAccessConfig(project, zone, instanceName, instNetworkInterface.Name, ac).Do()
- if err != nil {
- return compute_instance_network_interface_helpers_fmt.Errorf("Error adding new access_config: %s", err)
- }
- opErr := computeOperationWaitTime(config, op, project, "new access_config to add", userAgent, d.Timeout(compute_instance_network_interface_helpers_schema.TimeoutUpdate))
- if opErr != nil {
- return opErr
- }
- }
- return nil
-}
-
-func computeInstanceCreateUpdateWhileStoppedCall(d *compute_instance_network_interface_helpers_schema.ResourceData, config *Config, networkInterfacePatchObj *compute_instance_network_interface_helpers_compute.NetworkInterface, accessConfigs []*compute_instance_network_interface_helpers_compute.AccessConfig, accessConfigsHaveChanged bool, index int, project, zone, userAgent, instanceName string) func(inst *compute_instance_network_interface_helpers_compute.Instance) error {
-
- return func(instance *compute_instance_network_interface_helpers_compute.Instance) error {
-
- instNetworkInterface := instance.NetworkInterfaces[index]
- networkInterfacePatchObj.Fingerprint = instNetworkInterface.Fingerprint
-
- if accessConfigsHaveChanged {
- err := computeInstanceDeleteAccessConfigs(d, config, instNetworkInterface, project, zone, userAgent, instanceName)
- if err != nil {
- return err
- }
- }
-
- op, err := config.NewComputeClient(userAgent).Instances.UpdateNetworkInterface(project, zone, instanceName, instNetworkInterface.Name, networkInterfacePatchObj).Do()
- if err != nil {
- return compute_instance_network_interface_helpers_errwrap.Wrapf("Error updating network interface: {{err}}", err)
- }
- opErr := computeOperationWaitTime(config, op, project, "network interface to update", userAgent, d.Timeout(compute_instance_network_interface_helpers_schema.TimeoutUpdate))
- if opErr != nil {
- return opErr
- }
-
- if accessConfigsHaveChanged {
- err := computeInstanceAddAccessConfigs(d, config, instNetworkInterface, accessConfigs, project, zone, userAgent, instanceName)
- if err != nil {
- return err
- }
- }
- return nil
- }
-}
-
-type ComputeOperationWaiter struct {
- Service *compute_operation_compute.Service
- Op *compute_operation_compute.Operation
- Context compute_operation_context.Context
- Project string
-}
-
-func (w *ComputeOperationWaiter) State() string {
- if w == nil || w.Op == nil {
- return ""
- }
-
- return w.Op.Status
-}
-
-func (w *ComputeOperationWaiter) Error() error {
- if w != nil && w.Op != nil && w.Op.Error != nil {
- return ComputeOperationError(*w.Op.Error)
- }
- return nil
-}
-
-func (w *ComputeOperationWaiter) IsRetryable(err error) bool {
- if oe, ok := err.(ComputeOperationError); ok {
- for _, e := range oe.Errors {
- if e.Code == "RESOURCE_NOT_READY" {
- return true
- }
- }
- }
- return false
-}
-
-func (w *ComputeOperationWaiter) SetOp(op interface{}) error {
- var ok bool
- w.Op, ok = op.(*compute_operation_compute.Operation)
- if !ok {
- return compute_operation_fmt.Errorf("Unable to set operation. Bad type!")
- }
- return nil
-}
-
-func (w *ComputeOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil || w.Op == nil {
- return nil, compute_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- if w.Context != nil {
- select {
- case <-w.Context.Done():
- compute_operation_log.Println("[WARN] request has been cancelled early")
- return w.Op, compute_operation_errors.New("unable to finish polling, context has been cancelled")
- default:
-
- }
- }
- if w.Op.Zone != "" {
- zone := GetResourceNameFromSelfLink(w.Op.Zone)
- return w.Service.ZoneOperations.Get(w.Project, zone, w.Op.Name).Do()
- } else if w.Op.Region != "" {
- region := GetResourceNameFromSelfLink(w.Op.Region)
- return w.Service.RegionOperations.Get(w.Project, region, w.Op.Name).Do()
- }
- return w.Service.GlobalOperations.Get(w.Project, w.Op.Name).Do()
-}
-
-func (w *ComputeOperationWaiter) OpName() string {
- if w == nil || w.Op == nil {
- return " Compute Op"
- }
-
- return w.Op.Name
-}
-
-func (w *ComputeOperationWaiter) PendingStates() []string {
- return []string{"PENDING", "RUNNING"}
-}
-
-func (w *ComputeOperationWaiter) TargetStates() []string {
- return []string{"DONE"}
-}
-
-func computeOperationWaitTime(config *Config, res interface{}, project, activity, userAgent string, timeout compute_operation_time.Duration) error {
- op := &compute_operation_compute.Operation{}
- err := Convert(res, op)
- if err != nil {
- return err
- }
-
- w := &ComputeOperationWaiter{
- Service: config.NewComputeClient(userAgent),
- Context: config.context,
- Op: op,
- Project: project,
- }
-
- if err := w.SetOp(op); err != nil {
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type ComputeOperationError compute_operation_compute.OperationError
-
-func (e ComputeOperationError) Error() string {
- var buf compute_operation_bytes.Buffer
- for _, err := range e.Errors {
- buf.WriteString(err.Message + "\n")
- }
-
- return buf.String()
-}
-
-type providerMeta struct {
- ModuleName string `cty:"module_name"`
-}
-
-type Config struct {
- AccessToken string
- Credentials string
- ImpersonateServiceAccount string
- ImpersonateServiceAccountDelegates []string
- Project string
- Region string
- BillingProject string
- Zone string
- Scopes []string
- BatchingConfig *batchingConfig
- UserProjectOverride bool
- RequestReason string
- RequestTimeout config_time.Duration
-
- PollInterval config_time.Duration
-
- client *config_http.Client
- context config_context.Context
- userAgent string
-
- tokenSource config_oauth2.TokenSource
-
- AccessApprovalBasePath string
- AccessContextManagerBasePath string
- ActiveDirectoryBasePath string
- ApigeeBasePath string
- AppEngineBasePath string
- BigQueryBasePath string
- BigqueryDataTransferBasePath string
- BigqueryReservationBasePath string
- BigtableBasePath string
- BillingBasePath string
- BinaryAuthorizationBasePath string
- CloudAssetBasePath string
- CloudBuildBasePath string
- CloudFunctionsBasePath string
- CloudIdentityBasePath string
- CloudIotBasePath string
- CloudRunBasePath string
- CloudSchedulerBasePath string
- CloudTasksBasePath string
- ComputeBasePath string
- ContainerAnalysisBasePath string
- DataCatalogBasePath string
- DataLossPreventionBasePath string
- DataprocBasePath string
- DatastoreBasePath string
- DeploymentManagerBasePath string
- DialogflowBasePath string
- DialogflowCXBasePath string
- DNSBasePath string
- EssentialContactsBasePath string
- FilestoreBasePath string
- FirestoreBasePath string
- GameServicesBasePath string
- GKEHubBasePath string
- HealthcareBasePath string
- IapBasePath string
- IdentityPlatformBasePath string
- KMSBasePath string
- LoggingBasePath string
- MemcacheBasePath string
- MLEngineBasePath string
- MonitoringBasePath string
- NetworkManagementBasePath string
- NetworkServicesBasePath string
- NotebooksBasePath string
- OSConfigBasePath string
- OSLoginBasePath string
- PrivatecaBasePath string
- PubsubBasePath string
- PubsubLiteBasePath string
- RedisBasePath string
- ResourceManagerBasePath string
- SecretManagerBasePath string
- SecurityCenterBasePath string
- ServiceManagementBasePath string
- ServiceUsageBasePath string
- SourceRepoBasePath string
- SpannerBasePath string
- SQLBasePath string
- StorageBasePath string
- TagsBasePath string
- TPUBasePath string
- VertexAIBasePath string
- VPCAccessBasePath string
- WorkflowsBasePath string
-
- CloudBillingBasePath string
- ComposerBasePath string
- ContainerBasePath string
- DataflowBasePath string
- IamCredentialsBasePath string
- ResourceManagerV2BasePath string
- IAMBasePath string
- CloudIoTBasePath string
- ServiceNetworkingBasePath string
- StorageTransferBasePath string
- BigtableAdminBasePath string
-
- requestBatcherServiceUsage *RequestBatcher
- requestBatcherIam *RequestBatcher
-
- AssuredWorkloadsBasePath string
- CloudResourceManagerBasePath string
- EventarcBasePath string
- GkeHubBasePath string
- OrgPolicyBasePath string
-}
-
-const AccessApprovalBasePathKey = "AccessApproval"
-
-const AccessContextManagerBasePathKey = "AccessContextManager"
-
-const ActiveDirectoryBasePathKey = "ActiveDirectory"
-
-const ApigeeBasePathKey = "Apigee"
-
-const AppEngineBasePathKey = "AppEngine"
-
-const BigQueryBasePathKey = "BigQuery"
-
-const BigqueryDataTransferBasePathKey = "BigqueryDataTransfer"
-
-const BigqueryReservationBasePathKey = "BigqueryReservation"
-
-const BigtableBasePathKey = "Bigtable"
-
-const BillingBasePathKey = "Billing"
-
-const BinaryAuthorizationBasePathKey = "BinaryAuthorization"
-
-const CloudAssetBasePathKey = "CloudAsset"
-
-const CloudBuildBasePathKey = "CloudBuild"
-
-const CloudFunctionsBasePathKey = "CloudFunctions"
-
-const CloudIdentityBasePathKey = "CloudIdentity"
-
-const CloudIotBasePathKey = "CloudIot"
-
-const CloudRunBasePathKey = "CloudRun"
-
-const CloudSchedulerBasePathKey = "CloudScheduler"
-
-const CloudTasksBasePathKey = "CloudTasks"
-
-const ComputeBasePathKey = "Compute"
-
-const ContainerAnalysisBasePathKey = "ContainerAnalysis"
-
-const DataCatalogBasePathKey = "DataCatalog"
-
-const DataLossPreventionBasePathKey = "DataLossPrevention"
-
-const DataprocBasePathKey = "Dataproc"
-
-const DatastoreBasePathKey = "Datastore"
-
-const DeploymentManagerBasePathKey = "DeploymentManager"
-
-const DialogflowBasePathKey = "Dialogflow"
-
-const DialogflowCXBasePathKey = "DialogflowCX"
-
-const DNSBasePathKey = "DNS"
-
-const EssentialContactsBasePathKey = "EssentialContacts"
-
-const FilestoreBasePathKey = "Filestore"
-
-const FirestoreBasePathKey = "Firestore"
-
-const GameServicesBasePathKey = "GameServices"
-
-const GKEHubBasePathKey = "GKEHub"
-
-const HealthcareBasePathKey = "Healthcare"
-
-const IapBasePathKey = "Iap"
-
-const IdentityPlatformBasePathKey = "IdentityPlatform"
-
-const KMSBasePathKey = "KMS"
-
-const LoggingBasePathKey = "Logging"
-
-const MemcacheBasePathKey = "Memcache"
-
-const MLEngineBasePathKey = "MLEngine"
-
-const MonitoringBasePathKey = "Monitoring"
-
-const NetworkManagementBasePathKey = "NetworkManagement"
-
-const NetworkServicesBasePathKey = "NetworkServices"
-
-const NotebooksBasePathKey = "Notebooks"
-
-const OSConfigBasePathKey = "OSConfig"
-
-const OSLoginBasePathKey = "OSLogin"
-
-const PrivatecaBasePathKey = "Privateca"
-
-const PubsubBasePathKey = "Pubsub"
-
-const PubsubLiteBasePathKey = "PubsubLite"
-
-const RedisBasePathKey = "Redis"
-
-const ResourceManagerBasePathKey = "ResourceManager"
-
-const SecretManagerBasePathKey = "SecretManager"
-
-const SecurityCenterBasePathKey = "SecurityCenter"
-
-const ServiceManagementBasePathKey = "ServiceManagement"
-
-const ServiceUsageBasePathKey = "ServiceUsage"
-
-const SourceRepoBasePathKey = "SourceRepo"
-
-const SpannerBasePathKey = "Spanner"
-
-const SQLBasePathKey = "SQL"
-
-const StorageBasePathKey = "Storage"
-
-const TagsBasePathKey = "Tags"
-
-const TPUBasePathKey = "TPU"
-
-const VertexAIBasePathKey = "VertexAI"
-
-const VPCAccessBasePathKey = "VPCAccess"
-
-const WorkflowsBasePathKey = "Workflows"
-
-const CloudBillingBasePathKey = "CloudBilling"
-
-const ComposerBasePathKey = "Composer"
-
-const ContainerBasePathKey = "Container"
-
-const DataflowBasePathKey = "Dataflow"
-
-const IAMBasePathKey = "IAM"
-
-const IamCredentialsBasePathKey = "IamCredentials"
-
-const ResourceManagerV2BasePathKey = "ResourceManagerV2"
-
-const ServiceNetworkingBasePathKey = "ServiceNetworking"
-
-const StorageTransferBasePathKey = "StorageTransfer"
-
-const BigtableAdminBasePathKey = "BigtableAdmin"
-
-const GkeHubFeatureBasePathKey = "GkeHubFeatureBasePathKey"
-
-var DefaultBasePaths = map[string]string{
- AccessApprovalBasePathKey: "https://accessapproval.googleapis.com/v1/",
- AccessContextManagerBasePathKey: "https://accesscontextmanager.googleapis.com/v1/",
- ActiveDirectoryBasePathKey: "https://managedidentities.googleapis.com/v1/",
- ApigeeBasePathKey: "https://apigee.googleapis.com/v1/",
- AppEngineBasePathKey: "https://appengine.googleapis.com/v1/",
- BigQueryBasePathKey: "https://bigquery.googleapis.com/bigquery/v2/",
- BigqueryDataTransferBasePathKey: "https://bigquerydatatransfer.googleapis.com/v1/",
- BigqueryReservationBasePathKey: "https://bigqueryreservation.googleapis.com/v1/",
- BigtableBasePathKey: "https://bigtableadmin.googleapis.com/v2/",
- BillingBasePathKey: "https://billingbudgets.googleapis.com/v1/",
- BinaryAuthorizationBasePathKey: "https://binaryauthorization.googleapis.com/v1/",
- CloudAssetBasePathKey: "https://cloudasset.googleapis.com/v1/",
- CloudBuildBasePathKey: "https://cloudbuild.googleapis.com/v1/",
- CloudFunctionsBasePathKey: "https://cloudfunctions.googleapis.com/v1/",
- CloudIdentityBasePathKey: "https://cloudidentity.googleapis.com/v1/",
- CloudIotBasePathKey: "https://cloudiot.googleapis.com/v1/",
- CloudRunBasePathKey: "https://{{location}}-run.googleapis.com/",
- CloudSchedulerBasePathKey: "https://cloudscheduler.googleapis.com/v1/",
- CloudTasksBasePathKey: "https://cloudtasks.googleapis.com/v2/",
- ComputeBasePathKey: "https://compute.googleapis.com/compute/v1/",
- ContainerAnalysisBasePathKey: "https://containeranalysis.googleapis.com/v1/",
- DataCatalogBasePathKey: "https://datacatalog.googleapis.com/v1/",
- DataLossPreventionBasePathKey: "https://dlp.googleapis.com/v2/",
- DataprocBasePathKey: "https://dataproc.googleapis.com/v1/",
- DatastoreBasePathKey: "https://datastore.googleapis.com/v1/",
- DeploymentManagerBasePathKey: "https://www.googleapis.com/deploymentmanager/v2/",
- DialogflowBasePathKey: "https://dialogflow.googleapis.com/v2/",
- DialogflowCXBasePathKey: "https://dialogflow.googleapis.com/v3/",
- DNSBasePathKey: "https://dns.googleapis.com/dns/v1/",
- EssentialContactsBasePathKey: "https://essentialcontacts.googleapis.com/v1/",
- FilestoreBasePathKey: "https://file.googleapis.com/v1/",
- FirestoreBasePathKey: "https://firestore.googleapis.com/v1/",
- GameServicesBasePathKey: "https://gameservices.googleapis.com/v1/",
- GKEHubBasePathKey: "https://gkehub.googleapis.com/v1/",
- HealthcareBasePathKey: "https://healthcare.googleapis.com/v1/",
- IapBasePathKey: "https://iap.googleapis.com/v1/",
- IdentityPlatformBasePathKey: "https://identitytoolkit.googleapis.com/v2/",
- KMSBasePathKey: "https://cloudkms.googleapis.com/v1/",
- LoggingBasePathKey: "https://logging.googleapis.com/v2/",
- MemcacheBasePathKey: "https://memcache.googleapis.com/v1/",
- MLEngineBasePathKey: "https://ml.googleapis.com/v1/",
- MonitoringBasePathKey: "https://monitoring.googleapis.com/",
- NetworkManagementBasePathKey: "https://networkmanagement.googleapis.com/v1/",
- NetworkServicesBasePathKey: "https://networkservices.googleapis.com/v1/",
- NotebooksBasePathKey: "https://notebooks.googleapis.com/v1/",
- OSConfigBasePathKey: "https://osconfig.googleapis.com/v1/",
- OSLoginBasePathKey: "https://oslogin.googleapis.com/v1/",
- PrivatecaBasePathKey: "https://privateca.googleapis.com/v1/",
- PubsubBasePathKey: "https://pubsub.googleapis.com/v1/",
- PubsubLiteBasePathKey: "https://{{region}}-pubsublite.googleapis.com/v1/admin/",
- RedisBasePathKey: "https://redis.googleapis.com/v1/",
- ResourceManagerBasePathKey: "https://cloudresourcemanager.googleapis.com/v1/",
- SecretManagerBasePathKey: "https://secretmanager.googleapis.com/v1/",
- SecurityCenterBasePathKey: "https://securitycenter.googleapis.com/v1/",
- ServiceManagementBasePathKey: "https://servicemanagement.googleapis.com/v1/",
- ServiceUsageBasePathKey: "https://serviceusage.googleapis.com/v1/",
- SourceRepoBasePathKey: "https://sourcerepo.googleapis.com/v1/",
- SpannerBasePathKey: "https://spanner.googleapis.com/v1/",
- SQLBasePathKey: "https://sqladmin.googleapis.com/sql/v1beta4/",
- StorageBasePathKey: "https://storage.googleapis.com/storage/v1/",
- TagsBasePathKey: "https://cloudresourcemanager.googleapis.com/v3/",
- TPUBasePathKey: "https://tpu.googleapis.com/v1/",
- VertexAIBasePathKey: "https://{{region}}-aiplatform.googleapis.com/v1/",
- VPCAccessBasePathKey: "https://vpcaccess.googleapis.com/v1/",
- WorkflowsBasePathKey: "https://workflows.googleapis.com/v1/",
- CloudBillingBasePathKey: "https://cloudbilling.googleapis.com/v1/",
- ComposerBasePathKey: "https://composer.googleapis.com/v1/",
- ContainerBasePathKey: "https://container.googleapis.com/v1/",
- DataflowBasePathKey: "https://dataflow.googleapis.com/v1b3/",
- IAMBasePathKey: "https://iam.googleapis.com/v1/",
- IamCredentialsBasePathKey: "https://iamcredentials.googleapis.com/v1/",
- ResourceManagerV2BasePathKey: "https://cloudresourcemanager.googleapis.com/v2/",
- ServiceNetworkingBasePathKey: "https://servicenetworking.googleapis.com/v1/",
- StorageTransferBasePathKey: "https://storagetransfer.googleapis.com/v1/",
- BigtableAdminBasePathKey: "https://bigtableadmin.googleapis.com/v2/",
- GkeHubFeatureBasePathKey: "https://gkehub.googleapis.com/v1beta/",
-}
-
-var DefaultClientScopes = []string{
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/userinfo.email",
-}
-
-func (c *Config) LoadAndValidate(ctx config_context.Context) error {
- if len(c.Scopes) == 0 {
- c.Scopes = DefaultClientScopes
- }
-
- c.context = ctx
-
- tokenSource, err := c.getTokenSource(c.Scopes, false)
- if err != nil {
- return err
- }
-
- c.tokenSource = tokenSource
-
- cleanCtx := config_context.WithValue(ctx, config_oauth2.HTTPClient, config_cleanhttp.DefaultClient())
-
- client, _, err := config_transport.NewHTTPClient(cleanCtx, config_option.WithTokenSource(tokenSource))
- if err != nil {
- return err
- }
-
- err = c.logGoogleIdentities()
- if err != nil {
- return err
- }
-
- loggingTransport := config_logging.NewTransport("Google", client.Transport)
-
- retryTransport := NewTransportWithDefaultRetries(loggingTransport)
-
- headerTransport := newTransportWithHeaders(retryTransport)
- if c.RequestReason != "" {
- headerTransport.Set("X-Goog-Request-Reason", c.RequestReason)
- }
-
- if c.UserProjectOverride && c.BillingProject != "" {
- headerTransport.Set("X-Goog-User-Project", c.BillingProject)
- }
-
- client.Transport = headerTransport
-
- client.Timeout = c.synchronousTimeout()
-
- c.client = client
- c.context = ctx
- c.Region = GetRegionFromRegionSelfLink(c.Region)
- c.requestBatcherServiceUsage = NewRequestBatcher("Service Usage", ctx, c.BatchingConfig)
- c.requestBatcherIam = NewRequestBatcher("IAM", ctx, c.BatchingConfig)
- c.PollInterval = 10 * config_time.Second
-
- return nil
-}
-
-func expandProviderBatchingConfig(v interface{}) (*batchingConfig, error) {
- config := &batchingConfig{
- sendAfter: config_time.Second * defaultBatchSendIntervalSec,
- enableBatching: true,
- }
-
- if v == nil {
- return config, nil
- }
- ls := v.([]interface{})
- if len(ls) == 0 || ls[0] == nil {
- return config, nil
- }
-
- cfgV := ls[0].(map[string]interface{})
- if sendAfterV, ok := cfgV["send_after"]; ok {
- sendAfter, err := config_time.ParseDuration(sendAfterV.(string))
- if err != nil {
- return nil, config_fmt.Errorf("unable to parse duration from 'send_after' value %q", sendAfterV)
- }
- config.sendAfter = sendAfter
- }
-
- if enable, ok := cfgV["enable_batching"]; ok {
- config.enableBatching = enable.(bool)
- }
-
- return config, nil
-}
-
-func (c *Config) synchronousTimeout() config_time.Duration {
- if c.RequestTimeout == 0 {
- return 120 * config_time.Second
- }
- return c.RequestTimeout
-}
-
-func (c *Config) logGoogleIdentities() error {
- if c.ImpersonateServiceAccount == "" {
-
- tokenSource, err := c.getTokenSource(c.Scopes, true)
- if err != nil {
- return err
- }
- c.client = config_oauth2.NewClient(c.context, tokenSource)
-
- email, err := GetCurrentUserEmail(c, c.userAgent)
- if err != nil {
- config_log.Printf("[INFO] error retrieving userinfo for your provider credentials. have you enabled the 'https://www.googleapis.com/auth/userinfo.email' scope? error: %s", err)
- }
-
- config_log.Printf("[INFO] Terraform is using this identity: %s", email)
-
- return nil
-
- }
-
- tokenSource, err := c.getTokenSource(c.Scopes, true)
- if err != nil {
- return err
- }
- c.client = config_oauth2.NewClient(c.context, tokenSource)
-
- email, err := GetCurrentUserEmail(c, c.userAgent)
- if err != nil {
- config_log.Printf("[INFO] error retrieving userinfo for your provider credentials. have you enabled the 'https://www.googleapis.com/auth/userinfo.email' scope? error: %s", err)
- }
-
- config_log.Printf("[INFO] Terraform is configured with service account impersonation, original identity: %s, impersonated identity: %s", email, c.ImpersonateServiceAccount)
-
- tokenSource, err = c.getTokenSource(c.Scopes, false)
- if err != nil {
- return err
- }
- c.client = config_oauth2.NewClient(c.context, tokenSource)
-
- return nil
-}
-
-func (c *Config) getTokenSource(clientScopes []string, initialCredentialsOnly bool) (config_oauth2.TokenSource, error) {
- creds, err := c.GetCredentials(clientScopes, initialCredentialsOnly)
- if err != nil {
- return nil, config_fmt.Errorf("%s", err)
- }
- return creds.TokenSource, nil
-}
-
-func (c *Config) NewComputeClient(userAgent string) *config_compute.Service {
- config_log.Printf("[INFO] Instantiating GCE client for path %s", c.ComputeBasePath)
- clientCompute, err := config_compute.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client compute: %s", err)
- return nil
- }
- clientCompute.UserAgent = userAgent
- clientCompute.BasePath = c.ComputeBasePath
-
- return clientCompute
-}
-
-func (c *Config) NewContainerClient(userAgent string) *config_container.Service {
- containerClientBasePath := removeBasePathVersion(c.ContainerBasePath)
- config_log.Printf("[INFO] Instantiating GKE client for path %s", containerClientBasePath)
- clientContainer, err := config_container.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client container: %s", err)
- return nil
- }
- clientContainer.UserAgent = userAgent
- clientContainer.BasePath = containerClientBasePath
-
- return clientContainer
-}
-
-func (c *Config) NewDnsClient(userAgent string) *config_dns.Service {
- dnsClientBasePath := removeBasePathVersion(c.DNSBasePath)
- dnsClientBasePath = config_strings.ReplaceAll(dnsClientBasePath, "/dns/", "")
- config_log.Printf("[INFO] Instantiating Google Cloud DNS client for path %s", dnsClientBasePath)
- clientDns, err := config_dns.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client dns: %s", err)
- return nil
- }
- clientDns.UserAgent = userAgent
- clientDns.BasePath = dnsClientBasePath
-
- return clientDns
-}
-
-func (c *Config) NewKmsClientWithCtx(ctx config_context.Context, userAgent string) *config_cloudkms.Service {
- kmsClientBasePath := removeBasePathVersion(c.KMSBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud KMS client for path %s", kmsClientBasePath)
- clientKms, err := config_cloudkms.NewService(ctx, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client kms: %s", err)
- return nil
- }
- clientKms.UserAgent = userAgent
- clientKms.BasePath = kmsClientBasePath
-
- return clientKms
-}
-
-func (c *Config) NewKmsClient(userAgent string) *config_cloudkms.Service {
- return c.NewKmsClientWithCtx(c.context, userAgent)
-}
-
-func (c *Config) NewLoggingClient(userAgent string) *config_loggingcloudlogging.Service {
- loggingClientBasePath := removeBasePathVersion(c.LoggingBasePath)
- config_log.Printf("[INFO] Instantiating Google Stackdriver Logging client for path %s", loggingClientBasePath)
- clientLogging, err := config_loggingcloudlogging.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client logging: %s", err)
- return nil
- }
- clientLogging.UserAgent = userAgent
- clientLogging.BasePath = loggingClientBasePath
-
- return clientLogging
-}
-
-func (c *Config) NewStorageClient(userAgent string) *config_storage.Service {
- storageClientBasePath := c.StorageBasePath
- config_log.Printf("[INFO] Instantiating Google Storage client for path %s", storageClientBasePath)
- clientStorage, err := config_storage.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client storage: %s", err)
- return nil
- }
- clientStorage.UserAgent = userAgent
- clientStorage.BasePath = storageClientBasePath
-
- return clientStorage
-}
-
-func (c *Config) NewStorageClientWithTimeoutOverride(userAgent string, timeout config_time.Duration) *config_storage.Service {
- storageClientBasePath := c.StorageBasePath
- config_log.Printf("[INFO] Instantiating Google Storage client for path %s", storageClientBasePath)
-
- httpClient := &config_http.Client{
- Transport: c.client.Transport,
- CheckRedirect: c.client.CheckRedirect,
- Jar: c.client.Jar,
- Timeout: timeout,
- }
- clientStorage, err := config_storage.NewService(c.context, config_option.WithHTTPClient(httpClient))
- if err != nil {
- config_log.Printf("[WARN] Error creating client storage: %s", err)
- return nil
- }
- clientStorage.UserAgent = userAgent
- clientStorage.BasePath = storageClientBasePath
-
- return clientStorage
-}
-
-func (c *Config) NewSqlAdminClient(userAgent string) *config_sqladminsqladmin.Service {
- sqlClientBasePath := removeBasePathVersion(removeBasePathVersion(c.SQLBasePath))
- config_log.Printf("[INFO] Instantiating Google SqlAdmin client for path %s", sqlClientBasePath)
- clientSqlAdmin, err := config_sqladminsqladmin.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client storage: %s", err)
- return nil
- }
- clientSqlAdmin.UserAgent = userAgent
- clientSqlAdmin.BasePath = sqlClientBasePath
-
- return clientSqlAdmin
-}
-
-func (c *Config) NewPubsubClient(userAgent string) *config_pubsub.Service {
- pubsubClientBasePath := removeBasePathVersion(c.PubsubBasePath)
- config_log.Printf("[INFO] Instantiating Google Pubsub client for path %s", pubsubClientBasePath)
- wrappedPubsubClient := ClientWithAdditionalRetries(c.client, pubsubTopicProjectNotReady)
- clientPubsub, err := config_pubsub.NewService(c.context, config_option.WithHTTPClient(wrappedPubsubClient))
- if err != nil {
- config_log.Printf("[WARN] Error creating client pubsub: %s", err)
- return nil
- }
- clientPubsub.UserAgent = userAgent
- clientPubsub.BasePath = pubsubClientBasePath
-
- return clientPubsub
-}
-
-func (c *Config) NewDataflowClient(userAgent string) *config_dataflowdataflow.Service {
- dataflowClientBasePath := removeBasePathVersion(c.DataflowBasePath)
- config_log.Printf("[INFO] Instantiating Google Dataflow client for path %s", dataflowClientBasePath)
- clientDataflow, err := config_dataflowdataflow.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client dataflow: %s", err)
- return nil
- }
- clientDataflow.UserAgent = userAgent
- clientDataflow.BasePath = dataflowClientBasePath
-
- return clientDataflow
-}
-
-func (c *Config) NewResourceManagerClient(userAgent string) *config_cloudresourcemanager.Service {
- resourceManagerBasePath := removeBasePathVersion(c.ResourceManagerBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud ResourceManager client for path %s", resourceManagerBasePath)
- clientResourceManager, err := config_cloudresourcemanager.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client resource manager: %s", err)
- return nil
- }
- clientResourceManager.UserAgent = userAgent
- clientResourceManager.BasePath = resourceManagerBasePath
-
- return clientResourceManager
-}
-
-func (c *Config) NewResourceManagerV2Client(userAgent string) *config_cloudresourcemanagerresourceManagerV2.Service {
- resourceManagerV2BasePath := removeBasePathVersion(c.ResourceManagerV2BasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud ResourceManager V client for path %s", resourceManagerV2BasePath)
- clientResourceManagerV2, err := config_cloudresourcemanagerresourceManagerV2.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client resource manager v2: %s", err)
- return nil
- }
- clientResourceManagerV2.UserAgent = userAgent
- clientResourceManagerV2.BasePath = resourceManagerV2BasePath
-
- return clientResourceManagerV2
-}
-
-func (c *Config) NewIamClient(userAgent string) *config_iam.Service {
- iamClientBasePath := removeBasePathVersion(c.IAMBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud IAM client for path %s", iamClientBasePath)
- clientIAM, err := config_iam.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client iam: %s", err)
- return nil
- }
- clientIAM.UserAgent = userAgent
- clientIAM.BasePath = iamClientBasePath
-
- return clientIAM
-}
-
-func (c *Config) NewIamCredentialsClient(userAgent string) *config_iamcredentialsiamcredentials.Service {
- iamCredentialsClientBasePath := removeBasePathVersion(c.IamCredentialsBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud IAMCredentials client for path %s", iamCredentialsClientBasePath)
- clientIamCredentials, err := config_iamcredentialsiamcredentials.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client iam credentials: %s", err)
- return nil
- }
- clientIamCredentials.UserAgent = userAgent
- clientIamCredentials.BasePath = iamCredentialsClientBasePath
-
- return clientIamCredentials
-}
-
-func (c *Config) NewServiceManClient(userAgent string) *config_servicemanagement.APIService {
- serviceManagementClientBasePath := removeBasePathVersion(c.ServiceManagementBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Service Management client for path %s", serviceManagementClientBasePath)
- clientServiceMan, err := config_servicemanagement.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client service management: %s", err)
- return nil
- }
- clientServiceMan.UserAgent = userAgent
- clientServiceMan.BasePath = serviceManagementClientBasePath
-
- return clientServiceMan
-}
-
-func (c *Config) NewServiceUsageClient(userAgent string) *config_serviceusage.Service {
- serviceUsageClientBasePath := removeBasePathVersion(c.ServiceUsageBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Service Usage client for path %s", serviceUsageClientBasePath)
- clientServiceUsage, err := config_serviceusage.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client service usage: %s", err)
- return nil
- }
- clientServiceUsage.UserAgent = userAgent
- clientServiceUsage.BasePath = serviceUsageClientBasePath
-
- return clientServiceUsage
-}
-
-func (c *Config) NewBillingClient(userAgent string) *config_cloudbilling.APIService {
- cloudBillingClientBasePath := removeBasePathVersion(c.CloudBillingBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Billing client for path %s", cloudBillingClientBasePath)
- clientBilling, err := config_cloudbilling.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client billing: %s", err)
- return nil
- }
- clientBilling.UserAgent = userAgent
- clientBilling.BasePath = cloudBillingClientBasePath
-
- return clientBilling
-}
-
-func (c *Config) NewBuildClient(userAgent string) *config_cloudbuild.Service {
- cloudBuildClientBasePath := removeBasePathVersion(c.CloudBuildBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Build client for path %s", cloudBuildClientBasePath)
- clientBuild, err := config_cloudbuild.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client build: %s", err)
- return nil
- }
- clientBuild.UserAgent = userAgent
- clientBuild.BasePath = cloudBuildClientBasePath
-
- return clientBuild
-}
-
-func (c *Config) NewCloudFunctionsClient(userAgent string) *config_cloudfunctions.Service {
- cloudFunctionsClientBasePath := removeBasePathVersion(c.CloudFunctionsBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud CloudFunctions Client for path %s", cloudFunctionsClientBasePath)
- clientCloudFunctions, err := config_cloudfunctions.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client cloud functions: %s", err)
- return nil
- }
- clientCloudFunctions.UserAgent = userAgent
- clientCloudFunctions.BasePath = cloudFunctionsClientBasePath
-
- return clientCloudFunctions
-}
-
-func (c *Config) NewSourceRepoClient(userAgent string) *config_sourcerepo.Service {
- sourceRepoClientBasePath := removeBasePathVersion(c.SourceRepoBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Source Repo client for path %s", sourceRepoClientBasePath)
- clientSourceRepo, err := config_sourcerepo.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client source repo: %s", err)
- return nil
- }
- clientSourceRepo.UserAgent = userAgent
- clientSourceRepo.BasePath = sourceRepoClientBasePath
-
- return clientSourceRepo
-}
-
-func (c *Config) NewBigQueryClient(userAgent string) *config_bigquery.Service {
- bigQueryClientBasePath := c.BigQueryBasePath
- config_log.Printf("[INFO] Instantiating Google Cloud BigQuery client for path %s", bigQueryClientBasePath)
- wrappedBigQueryClient := ClientWithAdditionalRetries(c.client, iamMemberMissing)
- clientBigQuery, err := config_bigquery.NewService(c.context, config_option.WithHTTPClient(wrappedBigQueryClient))
- if err != nil {
- config_log.Printf("[WARN] Error creating client big query: %s", err)
- return nil
- }
- clientBigQuery.UserAgent = userAgent
- clientBigQuery.BasePath = bigQueryClientBasePath
-
- return clientBigQuery
-}
-
-func (c *Config) NewSpannerClient(userAgent string) *config_spanner.Service {
- spannerClientBasePath := removeBasePathVersion(c.SpannerBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Spanner client for path %s", spannerClientBasePath)
- clientSpanner, err := config_spanner.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client source repo: %s", err)
- return nil
- }
- clientSpanner.UserAgent = userAgent
- clientSpanner.BasePath = spannerClientBasePath
-
- return clientSpanner
-}
-
-func (c *Config) NewDataprocClient(userAgent string) *config_dataproc.Service {
- dataprocClientBasePath := removeBasePathVersion(c.DataprocBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Dataproc client for path %s", dataprocClientBasePath)
- clientDataproc, err := config_dataproc.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client dataproc: %s", err)
- return nil
- }
- clientDataproc.UserAgent = userAgent
- clientDataproc.BasePath = dataprocClientBasePath
-
- return clientDataproc
-}
-
-func (c *Config) NewCloudIoTClient(userAgent string) *config_cloudiot.Service {
- cloudIoTClientBasePath := removeBasePathVersion(c.CloudIoTBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud IoT Core client for path %s", cloudIoTClientBasePath)
- clientCloudIoT, err := config_cloudiot.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client cloud iot: %s", err)
- return nil
- }
- clientCloudIoT.UserAgent = userAgent
- clientCloudIoT.BasePath = cloudIoTClientBasePath
-
- return clientCloudIoT
-}
-
-func (c *Config) NewAppEngineClient(userAgent string) *config_appengineappengine.APIService {
- appEngineClientBasePath := removeBasePathVersion(c.AppEngineBasePath)
- config_log.Printf("[INFO] Instantiating App Engine client for path %s", appEngineClientBasePath)
- clientAppEngine, err := config_appengineappengine.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client appengine: %s", err)
- return nil
- }
- clientAppEngine.UserAgent = userAgent
- clientAppEngine.BasePath = appEngineClientBasePath
-
- return clientAppEngine
-}
-
-func (c *Config) NewComposerClient(userAgent string) *config_composer.Service {
- composerClientBasePath := removeBasePathVersion(c.ComposerBasePath)
- config_log.Printf("[INFO] Instantiating Cloud Composer client for path %s", composerClientBasePath)
- clientComposer, err := config_composer.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client composer: %s", err)
- return nil
- }
- clientComposer.UserAgent = userAgent
- clientComposer.BasePath = composerClientBasePath
-
- return clientComposer
-}
-
-func (c *Config) NewServiceNetworkingClient(userAgent string) *config_servicenetworking.APIService {
- serviceNetworkingClientBasePath := removeBasePathVersion(c.ServiceNetworkingBasePath)
- config_log.Printf("[INFO] Instantiating Service Networking client for path %s", serviceNetworkingClientBasePath)
- clientServiceNetworking, err := config_servicenetworking.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client service networking: %s", err)
- return nil
- }
- clientServiceNetworking.UserAgent = userAgent
- clientServiceNetworking.BasePath = serviceNetworkingClientBasePath
-
- return clientServiceNetworking
-}
-
-func (c *Config) NewStorageTransferClient(userAgent string) *config_storagetransfer.Service {
- storageTransferClientBasePath := removeBasePathVersion(c.StorageTransferBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Storage Transfer client for path %s", storageTransferClientBasePath)
- clientStorageTransfer, err := config_storagetransfer.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client storage transfer: %s", err)
- return nil
- }
- clientStorageTransfer.UserAgent = userAgent
- clientStorageTransfer.BasePath = storageTransferClientBasePath
-
- return clientStorageTransfer
-}
-
-func (c *Config) NewHealthcareClient(userAgent string) *config_healthcarehealthcare.Service {
- healthcareClientBasePath := removeBasePathVersion(c.HealthcareBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud Healthcare client for path %s", healthcareClientBasePath)
- clientHealthcare, err := config_healthcarehealthcare.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client healthcare: %s", err)
- return nil
- }
- clientHealthcare.UserAgent = userAgent
- clientHealthcare.BasePath = healthcareClientBasePath
-
- return clientHealthcare
-}
-
-func (c *Config) NewCloudIdentityClient(userAgent string) *config_cloudidentity.Service {
- cloudidentityClientBasePath := removeBasePathVersion(c.CloudIdentityBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud CloudIdentity client for path %s", cloudidentityClientBasePath)
- clientCloudIdentity, err := config_cloudidentity.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client cloud identity: %s", err)
- return nil
- }
- clientCloudIdentity.UserAgent = userAgent
- clientCloudIdentity.BasePath = cloudidentityClientBasePath
-
- return clientCloudIdentity
-}
-
-func (c *Config) BigTableClientFactory(userAgent string) *BigtableClientFactory {
- bigtableClientFactory := &BigtableClientFactory{
- UserAgent: userAgent,
- TokenSource: c.tokenSource,
- BillingProject: c.BillingProject,
- UserProjectOverride: c.UserProjectOverride,
- }
-
- return bigtableClientFactory
-}
-
-func (c *Config) NewBigTableProjectsInstancesClient(userAgent string) *config_bigtableadmin.ProjectsInstancesService {
- bigtableAdminBasePath := removeBasePathVersion(c.BigtableAdminBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud BigtableAdmin for path %s", bigtableAdminBasePath)
- clientBigtable, err := config_bigtableadmin.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client big table projects instances: %s", err)
- return nil
- }
- clientBigtable.UserAgent = userAgent
- clientBigtable.BasePath = bigtableAdminBasePath
- clientBigtableProjectsInstances := config_bigtableadmin.NewProjectsInstancesService(clientBigtable)
-
- return clientBigtableProjectsInstances
-}
-
-func (c *Config) NewBigTableProjectsInstancesTablesClient(userAgent string) *config_bigtableadmin.ProjectsInstancesTablesService {
- bigtableAdminBasePath := removeBasePathVersion(c.BigtableAdminBasePath)
- config_log.Printf("[INFO] Instantiating Google Cloud BigtableAdmin for path %s", bigtableAdminBasePath)
- clientBigtable, err := config_bigtableadmin.NewService(c.context, config_option.WithHTTPClient(c.client))
- if err != nil {
- config_log.Printf("[WARN] Error creating client projects instances tables: %s", err)
- return nil
- }
- clientBigtable.UserAgent = userAgent
- clientBigtable.BasePath = bigtableAdminBasePath
- clientBigtableProjectsInstancesTables := config_bigtableadmin.NewProjectsInstancesTablesService(clientBigtable)
-
- return clientBigtableProjectsInstancesTables
-}
-
-type staticTokenSource struct {
- config_oauth2.TokenSource
-}
-
-func (c *Config) GetCredentials(clientScopes []string, initialCredentialsOnly bool) (config_googlegoogleoauth.Credentials, error) {
- if c.AccessToken != "" {
- contents, _, err := pathOrContents(c.AccessToken)
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, config_fmt.Errorf("Error loading access token: %s", err)
- }
-
- token := &config_oauth2.Token{AccessToken: contents}
- if c.ImpersonateServiceAccount != "" && !initialCredentialsOnly {
- opts := []config_option.ClientOption{config_option.WithTokenSource(config_oauth2.StaticTokenSource(token)), config_option.ImpersonateCredentials(c.ImpersonateServiceAccount, c.ImpersonateServiceAccountDelegates...), config_option.WithScopes(clientScopes...)}
- creds, err := config_transport.Creds(config_context.TODO(), opts...)
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, err
- }
- return *creds, nil
- }
-
- config_log.Printf("[INFO] Authenticating using configured Google JSON 'access_token'...")
- config_log.Printf("[INFO] -- Scopes: %s", clientScopes)
- return config_googlegoogleoauth.Credentials{
- TokenSource: staticTokenSource{config_oauth2.StaticTokenSource(token)},
- }, nil
- }
-
- if c.Credentials != "" {
- contents, _, err := pathOrContents(c.Credentials)
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, config_fmt.Errorf("error loading credentials: %s", err)
- }
-
- if c.ImpersonateServiceAccount != "" && !initialCredentialsOnly {
- opts := []config_option.ClientOption{config_option.WithCredentialsJSON([]byte(contents)), config_option.ImpersonateCredentials(c.ImpersonateServiceAccount, c.ImpersonateServiceAccountDelegates...), config_option.WithScopes(clientScopes...)}
- creds, err := config_transport.Creds(config_context.TODO(), opts...)
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, err
- }
- return *creds, nil
- }
-
- creds, err := config_googlegoogleoauth.CredentialsFromJSON(c.context, []byte(contents), clientScopes...)
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, config_fmt.Errorf("unable to parse credentials from '%s': %s", contents, err)
- }
-
- config_log.Printf("[INFO] Authenticating using configured Google JSON 'credentials'...")
- config_log.Printf("[INFO] -- Scopes: %s", clientScopes)
- return *creds, nil
- }
-
- if c.ImpersonateServiceAccount != "" && !initialCredentialsOnly {
- opts := config_option.ImpersonateCredentials(c.ImpersonateServiceAccount, c.ImpersonateServiceAccountDelegates...)
- creds, err := config_transport.Creds(config_context.TODO(), opts, config_option.WithScopes(clientScopes...))
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, err
- }
-
- return *creds, nil
- }
-
- config_log.Printf("[INFO] Authenticating using DefaultClient...")
- config_log.Printf("[INFO] -- Scopes: %s", clientScopes)
- defaultTS, err := config_googlegoogleoauth.DefaultTokenSource(config_context.Background(), clientScopes...)
- if err != nil {
- return config_googlegoogleoauth.Credentials{}, config_fmt.Errorf("Attempted to load application default credentials since neither `credentials` nor `access_token` was set in the provider block. No credentials loaded. To use your gcloud credentials, run 'gcloud auth application-default login'. Original error: %w", err)
- }
-
- return config_googlegoogleoauth.Credentials{
- TokenSource: defaultTS,
- }, err
-}
-
-func removeBasePathVersion(url string) string {
- re := config_regexp.MustCompile(`(?Phttp[s]://.*)(?P/[^/]+?/$)`)
- return re.ReplaceAllString(url, "$1/")
-}
-
-func ConfigureBasePaths(c *Config) {
-
- c.AccessApprovalBasePath = DefaultBasePaths[AccessApprovalBasePathKey]
- c.AccessContextManagerBasePath = DefaultBasePaths[AccessContextManagerBasePathKey]
- c.ActiveDirectoryBasePath = DefaultBasePaths[ActiveDirectoryBasePathKey]
- c.ApigeeBasePath = DefaultBasePaths[ApigeeBasePathKey]
- c.AppEngineBasePath = DefaultBasePaths[AppEngineBasePathKey]
- c.BigQueryBasePath = DefaultBasePaths[BigQueryBasePathKey]
- c.BigqueryDataTransferBasePath = DefaultBasePaths[BigqueryDataTransferBasePathKey]
- c.BigqueryReservationBasePath = DefaultBasePaths[BigqueryReservationBasePathKey]
- c.BigtableBasePath = DefaultBasePaths[BigtableBasePathKey]
- c.BillingBasePath = DefaultBasePaths[BillingBasePathKey]
- c.BinaryAuthorizationBasePath = DefaultBasePaths[BinaryAuthorizationBasePathKey]
- c.CloudAssetBasePath = DefaultBasePaths[CloudAssetBasePathKey]
- c.CloudBuildBasePath = DefaultBasePaths[CloudBuildBasePathKey]
- c.CloudFunctionsBasePath = DefaultBasePaths[CloudFunctionsBasePathKey]
- c.CloudIdentityBasePath = DefaultBasePaths[CloudIdentityBasePathKey]
- c.CloudIotBasePath = DefaultBasePaths[CloudIotBasePathKey]
- c.CloudRunBasePath = DefaultBasePaths[CloudRunBasePathKey]
- c.CloudSchedulerBasePath = DefaultBasePaths[CloudSchedulerBasePathKey]
- c.CloudTasksBasePath = DefaultBasePaths[CloudTasksBasePathKey]
- c.ComputeBasePath = DefaultBasePaths[ComputeBasePathKey]
- c.ContainerAnalysisBasePath = DefaultBasePaths[ContainerAnalysisBasePathKey]
- c.DataCatalogBasePath = DefaultBasePaths[DataCatalogBasePathKey]
- c.DataLossPreventionBasePath = DefaultBasePaths[DataLossPreventionBasePathKey]
- c.DataprocBasePath = DefaultBasePaths[DataprocBasePathKey]
- c.DatastoreBasePath = DefaultBasePaths[DatastoreBasePathKey]
- c.DeploymentManagerBasePath = DefaultBasePaths[DeploymentManagerBasePathKey]
- c.DialogflowBasePath = DefaultBasePaths[DialogflowBasePathKey]
- c.DialogflowCXBasePath = DefaultBasePaths[DialogflowCXBasePathKey]
- c.DNSBasePath = DefaultBasePaths[DNSBasePathKey]
- c.EssentialContactsBasePath = DefaultBasePaths[EssentialContactsBasePathKey]
- c.FilestoreBasePath = DefaultBasePaths[FilestoreBasePathKey]
- c.FirestoreBasePath = DefaultBasePaths[FirestoreBasePathKey]
- c.GameServicesBasePath = DefaultBasePaths[GameServicesBasePathKey]
- c.GKEHubBasePath = DefaultBasePaths[GKEHubBasePathKey]
- c.HealthcareBasePath = DefaultBasePaths[HealthcareBasePathKey]
- c.IapBasePath = DefaultBasePaths[IapBasePathKey]
- c.IdentityPlatformBasePath = DefaultBasePaths[IdentityPlatformBasePathKey]
- c.KMSBasePath = DefaultBasePaths[KMSBasePathKey]
- c.LoggingBasePath = DefaultBasePaths[LoggingBasePathKey]
- c.MemcacheBasePath = DefaultBasePaths[MemcacheBasePathKey]
- c.MLEngineBasePath = DefaultBasePaths[MLEngineBasePathKey]
- c.MonitoringBasePath = DefaultBasePaths[MonitoringBasePathKey]
- c.NetworkManagementBasePath = DefaultBasePaths[NetworkManagementBasePathKey]
- c.NetworkServicesBasePath = DefaultBasePaths[NetworkServicesBasePathKey]
- c.NotebooksBasePath = DefaultBasePaths[NotebooksBasePathKey]
- c.OSConfigBasePath = DefaultBasePaths[OSConfigBasePathKey]
- c.OSLoginBasePath = DefaultBasePaths[OSLoginBasePathKey]
- c.PrivatecaBasePath = DefaultBasePaths[PrivatecaBasePathKey]
- c.PubsubBasePath = DefaultBasePaths[PubsubBasePathKey]
- c.PubsubLiteBasePath = DefaultBasePaths[PubsubLiteBasePathKey]
- c.RedisBasePath = DefaultBasePaths[RedisBasePathKey]
- c.ResourceManagerBasePath = DefaultBasePaths[ResourceManagerBasePathKey]
- c.SecretManagerBasePath = DefaultBasePaths[SecretManagerBasePathKey]
- c.SecurityCenterBasePath = DefaultBasePaths[SecurityCenterBasePathKey]
- c.ServiceManagementBasePath = DefaultBasePaths[ServiceManagementBasePathKey]
- c.ServiceUsageBasePath = DefaultBasePaths[ServiceUsageBasePathKey]
- c.SourceRepoBasePath = DefaultBasePaths[SourceRepoBasePathKey]
- c.SpannerBasePath = DefaultBasePaths[SpannerBasePathKey]
- c.SQLBasePath = DefaultBasePaths[SQLBasePathKey]
- c.StorageBasePath = DefaultBasePaths[StorageBasePathKey]
- c.TagsBasePath = DefaultBasePaths[TagsBasePathKey]
- c.TPUBasePath = DefaultBasePaths[TPUBasePathKey]
- c.VertexAIBasePath = DefaultBasePaths[VertexAIBasePathKey]
- c.VPCAccessBasePath = DefaultBasePaths[VPCAccessBasePathKey]
- c.WorkflowsBasePath = DefaultBasePaths[WorkflowsBasePathKey]
-
- c.CloudBillingBasePath = DefaultBasePaths[CloudBillingBasePathKey]
- c.ComposerBasePath = DefaultBasePaths[ComposerBasePathKey]
- c.ContainerBasePath = DefaultBasePaths[ContainerBasePathKey]
- c.DataprocBasePath = DefaultBasePaths[DataprocBasePathKey]
- c.DataflowBasePath = DefaultBasePaths[DataflowBasePathKey]
- c.IamCredentialsBasePath = DefaultBasePaths[IamCredentialsBasePathKey]
- c.ResourceManagerV2BasePath = DefaultBasePaths[ResourceManagerV2BasePathKey]
- c.IAMBasePath = DefaultBasePaths[IAMBasePathKey]
- c.ServiceNetworkingBasePath = DefaultBasePaths[ServiceNetworkingBasePathKey]
- c.BigQueryBasePath = DefaultBasePaths[BigQueryBasePathKey]
- c.StorageTransferBasePath = DefaultBasePaths[StorageTransferBasePathKey]
- c.BigtableAdminBasePath = DefaultBasePaths[BigtableAdminBasePathKey]
-}
-
-type ContainerOperationWaiter struct {
- Service *container_operation_container.Service
- Context container_operation_context.Context
- Op *container_operation_container.Operation
- Project string
- Location string
- UserProjectOverride bool
-}
-
-func (w *ContainerOperationWaiter) State() string {
- if w == nil || w.Op == nil {
- return ""
- }
- return w.Op.Status
-}
-
-func (w *ContainerOperationWaiter) Error() error {
- if w == nil || w.Op == nil {
- return nil
- }
-
- for _, pending := range w.PendingStates() {
- if w.Op.Status == pending {
- return nil
- }
- }
-
- if w.Op.StatusMessage != "" {
- return container_operation_fmt.Errorf(w.Op.StatusMessage)
- }
-
- return nil
-}
-
-func (w *ContainerOperationWaiter) IsRetryable(error) bool {
- return false
-}
-
-func (w *ContainerOperationWaiter) SetOp(op interface{}) error {
- var ok bool
- w.Op, ok = op.(*container_operation_container.Operation)
- if !ok {
- return container_operation_fmt.Errorf("Unable to set operation. Bad type!")
- }
- return nil
-}
-
-func (w *ContainerOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil || w.Op == nil {
- return nil, container_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- name := container_operation_fmt.Sprintf("projects/%s/locations/%s/operations/%s",
- w.Project, w.Location, w.Op.Name)
-
- var op *container_operation_container.Operation
- select {
- case <-w.Context.Done():
- container_operation_log.Println("[WARN] request has been cancelled early")
- return op, container_operation_errors.New("unable to finish polling, context has been cancelled")
- default:
-
- }
- err := retryTimeDuration(func() (opErr error) {
- opGetCall := w.Service.Projects.Locations.Operations.Get(name)
- if w.UserProjectOverride {
- opGetCall.Header().Add("X-Goog-User-Project", w.Project)
- }
- op, opErr = opGetCall.Do()
- return opErr
- }, DefaultRequestTimeout)
-
- return op, err
-}
-
-func (w *ContainerOperationWaiter) OpName() string {
- if w == nil || w.Op == nil {
- return ""
- }
- return w.Op.Name
-}
-
-func (w *ContainerOperationWaiter) PendingStates() []string {
- return []string{"PENDING", "RUNNING"}
-}
-
-func (w *ContainerOperationWaiter) TargetStates() []string {
- return []string{"DONE"}
-}
-
-func containerOperationWait(config *Config, op *container_operation_container.Operation, project, location, activity, userAgent string, timeout container_operation_time.Duration) error {
- w := &ContainerOperationWaiter{
- Service: config.NewContainerClient(userAgent),
- Context: config.context,
- Op: op,
- Project: project,
- Location: location,
- UserProjectOverride: config.UserProjectOverride,
- }
-
- if err := w.SetOp(op); err != nil {
- return err
- }
-
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func Convert(item, out interface{}) error {
- bytes, err := convert_json.Marshal(item)
- if err != nil {
- return err
- }
-
- err = convert_json.Unmarshal(bytes, out)
- if err != nil {
- return err
- }
-
- if _, ok := item.(map[string]interface{}); !ok {
- setOmittedFields(item, out)
- }
-
- return nil
-}
-
-func ConvertToMap(item interface{}) (map[string]interface{}, error) {
- out := make(map[string]interface{})
- bytes, err := convert_json.Marshal(item)
- if err != nil {
- return nil, err
- }
-
- err = convert_json.Unmarshal(bytes, &out)
- if err != nil {
- return nil, err
- }
-
- return out, nil
-}
-
-func setOmittedFields(item, out interface{}) {
-
- iVal := convert_reflect.ValueOf(item).Elem()
- oVal := convert_reflect.ValueOf(out).Elem()
-
- for i := 0; i < iVal.NumField(); i++ {
- iField := iVal.Field(i)
- if isEmptyValue(iField) {
- continue
- }
-
- fieldInfo := iVal.Type().Field(i)
- oField := oVal.FieldByName(fieldInfo.Name)
-
- if !oField.IsValid() {
- continue
- }
-
- if fieldInfo.Tag.Get("json") == "-" {
- oField.Set(iField)
- }
-
- if iField.Kind() == convert_reflect.Struct {
- setOmittedFields(iField.Addr().Interface(), oField.Addr().Interface())
- }
- if iField.Kind() == convert_reflect.Ptr && iField.Type().Elem().Kind() == convert_reflect.Struct {
- setOmittedFields(iField.Interface(), oField.Interface())
- }
- if iField.Kind() == convert_reflect.Slice && iField.Type().Elem().Kind() == convert_reflect.Struct {
- for j := 0; j < iField.Len(); j++ {
- setOmittedFields(iField.Index(j).Addr().Interface(), oField.Index(j).Addr().Interface())
- }
- }
- if iField.Kind() == convert_reflect.Slice && iField.Type().Elem().Kind() == convert_reflect.Ptr &&
- iField.Type().Elem().Elem().Kind() == convert_reflect.Struct {
- for j := 0; j < iField.Len(); j++ {
- setOmittedFields(iField.Index(j).Interface(), oField.Index(j).Interface())
- }
- }
- }
-}
-
-func dataSourceGameServicesGameServerDeploymentRollout() *data_google_game_services_game_server_deployment_rollout_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceGameServicesGameServerDeploymentRollout().Schema)
- addRequiredFieldsToSchema(dsSchema, "deployment_id")
-
- return &data_google_game_services_game_server_deployment_rollout_schema.Resource{
- Read: dataSourceGameServicesGameServerDeploymentRolloutRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGameServicesGameServerDeploymentRolloutRead(d *data_google_game_services_game_server_deployment_rollout_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- id, err := replaceVars(d, config, "projects/{{project}}/locations/global/gameServerDeployments/{{deployment_id}}/rollout")
- if err != nil {
- return data_google_game_services_game_server_deployment_rollout_fmt.Errorf("Error constructing id: %s", err)
- }
-
- d.SetId(id)
-
- return resourceGameServicesGameServerDeploymentRolloutRead(d, meta)
-}
-
-func dataSourceGoogleCloudIdentityGroupMemberships() *data_source_cloud_identity_group_memberships_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceCloudIdentityGroupMembership().Schema)
-
- return &data_source_cloud_identity_group_memberships_schema.Resource{
- Read: dataSourceGoogleCloudIdentityGroupMembershipsRead,
-
- Schema: map[string]*data_source_cloud_identity_group_memberships_schema.Schema{
- "memberships": {
- Type: data_source_cloud_identity_group_memberships_schema.TypeList,
- Computed: true,
- Description: `List of Cloud Identity group memberships.`,
- Elem: &data_source_cloud_identity_group_memberships_schema.Resource{
- Schema: dsSchema,
- },
- },
- "group": {
- Type: data_source_cloud_identity_group_memberships_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- Description: `The name of the Group to get memberships from.`,
- },
- },
- }
-}
-
-func dataSourceGoogleCloudIdentityGroupMembershipsRead(d *data_source_cloud_identity_group_memberships_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- result := []map[string]interface{}{}
- membershipsCall := config.NewCloudIdentityClient(userAgent).Groups.Memberships.List(d.Get("group").(string)).View("FULL")
- if config.UserProjectOverride {
- billingProject := ""
-
- if project, err := getProject(d, config); err == nil {
- billingProject = project
- }
-
- if bp, err := getBillingProject(d, config); err == nil {
- billingProject = bp
- }
-
- if billingProject != "" {
- membershipsCall.Header().Set("X-Goog-User-Project", billingProject)
- }
- }
-
- err = membershipsCall.Pages(config.context, func(resp *data_source_cloud_identity_group_memberships_cloudidentity.ListMembershipsResponse) error {
- for _, member := range resp.Memberships {
- result = append(result, map[string]interface{}{
- "name": member.Name,
- "roles": flattenCloudIdentityGroupMembershipsRoles(member.Roles),
- "preferred_member_key": flattenCloudIdentityGroupsEntityKey(member.PreferredMemberKey),
- })
- }
-
- return nil
- })
- if err != nil {
- return handleNotFoundError(err, d, data_source_cloud_identity_group_memberships_fmt.Sprintf("CloudIdentityGroupMemberships %q", d.Id()))
- }
-
- if err := d.Set("memberships", result); err != nil {
- return data_source_cloud_identity_group_memberships_fmt.Errorf("Error setting memberships: %s", err)
- }
- d.SetId(data_source_cloud_identity_group_memberships_time.Now().UTC().String())
- return nil
-}
-
-func flattenCloudIdentityGroupMembershipsRoles(roles []*data_source_cloud_identity_group_memberships_cloudidentity.MembershipRole) []interface{} {
- transformed := []interface{}{}
-
- for _, role := range roles {
- transformed = append(transformed, map[string]interface{}{
- "name": role.Name,
- })
- }
- return transformed
-}
-
-func dataSourceGoogleCloudIdentityGroups() *data_source_cloud_identity_groups_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceCloudIdentityGroup().Schema)
-
- return &data_source_cloud_identity_groups_schema.Resource{
- Read: dataSourceGoogleCloudIdentityGroupsRead,
-
- Schema: map[string]*data_source_cloud_identity_groups_schema.Schema{
- "groups": {
- Type: data_source_cloud_identity_groups_schema.TypeList,
- Computed: true,
- Description: `List of Cloud Identity groups.`,
- Elem: &data_source_cloud_identity_groups_schema.Resource{
- Schema: dsSchema,
- },
- },
- "parent": {
- Type: data_source_cloud_identity_groups_schema.TypeString,
- Required: true,
- ForceNew: true,
- Description: `The resource name of the entity under which this Group resides in the
-Cloud Identity resource hierarchy.
-
-Must be of the form identitysources/{identity_source_id} for external-identity-mapped
-groups or customers/{customer_id} for Google Groups.`,
- },
- },
- }
-}
-
-func dataSourceGoogleCloudIdentityGroupsRead(d *data_source_cloud_identity_groups_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- result := []map[string]interface{}{}
- groupsCall := config.NewCloudIdentityClient(userAgent).Groups.List().Parent(d.Get("parent").(string)).View("FULL")
- if config.UserProjectOverride {
- billingProject := ""
-
- if project, err := getProject(d, config); err == nil {
- billingProject = project
- }
-
- if bp, err := getBillingProject(d, config); err == nil {
- billingProject = bp
- }
-
- if billingProject != "" {
- groupsCall.Header().Set("X-Goog-User-Project", billingProject)
- }
- }
- err = groupsCall.Pages(config.context, func(resp *data_source_cloud_identity_groups_cloudidentity.ListGroupsResponse) error {
- for _, group := range resp.Groups {
- result = append(result, map[string]interface{}{
- "name": group.Name,
- "display_name": group.DisplayName,
- "labels": group.Labels,
- "description": group.Description,
- "group_key": flattenCloudIdentityGroupsEntityKey(group.GroupKey),
- })
- }
-
- return nil
- })
- if err != nil {
- return handleNotFoundError(err, d, data_source_cloud_identity_groups_fmt.Sprintf("CloudIdentityGroups %q", d.Id()))
- }
-
- if err := d.Set("groups", result); err != nil {
- return data_source_cloud_identity_groups_fmt.Errorf("Error setting groups: %s", err)
- }
- d.SetId(data_source_cloud_identity_groups_time.Now().UTC().String())
- return nil
-}
-
-func flattenCloudIdentityGroupsEntityKey(entityKey *data_source_cloud_identity_groups_cloudidentity.EntityKey) []interface{} {
- transformed := map[string]interface{}{
- "id": entityKey.Id,
- "namespace": entityKey.Namespace,
- }
- return []interface{}{transformed}
-}
-
-func dataSourceGoogleCloudRunLocations() *data_source_cloud_run_locations_schema.Resource {
- return &data_source_cloud_run_locations_schema.Resource{
- Read: dataSourceGoogleCloudRunLocationsRead,
- Schema: map[string]*data_source_cloud_run_locations_schema.Schema{
- "project": {
- Type: data_source_cloud_run_locations_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "locations": {
- Type: data_source_cloud_run_locations_schema.TypeList,
- Computed: true,
- Elem: &data_source_cloud_run_locations_schema.Schema{Type: data_source_cloud_run_locations_schema.TypeString},
- },
- },
- }
-}
-
-func dataSourceGoogleCloudRunLocationsRead(d *data_source_cloud_run_locations_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- url, err := replaceVars(d, config, "https://run.googleapis.com/v1/projects/{{project}}/locations")
- if err != nil {
- return err
- }
-
- res, err := sendRequest(config, "GET", project, url, userAgent, nil)
- if err != nil {
- return data_source_cloud_run_locations_fmt.Errorf("Error listing Cloud Run Locations : %s", err)
- }
-
- locationsRaw := flattenCloudRunLocations(res)
-
- locations := make([]string, len(locationsRaw))
- for i, loc := range locationsRaw {
- locations[i] = loc.(string)
- }
- data_source_cloud_run_locations_sort.Strings(locations)
-
- data_source_cloud_run_locations_log.Printf("[DEBUG] Received Google Cloud Run Locations: %q", locations)
-
- if err := d.Set("project", project); err != nil {
- return data_source_cloud_run_locations_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("locations", locations); err != nil {
- return data_source_cloud_run_locations_fmt.Errorf("Error setting location: %s", err)
- }
-
- d.SetId(data_source_cloud_run_locations_fmt.Sprintf("projects/%s", project))
-
- return nil
-}
-
-func flattenCloudRunLocations(resp map[string]interface{}) []interface{} {
- regionList := resp["locations"].([]interface{})
- regions := make([]interface{}, len(regionList))
- for i, v := range regionList {
- regionObj := v.(map[string]interface{})
- regions[i] = regionObj["locationId"]
- }
- return regions
-}
-
-func dataSourceGoogleCloudRunService() *data_source_cloud_run_service_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceCloudRunService().Schema)
- addRequiredFieldsToSchema(dsSchema, "name", "location")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_cloud_run_service_schema.Resource{
- Read: dataSourceGoogleCloudRunServiceRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleCloudRunServiceRead(d *data_source_cloud_run_service_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- id, err := replaceVars(d, config, "locations/{{location}}/namespaces/{{project}}/services/{{name}}")
- if err != nil {
- return data_source_cloud_run_service_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
- return resourceCloudRunServiceRead(d, meta)
-}
-
-func dataSourceGoogleComputeHealthCheck() *data_source_compute_health_check_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeHealthCheck().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_compute_health_check_schema.Resource{
- Read: dataSourceGoogleComputeHealthCheckRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComputeHealthCheckRead(d *data_source_compute_health_check_schema.ResourceData, meta interface{}) error {
- id, err := replaceVars(d, meta.(*Config), "projects/{{project}}/global/healthChecks/{{name}}")
- if err != nil {
- return err
- }
- d.SetId(id)
-
- return resourceComputeHealthCheckRead(d, meta)
-}
-
-func dataSourceGoogleComputeLbIpRanges() *data_source_compute_lb_ip_ranges_schema.Resource {
- return &data_source_compute_lb_ip_ranges_schema.Resource{
- Read: dataSourceGoogleComputeLbIpRangesRead,
-
- Schema: map[string]*data_source_compute_lb_ip_ranges_schema.Schema{
- "network": {
- Type: data_source_compute_lb_ip_ranges_schema.TypeList,
- Elem: &data_source_compute_lb_ip_ranges_schema.Schema{Type: data_source_compute_lb_ip_ranges_schema.TypeString},
- Computed: true,
- },
- "http_ssl_tcp_internal": {
- Type: data_source_compute_lb_ip_ranges_schema.TypeList,
- Elem: &data_source_compute_lb_ip_ranges_schema.Schema{Type: data_source_compute_lb_ip_ranges_schema.TypeString},
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeLbIpRangesRead(d *data_source_compute_lb_ip_ranges_schema.ResourceData, meta interface{}) error {
- d.SetId("compute-lb-ip-ranges")
-
- networkIpRanges := []string{
- "209.85.152.0/22",
- "209.85.204.0/22",
- "35.191.0.0/16",
- }
- if err := d.Set("network", networkIpRanges); err != nil {
- return data_source_compute_lb_ip_ranges_fmt.Errorf("Error setting network: %s", err)
- }
-
- httpSslTcpInternalRanges := []string{
- "130.211.0.0/22",
- "35.191.0.0/16",
- }
- if err := d.Set("http_ssl_tcp_internal", httpSslTcpInternalRanges); err != nil {
- return data_source_compute_lb_ip_ranges_fmt.Errorf("Error setting http_ssl_tcp_internal: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleComputeNetworkEndpointGroup() *data_source_compute_network_endpoint_group_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeNetworkEndpointGroup().Schema)
-
- addOptionalFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "zone")
- addOptionalFieldsToSchema(dsSchema, "project")
- addOptionalFieldsToSchema(dsSchema, "self_link")
-
- return &data_source_compute_network_endpoint_group_schema.Resource{
- Read: dataSourceComputeNetworkEndpointGroupRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceComputeNetworkEndpointGroupRead(d *data_source_compute_network_endpoint_group_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- if name, ok := d.GetOk("name"); ok {
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- zone, err := getZone(d, config)
- if err != nil {
- return err
- }
- d.SetId(data_source_compute_network_endpoint_group_fmt.Sprintf("projects/%s/zones/%s/networkEndpointGroups/%s", project, zone, name.(string)))
- } else if selfLink, ok := d.GetOk("self_link"); ok {
- parsed, err := ParseNetworkEndpointGroupFieldValue(selfLink.(string), d, config)
- if err != nil {
- return err
- }
- if err := d.Set("name", parsed.Name); err != nil {
- return data_source_compute_network_endpoint_group_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("zone", parsed.Zone); err != nil {
- return data_source_compute_network_endpoint_group_fmt.Errorf("Error setting zone: %s", err)
- }
- if err := d.Set("project", parsed.Project); err != nil {
- return data_source_compute_network_endpoint_group_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_compute_network_endpoint_group_fmt.Sprintf("projects/%s/zones/%s/networkEndpointGroups/%s", parsed.Project, parsed.Zone, parsed.Name))
- } else {
- return data_source_compute_network_endpoint_group_errors.New("Must provide either `self_link` or `zone/name`")
- }
-
- return resourceComputeNetworkEndpointGroupRead(d, meta)
-}
-
-func dataSourceGoogleContainerImage() *data_source_container_registry_image_schema.Resource {
- return &data_source_container_registry_image_schema.Resource{
- Read: containerRegistryImageRead,
- Schema: map[string]*data_source_container_registry_image_schema.Schema{
- "name": {
- Type: data_source_container_registry_image_schema.TypeString,
- Required: true,
- },
- "tag": {
- Type: data_source_container_registry_image_schema.TypeString,
- Optional: true,
- },
- "digest": {
- Type: data_source_container_registry_image_schema.TypeString,
- Optional: true,
- },
- "region": {
- Type: data_source_container_registry_image_schema.TypeString,
- Optional: true,
- },
- "project": {
- Type: data_source_container_registry_image_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "image_url": {
- Type: data_source_container_registry_image_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func containerRegistryImageRead(d *data_source_container_registry_image_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- if err := d.Set("project", project); err != nil {
- return data_source_container_registry_image_fmt.Errorf("Error setting project: %s", err)
- }
- region, ok := d.GetOk("region")
- var url_base string
- escapedProject := data_source_container_registry_image_strings.Replace(project, ":", "/", -1)
- if ok && region != nil && region != "" {
- url_base = data_source_container_registry_image_fmt.Sprintf("%s.gcr.io/%s", region, escapedProject)
- } else {
- url_base = data_source_container_registry_image_fmt.Sprintf("gcr.io/%s", escapedProject)
- }
- tag, t_ok := d.GetOk("tag")
- digest, d_ok := d.GetOk("digest")
- if t_ok && tag != nil && tag != "" {
- if err := d.Set("image_url", data_source_container_registry_image_fmt.Sprintf("%s/%s:%s", url_base, d.Get("name").(string), tag)); err != nil {
- return data_source_container_registry_image_fmt.Errorf("Error setting image_url: %s", err)
- }
- } else if d_ok && digest != nil && digest != "" {
- if err := d.Set("image_url", data_source_container_registry_image_fmt.Sprintf("%s/%s@%s", url_base, d.Get("name").(string), digest)); err != nil {
- return data_source_container_registry_image_fmt.Errorf("Error setting image_url: %s", err)
- }
- } else {
- if err := d.Set("image_url", data_source_container_registry_image_fmt.Sprintf("%s/%s", url_base, d.Get("name").(string))); err != nil {
- return data_source_container_registry_image_fmt.Errorf("Error setting image_url: %s", err)
- }
- }
- d.SetId(d.Get("image_url").(string))
- return nil
-}
-
-func dataSourceGoogleContainerRepo() *data_source_container_registry_repository_schema.Resource {
- return &data_source_container_registry_repository_schema.Resource{
- Read: containerRegistryRepoRead,
- Schema: map[string]*data_source_container_registry_repository_schema.Schema{
- "region": {
- Type: data_source_container_registry_repository_schema.TypeString,
- Optional: true,
- },
- "project": {
- Type: data_source_container_registry_repository_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "repository_url": {
- Type: data_source_container_registry_repository_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func containerRegistryRepoRead(d *data_source_container_registry_repository_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- if err := d.Set("project", project); err != nil {
- return data_source_container_registry_repository_fmt.Errorf("Error setting project: %s", err)
- }
- region, ok := d.GetOk("region")
- escapedProject := data_source_container_registry_repository_strings.Replace(project, ":", "/", -1)
- if ok && region != nil && region != "" {
- if err := d.Set("repository_url", data_source_container_registry_repository_fmt.Sprintf("%s.gcr.io/%s", region, escapedProject)); err != nil {
- return data_source_container_registry_repository_fmt.Errorf("Error setting repository_url: %s", err)
- }
- } else {
- if err := d.Set("repository_url", data_source_container_registry_repository_fmt.Sprintf("gcr.io/%s", escapedProject)); err != nil {
- return data_source_container_registry_repository_fmt.Errorf("Error setting repository_url: %s", err)
- }
- }
- d.SetId(d.Get("repository_url").(string))
- return nil
-}
-
-var dnssecAlgoNums = map[string]int{
- "rsasha1": 5,
- "rsasha256": 8,
- "rsasha512": 10,
- "ecdsap256sha256": 13,
- "ecdsap384sha384": 14,
-}
-
-var dnssecDigestType = map[string]int{
- "sha1": 1,
- "sha256": 2,
- "sha384": 4,
-}
-
-func dataSourceDNSKeys() *data_source_dns_keys_schema.Resource {
- return &data_source_dns_keys_schema.Resource{
- Read: dataSourceDNSKeysRead,
-
- Schema: map[string]*data_source_dns_keys_schema.Schema{
- "managed_zone": {
- Type: data_source_dns_keys_schema.TypeString,
- Required: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
- "project": {
- Type: data_source_dns_keys_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
- "key_signing_keys": {
- Type: data_source_dns_keys_schema.TypeList,
- Computed: true,
- Elem: kskResource(),
- },
- "zone_signing_keys": {
- Type: data_source_dns_keys_schema.TypeList,
- Computed: true,
- Elem: dnsKeyResource(),
- },
- },
- }
-}
-
-func dnsKeyResource() *data_source_dns_keys_schema.Resource {
- return &data_source_dns_keys_schema.Resource{
- Schema: map[string]*data_source_dns_keys_schema.Schema{
- "algorithm": {
- Type: data_source_dns_keys_schema.TypeString,
- Computed: true,
- },
- "creation_time": {
- Type: data_source_dns_keys_schema.TypeString,
- Computed: true,
- },
- "description": {
- Type: data_source_dns_keys_schema.TypeString,
- Computed: true,
- },
- "digests": {
- Type: data_source_dns_keys_schema.TypeList,
- Computed: true,
- Elem: &data_source_dns_keys_schema.Resource{
- Schema: map[string]*data_source_dns_keys_schema.Schema{
- "digest": {
- Type: data_source_dns_keys_schema.TypeString,
- Optional: true,
- },
- "type": {
- Type: data_source_dns_keys_schema.TypeString,
- Optional: true,
- },
- },
- },
- },
- "id": {
- Type: data_source_dns_keys_schema.TypeString,
- Computed: true,
- },
- "is_active": {
- Type: data_source_dns_keys_schema.TypeBool,
- Computed: true,
- },
- "key_length": {
- Type: data_source_dns_keys_schema.TypeInt,
- Computed: true,
- },
- "key_tag": {
- Type: data_source_dns_keys_schema.TypeInt,
- Computed: true,
- },
- "public_key": {
- Type: data_source_dns_keys_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func kskResource() *data_source_dns_keys_schema.Resource {
- resource := dnsKeyResource()
-
- resource.Schema["ds_record"] = &data_source_dns_keys_schema.Schema{
- Type: data_source_dns_keys_schema.TypeString,
- Computed: true,
- }
-
- return resource
-}
-
-func generateDSRecord(signingKey *data_source_dns_keys_dns.DnsKey) (string, error) {
- algoNum, found := dnssecAlgoNums[signingKey.Algorithm]
- if !found {
- return "", data_source_dns_keys_fmt.Errorf("DNSSEC Algorithm number for %s not found", signingKey.Algorithm)
- }
-
- digestType, found := dnssecDigestType[signingKey.Digests[0].Type]
- if !found {
- return "", data_source_dns_keys_fmt.Errorf("DNSSEC Digest type for %s not found", signingKey.Digests[0].Type)
- }
-
- return data_source_dns_keys_fmt.Sprintf("%d %d %d %s",
- signingKey.KeyTag,
- algoNum,
- digestType,
- signingKey.Digests[0].Digest), nil
-}
-
-func flattenSigningKeys(signingKeys []*data_source_dns_keys_dns.DnsKey, keyType string) []map[string]interface{} {
- var keys []map[string]interface{}
-
- for _, signingKey := range signingKeys {
- if signingKey != nil && signingKey.Type == keyType {
- data := map[string]interface{}{
- "algorithm": signingKey.Algorithm,
- "creation_time": signingKey.CreationTime,
- "description": signingKey.Description,
- "digests": flattenDigests(signingKey.Digests),
- "id": signingKey.Id,
- "is_active": signingKey.IsActive,
- "key_length": signingKey.KeyLength,
- "key_tag": signingKey.KeyTag,
- "public_key": signingKey.PublicKey,
- }
-
- if signingKey.Type == "keySigning" && len(signingKey.Digests) > 0 {
- dsRecord, err := generateDSRecord(signingKey)
- if err == nil {
- data["ds_record"] = dsRecord
- }
- }
-
- keys = append(keys, data)
- }
- }
-
- return keys
-}
-
-func flattenDigests(dnsKeyDigests []*data_source_dns_keys_dns.DnsKeyDigest) []map[string]interface{} {
- var digests []map[string]interface{}
-
- for _, dnsKeyDigest := range dnsKeyDigests {
- if dnsKeyDigest != nil {
- data := map[string]interface{}{
- "digest": dnsKeyDigest.Digest,
- "type": dnsKeyDigest.Type,
- }
-
- digests = append(digests, data)
- }
- }
-
- return digests
-}
-
-func dataSourceDNSKeysRead(d *data_source_dns_keys_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- fv, err := parseProjectFieldValue("managedZones", d.Get("managed_zone").(string), "project", d, config, false)
- if err != nil {
- return err
- }
- project := fv.Project
- managedZone := fv.Name
-
- if err := d.Set("project", project); err != nil {
- return data_source_dns_keys_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_dns_keys_fmt.Sprintf("projects/%s/managedZones/%s", project, managedZone))
-
- data_source_dns_keys_log.Printf("[DEBUG] Fetching DNS keys from managed zone %s", managedZone)
-
- response, err := config.NewDnsClient(userAgent).DnsKeys.List(project, managedZone).Do()
- if err != nil && !isGoogleApiErrorWithCode(err, 404) {
- return data_source_dns_keys_fmt.Errorf("error retrieving DNS keys: %s", err)
- } else if isGoogleApiErrorWithCode(err, 404) {
- return nil
- }
-
- data_source_dns_keys_log.Printf("[DEBUG] Fetched DNS keys from managed zone %s", managedZone)
-
- if err := d.Set("key_signing_keys", flattenSigningKeys(response.DnsKeys, "keySigning")); err != nil {
- return data_source_dns_keys_fmt.Errorf("Error setting key_signing_keys: %s", err)
- }
- if err := d.Set("zone_signing_keys", flattenSigningKeys(response.DnsKeys, "zoneSigning")); err != nil {
- return data_source_dns_keys_fmt.Errorf("Error setting zone_signing_keys: %s", err)
- }
-
- return nil
-}
-
-func dataSourceDnsManagedZone() *data_source_dns_managed_zone_schema.Resource {
- return &data_source_dns_managed_zone_schema.Resource{
- Read: dataSourceDnsManagedZoneRead,
-
- Schema: map[string]*data_source_dns_managed_zone_schema.Schema{
- "dns_name": {
- Type: data_source_dns_managed_zone_schema.TypeString,
- Computed: true,
- },
-
- "name": {
- Type: data_source_dns_managed_zone_schema.TypeString,
- Required: true,
- },
-
- "description": {
- Type: data_source_dns_managed_zone_schema.TypeString,
- Computed: true,
- },
-
- "name_servers": {
- Type: data_source_dns_managed_zone_schema.TypeList,
- Computed: true,
- Elem: &data_source_dns_managed_zone_schema.Schema{
- Type: data_source_dns_managed_zone_schema.TypeString,
- },
- },
-
- "visibility": {
- Type: data_source_dns_managed_zone_schema.TypeString,
- Computed: true,
- },
-
- "project": {
- Type: data_source_dns_managed_zone_schema.TypeString,
- Optional: true,
- },
- },
- }
-}
-
-func dataSourceDnsManagedZoneRead(d *data_source_dns_managed_zone_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- name := d.Get("name").(string)
- d.SetId(data_source_dns_managed_zone_fmt.Sprintf("projects/%s/managedZones/%s", project, name))
-
- zone, err := config.NewDnsClient(userAgent).ManagedZones.Get(
- project, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_dns_managed_zone_fmt.Sprintf("dataSourceDnsManagedZone %q", name))
- }
-
- if err := d.Set("name_servers", zone.NameServers); err != nil {
- return data_source_dns_managed_zone_fmt.Errorf("Error setting name_servers: %s", err)
- }
- if err := d.Set("name", zone.Name); err != nil {
- return data_source_dns_managed_zone_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("dns_name", zone.DnsName); err != nil {
- return data_source_dns_managed_zone_fmt.Errorf("Error setting dns_name: %s", err)
- }
- if err := d.Set("description", zone.Description); err != nil {
- return data_source_dns_managed_zone_fmt.Errorf("Error setting description: %s", err)
- }
- if err := d.Set("visibility", zone.Visibility); err != nil {
- return data_source_dns_managed_zone_fmt.Errorf("Error setting visibility: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_dns_managed_zone_fmt.Errorf("Error setting project: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleActiveFolder() *data_source_google_active_folder_schema.Resource {
- return &data_source_google_active_folder_schema.Resource{
- Read: dataSourceGoogleActiveFolderRead,
-
- Schema: map[string]*data_source_google_active_folder_schema.Schema{
- "parent": {
- Type: data_source_google_active_folder_schema.TypeString,
- Required: true,
- },
- "display_name": {
- Type: data_source_google_active_folder_schema.TypeString,
- Required: true,
- },
- "name": {
- Type: data_source_google_active_folder_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleActiveFolderRead(d *data_source_google_active_folder_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- parent := d.Get("parent").(string)
- displayName := d.Get("display_name").(string)
-
- queryString := data_source_google_active_folder_fmt.Sprintf("lifecycleState=ACTIVE AND parent=%s AND displayName=\"%s\"", parent, displayName)
- searchRequest := &data_source_google_active_folder_cloudresourcemanagerresourceManagerV2.SearchFoldersRequest{
- Query: queryString,
- }
- searchResponse, err := config.NewResourceManagerV2Client(userAgent).Folders.Search(searchRequest).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_active_folder_fmt.Sprintf("Folder Not Found : %s", displayName))
- }
-
- for _, folder := range searchResponse.Folders {
- if folder.DisplayName == displayName {
- d.SetId(folder.Name)
- if err := d.Set("name", folder.Name); err != nil {
- return data_source_google_active_folder_fmt.Errorf("Error setting folder name: %s", err)
- }
- return nil
- }
- }
- return data_source_google_active_folder_fmt.Errorf("Folder not found")
-}
-
-func dataSourceGoogleAppEngineDefaultServiceAccount() *data_source_google_app_engine_default_service_account_schema.Resource {
- return &data_source_google_app_engine_default_service_account_schema.Resource{
- Read: dataSourceGoogleAppEngineDefaultServiceAccountRead,
- Schema: map[string]*data_source_google_app_engine_default_service_account_schema.Schema{
- "project": {
- Type: data_source_google_app_engine_default_service_account_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "email": {
- Type: data_source_google_app_engine_default_service_account_schema.TypeString,
- Computed: true,
- },
- "unique_id": {
- Type: data_source_google_app_engine_default_service_account_schema.TypeString,
- Computed: true,
- },
- "name": {
- Type: data_source_google_app_engine_default_service_account_schema.TypeString,
- Computed: true,
- },
- "display_name": {
- Type: data_source_google_app_engine_default_service_account_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleAppEngineDefaultServiceAccountRead(d *data_source_google_app_engine_default_service_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- serviceAccountEmail := data_source_google_app_engine_default_service_account_fmt.Sprintf("%s@appspot.gserviceaccount.com", project)
-
- serviceAccountName, err := serviceAccountFQN(serviceAccountEmail, d, config)
- if err != nil {
- return err
- }
-
- sa, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Get(serviceAccountName).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_app_engine_default_service_account_fmt.Sprintf("Service Account %q", serviceAccountName))
- }
-
- d.SetId(sa.Name)
- if err := d.Set("email", sa.Email); err != nil {
- return data_source_google_app_engine_default_service_account_fmt.Errorf("Error setting email: %s", err)
- }
- if err := d.Set("unique_id", sa.UniqueId); err != nil {
- return data_source_google_app_engine_default_service_account_fmt.Errorf("Error setting unique_id: %s", err)
- }
- if err := d.Set("project", sa.ProjectId); err != nil {
- return data_source_google_app_engine_default_service_account_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("name", sa.Name); err != nil {
- return data_source_google_app_engine_default_service_account_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("display_name", sa.DisplayName); err != nil {
- return data_source_google_app_engine_default_service_account_fmt.Errorf("Error setting display_name: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleBigqueryDefaultServiceAccount() *data_source_google_bigquery_default_service_account_schema.Resource {
- return &data_source_google_bigquery_default_service_account_schema.Resource{
- Read: dataSourceGoogleBigqueryDefaultServiceAccountRead,
- Schema: map[string]*data_source_google_bigquery_default_service_account_schema.Schema{
- "email": {
- Type: data_source_google_bigquery_default_service_account_schema.TypeString,
- Computed: true,
- },
- "project": {
- Type: data_source_google_bigquery_default_service_account_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleBigqueryDefaultServiceAccountRead(d *data_source_google_bigquery_default_service_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- projectResource, err := config.NewBigQueryClient(userAgent).Projects.GetServiceAccount(project).Do()
- if err != nil {
- return handleNotFoundError(err, d, "BigQuery service account not found")
- }
-
- d.SetId(projectResource.Email)
- if err := d.Set("email", projectResource.Email); err != nil {
- return data_source_google_bigquery_default_service_account_fmt.Errorf("Error setting email: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_bigquery_default_service_account_fmt.Errorf("Error setting project: %s", err)
- }
- return nil
-}
-
-func dataSourceGoogleBillingAccount() *data_source_google_billing_account_schema.Resource {
- return &data_source_google_billing_account_schema.Resource{
- Read: dataSourceBillingAccountRead,
- Schema: map[string]*data_source_google_billing_account_schema.Schema{
- "billing_account": {
- Type: data_source_google_billing_account_schema.TypeString,
- Optional: true,
- ConflictsWith: []string{"display_name"},
- },
- "display_name": {
- Type: data_source_google_billing_account_schema.TypeString,
- Optional: true,
- Computed: true,
- ConflictsWith: []string{"billing_account"},
- },
- "open": {
- Type: data_source_google_billing_account_schema.TypeBool,
- Optional: true,
- Computed: true,
- },
- "name": {
- Type: data_source_google_billing_account_schema.TypeString,
- Computed: true,
- },
- "project_ids": {
- Type: data_source_google_billing_account_schema.TypeSet,
- Computed: true,
- Elem: &data_source_google_billing_account_schema.Schema{
- Type: data_source_google_billing_account_schema.TypeString,
- },
- },
- },
- }
-}
-
-func dataSourceBillingAccountRead(d *data_source_google_billing_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- open, openOk := d.GetOkExists("open")
-
- var billingAccount *data_source_google_billing_account_cloudbilling.BillingAccount
- if v, ok := d.GetOk("billing_account"); ok {
- resp, err := config.NewBillingClient(userAgent).BillingAccounts.Get(canonicalBillingAccountName(v.(string))).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_billing_account_fmt.Sprintf("Billing Account Not Found : %s", v))
- }
-
- if openOk && resp.Open != open.(bool) {
- return data_source_google_billing_account_fmt.Errorf("Billing account not found: %s", v)
- }
-
- billingAccount = resp
- } else if v, ok := d.GetOk("display_name"); ok {
- token := ""
- for paginate := true; paginate; {
- resp, err := config.NewBillingClient(userAgent).BillingAccounts.List().PageToken(token).Do()
- if err != nil {
- return data_source_google_billing_account_fmt.Errorf("Error reading billing accounts: %s", err)
- }
-
- for _, ba := range resp.BillingAccounts {
- if ba.DisplayName == v.(string) {
- if openOk && ba.Open != open.(bool) {
- continue
- }
- if billingAccount != nil {
- return data_source_google_billing_account_fmt.Errorf("More than one matching billing account found")
- }
- billingAccount = ba
- }
- }
-
- token = resp.NextPageToken
- paginate = token != ""
- }
-
- if billingAccount == nil {
- return data_source_google_billing_account_fmt.Errorf("Billing account not found: %s", v)
- }
- } else {
- return data_source_google_billing_account_fmt.Errorf("one of billing_account or display_name must be set")
- }
-
- resp, err := config.NewBillingClient(userAgent).BillingAccounts.Projects.List(billingAccount.Name).Do()
- if err != nil {
- return data_source_google_billing_account_fmt.Errorf("Error reading billing account projects: %s", err)
- }
- projectIds := flattenBillingProjects(resp.ProjectBillingInfo)
-
- d.SetId(GetResourceNameFromSelfLink(billingAccount.Name))
- if err := d.Set("name", billingAccount.Name); err != nil {
- return data_source_google_billing_account_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("display_name", billingAccount.DisplayName); err != nil {
- return data_source_google_billing_account_fmt.Errorf("Error setting display_name: %s", err)
- }
- if err := d.Set("open", billingAccount.Open); err != nil {
- return data_source_google_billing_account_fmt.Errorf("Error setting open: %s", err)
- }
- if err := d.Set("project_ids", projectIds); err != nil {
- return data_source_google_billing_account_fmt.Errorf("Error setting project_ids: %s", err)
- }
-
- return nil
-}
-
-func canonicalBillingAccountName(ba string) string {
- if data_source_google_billing_account_strings.HasPrefix(ba, "billingAccounts/") {
- return ba
- }
-
- return "billingAccounts/" + ba
-}
-
-func flattenBillingProjects(billingProjects []*data_source_google_billing_account_cloudbilling.ProjectBillingInfo) []string {
- projectIds := make([]string, len(billingProjects))
- for i, billingProject := range billingProjects {
- projectIds[i] = billingProject.ProjectId
- }
-
- return projectIds
-}
-
-func dataSourceGoogleClientConfig() *data_source_google_client_config_schema.Resource {
- return &data_source_google_client_config_schema.Resource{
- Read: dataSourceClientConfigRead,
- Schema: map[string]*data_source_google_client_config_schema.Schema{
- "project": {
- Type: data_source_google_client_config_schema.TypeString,
- Computed: true,
- },
-
- "region": {
- Type: data_source_google_client_config_schema.TypeString,
- Computed: true,
- },
-
- "zone": {
- Type: data_source_google_client_config_schema.TypeString,
- Computed: true,
- },
-
- "access_token": {
- Type: data_source_google_client_config_schema.TypeString,
- Computed: true,
- Sensitive: true,
- },
- },
- }
-}
-
-func dataSourceClientConfigRead(d *data_source_google_client_config_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- d.SetId(data_source_google_client_config_fmt.Sprintf("projects/%s/regions/%s/zones/%s", config.Project, config.Region, config.Zone))
- if err := d.Set("project", config.Project); err != nil {
- return data_source_google_client_config_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", config.Region); err != nil {
- return data_source_google_client_config_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("zone", config.Zone); err != nil {
- return data_source_google_client_config_fmt.Errorf("Error setting zone: %s", err)
- }
-
- token, err := config.tokenSource.Token()
- if err != nil {
- return err
- }
- if err := d.Set("access_token", token.AccessToken); err != nil {
- return data_source_google_client_config_fmt.Errorf("Error setting access_token: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleClientOpenIDUserinfo() *data_source_google_client_openid_userinfo_schema.Resource {
- return &data_source_google_client_openid_userinfo_schema.Resource{
- Read: dataSourceGoogleClientOpenIDUserinfoRead,
- Schema: map[string]*data_source_google_client_openid_userinfo_schema.Schema{
- "email": {
- Type: data_source_google_client_openid_userinfo_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleClientOpenIDUserinfoRead(d *data_source_google_client_openid_userinfo_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- email, err := GetCurrentUserEmail(config, userAgent)
- if err != nil {
- return err
- }
- d.SetId(email)
- if err := d.Set("email", email); err != nil {
- return data_source_google_client_openid_userinfo_fmt.Errorf("Error setting email: %s", err)
- }
- return nil
-}
-
-func dataSourceGoogleCloudFunctionsFunction() *data_source_google_cloudfunctions_function_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceCloudFunctionsFunction().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project", "region")
-
- return &data_source_google_cloudfunctions_function_schema.Resource{
- Read: dataSourceGoogleCloudFunctionsFunctionRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleCloudFunctionsFunctionRead(d *data_source_google_cloudfunctions_function_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- cloudFuncId := &cloudFunctionId{
- Project: project,
- Region: region,
- Name: d.Get("name").(string),
- }
-
- d.SetId(cloudFuncId.cloudFunctionId())
-
- err = resourceCloudFunctionsRead(d, meta)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-func dataSourceGoogleComposerEnvironment() *data_source_google_composer_environment_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComposerEnvironment().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project", "region")
-
- return &data_source_google_composer_environment_schema.Resource{
- Read: dataSourceGoogleComposerEnvironmentRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComposerEnvironmentRead(d *data_source_google_composer_environment_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
- envName := d.Get("name").(string)
-
- d.SetId(data_source_google_composer_environment_fmt.Sprintf("projects/%s/locations/%s/environments/%s", project, region, envName))
-
- return resourceComposerEnvironmentRead(d, meta)
-}
-
-func dataSourceGoogleComposerImageVersions() *data_source_google_composer_image_versions_schema.Resource {
- return &data_source_google_composer_image_versions_schema.Resource{
- Read: dataSourceGoogleComposerImageVersionsRead,
- Schema: map[string]*data_source_google_composer_image_versions_schema.Schema{
- "project": {
- Type: data_source_google_composer_image_versions_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "region": {
- Type: data_source_google_composer_image_versions_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "image_versions": {
- Type: data_source_google_composer_image_versions_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_composer_image_versions_schema.Resource{
- Schema: map[string]*data_source_google_composer_image_versions_schema.Schema{
- "image_version_id": {
- Type: data_source_google_composer_image_versions_schema.TypeString,
- Computed: true,
- },
- "supported_python_versions": {
- Type: data_source_google_composer_image_versions_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_composer_image_versions_schema.Schema{Type: data_source_google_composer_image_versions_schema.TypeString},
- },
- },
- },
- },
- },
- }
-}
-
-func dataSourceGoogleComposerImageVersionsRead(d *data_source_google_composer_image_versions_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- url, err := replaceVars(d, config, "{{ComposerBasePath}}projects/{{project}}/locations/{{region}}/imageVersions")
- if err != nil {
- return err
- }
-
- versions, err := paginatedListRequest(project, url, userAgent, config, flattenGoogleComposerImageVersions)
- if err != nil {
- return data_source_google_composer_image_versions_fmt.Errorf("Error listing Composer image versions: %s", err)
- }
-
- data_source_google_composer_image_versions_log.Printf("[DEBUG] Received Composer Image Versions: %q", versions)
-
- if err := d.Set("image_versions", versions); err != nil {
- return data_source_google_composer_image_versions_fmt.Errorf("Error setting image_versions: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return data_source_google_composer_image_versions_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_composer_image_versions_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_google_composer_image_versions_fmt.Sprintf("projects/%s/regions/%s", project, region))
-
- return nil
-}
-
-func flattenGoogleComposerImageVersions(resp map[string]interface{}) []interface{} {
- verObjList := resp["imageVersions"].([]interface{})
- versions := make([]interface{}, len(verObjList))
- for i, v := range verObjList {
- verObj := v.(map[string]interface{})
- versions[i] = map[string]interface{}{
- "image_version_id": verObj["imageVersionId"],
- "supported_python_versions": verObj["supportedPythonVersions"],
- }
- }
- return versions
-}
-
-var (
- computeAddressIdTemplate = "projects/%s/regions/%s/addresses/%s"
- computeAddressLinkRegex = data_source_google_compute_address_regexp.MustCompile("projects/(.+)/regions/(.+)/addresses/(.+)$")
-)
-
-func dataSourceGoogleComputeAddress() *data_source_google_compute_address_schema.Resource {
- return &data_source_google_compute_address_schema.Resource{
- Read: dataSourceGoogleComputeAddressRead,
-
- Schema: map[string]*data_source_google_compute_address_schema.Schema{
- "name": {
- Type: data_source_google_compute_address_schema.TypeString,
- Required: true,
- },
-
- "address": {
- Type: data_source_google_compute_address_schema.TypeString,
- Computed: true,
- },
-
- "status": {
- Type: data_source_google_compute_address_schema.TypeString,
- Computed: true,
- },
-
- "self_link": {
- Type: data_source_google_compute_address_schema.TypeString,
- Computed: true,
- },
-
- "region": {
- Type: data_source_google_compute_address_schema.TypeString,
- Computed: true,
- Optional: true,
- },
-
- "project": {
- Type: data_source_google_compute_address_schema.TypeString,
- Computed: true,
- Optional: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeAddressRead(d *data_source_google_compute_address_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
- name := d.Get("name").(string)
-
- address, err := config.NewComputeClient(userAgent).Addresses.Get(project, region, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_address_fmt.Sprintf("Address Not Found : %s", name))
- }
-
- if err := d.Set("address", address.Address); err != nil {
- return data_source_google_compute_address_fmt.Errorf("Error setting address: %s", err)
- }
- if err := d.Set("status", address.Status); err != nil {
- return data_source_google_compute_address_fmt.Errorf("Error setting status: %s", err)
- }
- if err := d.Set("self_link", address.SelfLink); err != nil {
- return data_source_google_compute_address_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_address_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return data_source_google_compute_address_fmt.Errorf("Error setting region: %s", err)
- }
-
- d.SetId(data_source_google_compute_address_fmt.Sprintf("projects/%s/regions/%s/addresses/%s", project, region, name))
- return nil
-}
-
-type computeAddressId struct {
- Project string
- Region string
- Name string
-}
-
-func (s computeAddressId) canonicalId() string {
- return data_source_google_compute_address_fmt.Sprintf(computeAddressIdTemplate, s.Project, s.Region, s.Name)
-}
-
-func parseComputeAddressId(id string, config *Config) (*computeAddressId, error) {
- var parts []string
- if computeAddressLinkRegex.MatchString(id) {
- parts = computeAddressLinkRegex.FindStringSubmatch(id)
-
- return &computeAddressId{
- Project: parts[1],
- Region: parts[2],
- Name: parts[3],
- }, nil
- } else {
- parts = data_source_google_compute_address_strings.Split(id, "/")
- }
-
- if len(parts) == 3 {
- return &computeAddressId{
- Project: parts[0],
- Region: parts[1],
- Name: parts[2],
- }, nil
- } else if len(parts) == 2 {
-
- if config.Project == "" {
- return nil, data_source_google_compute_address_fmt.Errorf("The default project for the provider must be set when using the `{region}/{name}` id format.")
- }
-
- return &computeAddressId{
- Project: config.Project,
- Region: parts[0],
- Name: parts[1],
- }, nil
- } else if len(parts) == 1 {
-
- if config.Project == "" {
- return nil, data_source_google_compute_address_fmt.Errorf("The default project for the provider must be set when using the `{name}` id format.")
- }
- if config.Region == "" {
- return nil, data_source_google_compute_address_fmt.Errorf("The default region for the provider must be set when using the `{name}` id format.")
- }
-
- return &computeAddressId{
- Project: config.Project,
- Region: config.Region,
- Name: parts[0],
- }, nil
- }
-
- return nil, data_source_google_compute_address_fmt.Errorf("Invalid compute address id. Expecting resource link, `{project}/{region}/{name}`, `{region}/{name}` or `{name}` format.")
-}
-
-func dataSourceGoogleComputeBackendBucket() *data_source_google_compute_backend_bucket_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeBackendBucket().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_compute_backend_bucket_schema.Resource{
- Read: dataSourceComputeBackendBucketRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceComputeBackendBucketRead(d *data_source_google_compute_backend_bucket_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- backendBucketName := d.Get("name").(string)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_compute_backend_bucket_fmt.Sprintf("projects/%s/global/backendBuckets/%s", project, backendBucketName))
-
- return resourceComputeBackendBucketRead(d, meta)
-}
-
-func dataSourceGoogleComputeBackendService() *data_source_google_compute_backend_service_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeBackendService().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_compute_backend_service_schema.Resource{
- Read: dataSourceComputeBackendServiceRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceComputeBackendServiceRead(d *data_source_google_compute_backend_service_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- serviceName := d.Get("name").(string)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_compute_backend_service_fmt.Sprintf("projects/%s/global/backendServices/%s", project, serviceName))
-
- return resourceComputeBackendServiceRead(d, meta)
-}
-
-func dataSourceGoogleComputeDefaultServiceAccount() *data_source_google_compute_default_service_account_schema.Resource {
- return &data_source_google_compute_default_service_account_schema.Resource{
- Read: dataSourceGoogleComputeDefaultServiceAccountRead,
- Schema: map[string]*data_source_google_compute_default_service_account_schema.Schema{
- "project": {
- Type: data_source_google_compute_default_service_account_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "email": {
- Type: data_source_google_compute_default_service_account_schema.TypeString,
- Computed: true,
- },
- "unique_id": {
- Type: data_source_google_compute_default_service_account_schema.TypeString,
- Computed: true,
- },
- "name": {
- Type: data_source_google_compute_default_service_account_schema.TypeString,
- Computed: true,
- },
- "display_name": {
- Type: data_source_google_compute_default_service_account_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeDefaultServiceAccountRead(d *data_source_google_compute_default_service_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- projectCompResource, err := config.NewComputeClient(userAgent).Projects.Get(project).Do()
- if err != nil {
- return handleNotFoundError(err, d, "GCE default service account")
- }
-
- serviceAccountName, err := serviceAccountFQN(projectCompResource.DefaultServiceAccount, d, config)
- if err != nil {
- return err
- }
-
- sa, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Get(serviceAccountName).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_default_service_account_fmt.Sprintf("Service Account %q", serviceAccountName))
- }
-
- d.SetId(sa.Name)
- if err := d.Set("email", sa.Email); err != nil {
- return data_source_google_compute_default_service_account_fmt.Errorf("Error setting email: %s", err)
- }
- if err := d.Set("unique_id", sa.UniqueId); err != nil {
- return data_source_google_compute_default_service_account_fmt.Errorf("Error setting unique_id: %s", err)
- }
- if err := d.Set("project", sa.ProjectId); err != nil {
- return data_source_google_compute_default_service_account_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("name", sa.Name); err != nil {
- return data_source_google_compute_default_service_account_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("display_name", sa.DisplayName); err != nil {
- return data_source_google_compute_default_service_account_fmt.Errorf("Error setting display_name: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleComputeForwardingRule() *data_source_google_compute_forwarding_rule_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeForwardingRule().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
- addOptionalFieldsToSchema(dsSchema, "region")
-
- return &data_source_google_compute_forwarding_rule_schema.Resource{
- Read: dataSourceGoogleComputeForwardingRuleRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComputeForwardingRuleRead(d *data_source_google_compute_forwarding_rule_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- name := d.Get("name").(string)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_compute_forwarding_rule_fmt.Sprintf("projects/%s/regions/%s/forwardingRules/%s", project, region, name))
-
- return resourceComputeForwardingRuleRead(d, meta)
-}
-
-func dataSourceGoogleComputeGlobalAddress() *data_source_google_compute_global_address_schema.Resource {
- return &data_source_google_compute_global_address_schema.Resource{
- Read: dataSourceGoogleComputeGlobalAddressRead,
-
- Schema: map[string]*data_source_google_compute_global_address_schema.Schema{
- "name": {
- Type: data_source_google_compute_global_address_schema.TypeString,
- Required: true,
- },
-
- "address": {
- Type: data_source_google_compute_global_address_schema.TypeString,
- Computed: true,
- },
-
- "status": {
- Type: data_source_google_compute_global_address_schema.TypeString,
- Computed: true,
- },
-
- "self_link": {
- Type: data_source_google_compute_global_address_schema.TypeString,
- Computed: true,
- },
-
- "project": {
- Type: data_source_google_compute_global_address_schema.TypeString,
- Computed: true,
- Optional: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeGlobalAddressRead(d *data_source_google_compute_global_address_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- name := d.Get("name").(string)
- address, err := config.NewComputeClient(userAgent).GlobalAddresses.Get(project, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_global_address_fmt.Sprintf("Global Address Not Found : %s", name))
- }
-
- if err := d.Set("address", address.Address); err != nil {
- return data_source_google_compute_global_address_fmt.Errorf("Error setting address: %s", err)
- }
- if err := d.Set("status", address.Status); err != nil {
- return data_source_google_compute_global_address_fmt.Errorf("Error setting status: %s", err)
- }
- if err := d.Set("self_link", address.SelfLink); err != nil {
- return data_source_google_compute_global_address_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_global_address_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_google_compute_global_address_fmt.Sprintf("projects/%s/global/addresses/%s", project, name))
- return nil
-}
-
-func dataSourceGoogleComputeHaVpnGateway() *data_source_google_compute_ha_vpn_gateway_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeHaVpnGateway().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
- addOptionalFieldsToSchema(dsSchema, "region")
-
- return &data_source_google_compute_ha_vpn_gateway_schema.Resource{
- Read: dataSourceGoogleComputeHaVpnGatewayRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComputeHaVpnGatewayRead(d *data_source_google_compute_ha_vpn_gateway_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- name := d.Get("name").(string)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_compute_ha_vpn_gateway_fmt.Sprintf("projects/%s/regions/%s/vpnGateways/%s", project, region, name))
-
- return resourceComputeHaVpnGatewayRead(d, meta)
-}
-
-func dataSourceGoogleComputeImage() *data_source_google_compute_image_schema.Resource {
- return &data_source_google_compute_image_schema.Resource{
- Read: dataSourceGoogleComputeImageRead,
-
- Schema: map[string]*data_source_google_compute_image_schema.Schema{
- "name": {
- Type: data_source_google_compute_image_schema.TypeString,
- Optional: true,
- ForceNew: true,
- Computed: true,
- ExactlyOneOf: []string{"name", "family", "filter"},
- },
- "family": {
- Type: data_source_google_compute_image_schema.TypeString,
- Optional: true,
- ForceNew: true,
- Computed: true,
- ExactlyOneOf: []string{"name", "family", "filter"},
- },
- "filter": {
- Type: data_source_google_compute_image_schema.TypeString,
- Optional: true,
- ForceNew: true,
- ExactlyOneOf: []string{"name", "family", "filter"},
- },
- "archive_size_bytes": {
- Type: data_source_google_compute_image_schema.TypeInt,
- Computed: true,
- },
- "creation_timestamp": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "description": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "disk_size_gb": {
- Type: data_source_google_compute_image_schema.TypeInt,
- Computed: true,
- },
- "image_id": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "image_encryption_key_sha256": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "label_fingerprint": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "labels": {
- Type: data_source_google_compute_image_schema.TypeMap,
- Elem: &data_source_google_compute_image_schema.Schema{
- Type: data_source_google_compute_image_schema.TypeString,
- },
- Computed: true,
- },
- "licenses": {
- Type: data_source_google_compute_image_schema.TypeList,
- Elem: &data_source_google_compute_image_schema.Schema{
- Type: data_source_google_compute_image_schema.TypeString,
- },
- Computed: true,
- },
- "source_disk": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "source_disk_encryption_key_sha256": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "source_disk_id": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "source_image_id": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "status": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "self_link": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- },
- "project": {
- Type: data_source_google_compute_image_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeImageRead(d *data_source_google_compute_image_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- var image *data_source_google_compute_image_compute.Image
- if v, ok := d.GetOk("name"); ok {
- data_source_google_compute_image_log.Printf("[DEBUG] Fetching image %s", v.(string))
- image, err = config.NewComputeClient(userAgent).Images.Get(project, v.(string)).Do()
- data_source_google_compute_image_log.Printf("[DEBUG] Fetched image %s", v.(string))
- } else if v, ok := d.GetOk("family"); ok {
- data_source_google_compute_image_log.Printf("[DEBUG] Fetching latest non-deprecated image from family %s", v.(string))
- image, err = config.NewComputeClient(userAgent).Images.GetFromFamily(project, v.(string)).Do()
- data_source_google_compute_image_log.Printf("[DEBUG] Fetched latest non-deprecated image from family %s", v.(string))
- } else if v, ok := d.GetOk("filter"); ok {
- images, err := config.NewComputeClient(userAgent).Images.List(project).Filter(v.(string)).Do()
- if err != nil {
- return data_source_google_compute_image_fmt.Errorf("error retrieving list of images: %s", err)
- }
-
- if len(images.Items) == 1 {
- for _, im := range images.Items {
- image = im
- }
- } else {
- return data_source_google_compute_image_fmt.Errorf("your filter has returned more than one image or no image. Please refine your filter to return exactly one image")
- }
- } else {
- return data_source_google_compute_image_fmt.Errorf("one of name, family or filters must be set")
- }
-
- if err != nil {
- return data_source_google_compute_image_fmt.Errorf("error retrieving image information: %s", err)
- }
-
- var ieks256, sdeks256 string
-
- if image.SourceDiskEncryptionKey != nil {
- sdeks256 = image.SourceDiskEncryptionKey.Sha256
- }
-
- if image.ImageEncryptionKey != nil {
- ieks256 = image.ImageEncryptionKey.Sha256
- }
-
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("name", image.Name); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("family", image.Family); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting family: %s", err)
- }
- if err := d.Set("archive_size_bytes", image.ArchiveSizeBytes); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting archive_size_bytes: %s", err)
- }
- if err := d.Set("creation_timestamp", image.CreationTimestamp); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting creation_timestamp: %s", err)
- }
- if err := d.Set("description", image.Description); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting description: %s", err)
- }
- if err := d.Set("disk_size_gb", image.DiskSizeGb); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting disk_size_gb: %s", err)
- }
- if err := d.Set("image_id", data_source_google_compute_image_strconv.FormatUint(image.Id, 10)); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting image_id: %s", err)
- }
- if err := d.Set("image_encryption_key_sha256", ieks256); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting image_encryption_key_sha256: %s", err)
- }
- if err := d.Set("label_fingerprint", image.LabelFingerprint); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting label_fingerprint: %s", err)
- }
- if err := d.Set("labels", image.Labels); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting labels: %s", err)
- }
- if err := d.Set("licenses", image.Licenses); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting licenses: %s", err)
- }
- if err := d.Set("self_link", image.SelfLink); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("source_disk", image.SourceDisk); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting source_disk: %s", err)
- }
- if err := d.Set("source_disk_encryption_key_sha256", sdeks256); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting source_disk_encryption_key_sha256: %s", err)
- }
- if err := d.Set("source_disk_id", image.SourceDiskId); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting source_disk_id: %s", err)
- }
- if err := d.Set("source_image_id", image.SourceImageId); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting source_image_id: %s", err)
- }
- if err := d.Set("status", image.Status); err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error setting status: %s", err)
- }
-
- id, err := replaceVars(d, config, "projects/{{project}}/global/images/{{name}}")
- if err != nil {
- return data_source_google_compute_image_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
-
- return nil
-}
-
-func dataSourceGoogleComputeInstance() *data_source_google_compute_instance_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeInstance().Schema)
-
- addOptionalFieldsToSchema(dsSchema, "name", "self_link", "project", "zone")
-
- return &data_source_google_compute_instance_schema.Resource{
- Read: dataSourceGoogleComputeInstanceRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComputeInstanceRead(d *data_source_google_compute_instance_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, zone, name, err := GetZonalResourcePropertiesFromSelfLinkOrSchema(d, config)
- if err != nil {
- return err
- }
-
- instance, err := config.NewComputeClient(userAgent).Instances.Get(project, zone, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_instance_fmt.Sprintf("Instance %s", name))
- }
-
- md := flattenMetadataBeta(instance.Metadata)
- if err = d.Set("metadata", md); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("error setting metadata: %s", err)
- }
-
- if err := d.Set("can_ip_forward", instance.CanIpForward); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting can_ip_forward: %s", err)
- }
- if err := d.Set("machine_type", GetResourceNameFromSelfLink(instance.MachineType)); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting machine_type: %s", err)
- }
-
- networkInterfaces, _, internalIP, externalIP, err := flattenNetworkInterfaces(d, config, instance.NetworkInterfaces)
- if err != nil {
- return err
- }
- if err := d.Set("network_interface", networkInterfaces); err != nil {
- return err
- }
-
- sshIP := externalIP
- if sshIP == "" {
- sshIP = internalIP
- }
-
- d.SetConnInfo(map[string]string{
- "type": "ssh",
- "host": sshIP,
- })
-
- if instance.Metadata != nil {
- if err := d.Set("metadata_fingerprint", instance.Metadata.Fingerprint); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting metadata_fingerprint: %s", err)
- }
- }
-
- if instance.Tags != nil {
- if err := d.Set("tags_fingerprint", instance.Tags.Fingerprint); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting tags_fingerprint: %s", err)
- }
- if err := d.Set("tags", convertStringArrToInterface(instance.Tags.Items)); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting tags: %s", err)
- }
- }
-
- if err := d.Set("labels", instance.Labels); err != nil {
- return err
- }
-
- if instance.LabelFingerprint != "" {
- if err := d.Set("label_fingerprint", instance.LabelFingerprint); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting label_fingerprint: %s", err)
- }
- }
-
- attachedDisks := []map[string]interface{}{}
- scratchDisks := []map[string]interface{}{}
- for _, disk := range instance.Disks {
- if disk.Boot {
- err = d.Set("boot_disk", flattenBootDisk(d, disk, config))
- if err != nil {
- return err
- }
- } else if disk.Type == "SCRATCH" {
- scratchDisks = append(scratchDisks, flattenScratchDisk(disk))
- } else {
- di := map[string]interface{}{
- "source": ConvertSelfLinkToV1(disk.Source),
- "device_name": disk.DeviceName,
- "mode": disk.Mode,
- }
- if key := disk.DiskEncryptionKey; key != nil {
- di["disk_encryption_key_sha256"] = key.Sha256
- di["kms_key_self_link"] = key.KmsKeyName
- }
- attachedDisks = append(attachedDisks, di)
- }
- }
-
- ads := []map[string]interface{}{}
- for _, d := range attachedDisks {
- if d != nil {
- ads = append(ads, d)
- }
- }
-
- err = d.Set("service_account", flattenServiceAccounts(instance.ServiceAccounts))
- if err != nil {
- return err
- }
-
- err = d.Set("scheduling", flattenScheduling(instance.Scheduling))
- if err != nil {
- return err
- }
-
- err = d.Set("guest_accelerator", flattenGuestAccelerators(instance.GuestAccelerators))
- if err != nil {
- return err
- }
-
- err = d.Set("scratch_disk", scratchDisks)
- if err != nil {
- return err
- }
-
- err = d.Set("shielded_instance_config", flattenShieldedVmConfig(instance.ShieldedInstanceConfig))
- if err != nil {
- return err
- }
-
- err = d.Set("enable_display", flattenEnableDisplay(instance.DisplayDevice))
- if err != nil {
- return err
- }
-
- if err := d.Set("attached_disk", ads); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting attached_disk: %s", err)
- }
- if err := d.Set("cpu_platform", instance.CpuPlatform); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting cpu_platform: %s", err)
- }
- if err := d.Set("min_cpu_platform", instance.MinCpuPlatform); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting min_cpu_platform: %s", err)
- }
- if err := d.Set("deletion_protection", instance.DeletionProtection); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting deletion_protection: %s", err)
- }
- if err := d.Set("self_link", ConvertSelfLinkToV1(instance.SelfLink)); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("instance_id", data_source_google_compute_instance_fmt.Sprintf("%d", instance.Id)); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting instance_id: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("zone", GetResourceNameFromSelfLink(instance.Zone)); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting zone: %s", err)
- }
- if err := d.Set("current_status", instance.Status); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting current_status: %s", err)
- }
- if err := d.Set("name", instance.Name); err != nil {
- return data_source_google_compute_instance_fmt.Errorf("Error setting name: %s", err)
- }
- d.SetId(data_source_google_compute_instance_fmt.Sprintf("projects/%s/zones/%s/instances/%s", project, instance.Zone, instance.Name))
- return nil
-}
-
-func dataSourceGoogleComputeInstanceGroup() *data_source_google_compute_instance_group_schema.Resource {
- return &data_source_google_compute_instance_group_schema.Resource{
- Read: dataSourceComputeInstanceGroupRead,
- Schema: map[string]*data_source_google_compute_instance_group_schema.Schema{
- "name": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Optional: true,
- ConflictsWith: []string{"self_link"},
- },
-
- "self_link": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Optional: true,
- Computed: true,
- ConflictsWith: []string{"name", "zone"},
- },
-
- "zone": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Optional: true,
- Computed: true,
- ConflictsWith: []string{"self_link"},
- },
-
- "project": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Optional: true,
- Computed: true,
- },
-
- "description": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Computed: true,
- },
-
- "instances": {
- Type: data_source_google_compute_instance_group_schema.TypeSet,
- Computed: true,
- Elem: &data_source_google_compute_instance_group_schema.Schema{Type: data_source_google_compute_instance_group_schema.TypeString},
- Set: data_source_google_compute_instance_group_schema.HashString,
- },
-
- "named_port": {
- Type: data_source_google_compute_instance_group_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_instance_group_schema.Resource{
- Schema: map[string]*data_source_google_compute_instance_group_schema.Schema{
- "name": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Computed: true,
- },
-
- "port": {
- Type: data_source_google_compute_instance_group_schema.TypeInt,
- Computed: true,
- },
- },
- },
- },
-
- "network": {
- Type: data_source_google_compute_instance_group_schema.TypeString,
- Computed: true,
- },
-
- "size": {
- Type: data_source_google_compute_instance_group_schema.TypeInt,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceComputeInstanceGroupRead(d *data_source_google_compute_instance_group_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- if name, ok := d.GetOk("name"); ok {
- zone, err := getZone(d, config)
- if err != nil {
- return err
- }
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- d.SetId(data_source_google_compute_instance_group_fmt.Sprintf("projects/%s/zones/%s/instanceGroups/%s", project, zone, name.(string)))
- } else if selfLink, ok := d.GetOk("self_link"); ok {
- parsed, err := ParseInstanceGroupFieldValue(selfLink.(string), d, config)
- if err != nil {
- return err
- }
- if err := d.Set("name", parsed.Name); err != nil {
- return data_source_google_compute_instance_group_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("zone", parsed.Zone); err != nil {
- return data_source_google_compute_instance_group_fmt.Errorf("Error setting zone: %s", err)
- }
- if err := d.Set("project", parsed.Project); err != nil {
- return data_source_google_compute_instance_group_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_google_compute_instance_group_fmt.Sprintf("projects/%s/zones/%s/instanceGroups/%s", parsed.Project, parsed.Zone, parsed.Name))
- } else {
- return data_source_google_compute_instance_group_errors.New("Must provide either `self_link` or `zone/name`")
- }
-
- return resourceComputeInstanceGroupRead(d, meta)
-}
-
-func dataSourceGoogleComputeInstanceSerialPort() *data_source_google_compute_instance_serial_port_schema.Resource {
- return &data_source_google_compute_instance_serial_port_schema.Resource{
- Read: computeInstanceSerialPortRead,
- Schema: map[string]*data_source_google_compute_instance_serial_port_schema.Schema{
- "port": {
- Type: data_source_google_compute_instance_serial_port_schema.TypeInt,
- Required: true,
- },
- "instance": {
- Type: data_source_google_compute_instance_serial_port_schema.TypeString,
- Required: true,
- },
- "zone": {
- Type: data_source_google_compute_instance_serial_port_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "project": {
- Type: data_source_google_compute_instance_serial_port_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "contents": {
- Type: data_source_google_compute_instance_serial_port_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func computeInstanceSerialPortRead(d *data_source_google_compute_instance_serial_port_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_instance_serial_port_fmt.Errorf("Error setting project: %s", err)
- }
- zone, err := getZone(d, config)
- if err != nil {
- return err
- }
- if err := d.Set("zone", zone); err != nil {
- return data_source_google_compute_instance_serial_port_fmt.Errorf("Error setting zone: %s", err)
- }
-
- port := int64(d.Get("port").(int))
- output, err := config.NewComputeClient(userAgent).Instances.GetSerialPortOutput(project, zone, d.Get("instance").(string)).Port(port).Do()
- if err != nil {
- return err
- }
-
- if err := d.Set("contents", output.Contents); err != nil {
- return data_source_google_compute_instance_serial_port_fmt.Errorf("Error setting contents: %s", err)
- }
- d.SetId(output.SelfLink)
- return nil
-}
-
-func dataSourceGoogleComputeInstanceTemplate() *data_source_google_compute_instance_template_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeInstanceTemplate().Schema)
-
- dsSchema["filter"] = &data_source_google_compute_instance_template_schema.Schema{
- Type: data_source_google_compute_instance_template_schema.TypeString,
- Optional: true,
- }
- dsSchema["most_recent"] = &data_source_google_compute_instance_template_schema.Schema{
- Type: data_source_google_compute_instance_template_schema.TypeBool,
- Optional: true,
- }
-
- addRequiredFieldsToSchema(dsSchema, "project")
-
- addOptionalFieldsToSchema(dsSchema, "name", "filter", "most_recent")
-
- dsSchema["name"].ExactlyOneOf = []string{"name", "filter"}
- dsSchema["filter"].ExactlyOneOf = []string{"name", "filter"}
-
- return &data_source_google_compute_instance_template_schema.Resource{
- Read: datasourceComputeInstanceTemplateRead,
- Schema: dsSchema,
- }
-}
-
-func datasourceComputeInstanceTemplateRead(d *data_source_google_compute_instance_template_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- if v, ok := d.GetOk("name"); ok {
- return retrieveInstance(d, meta, project, v.(string))
- }
- if v, ok := d.GetOk("filter"); ok {
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- templates, err := config.NewComputeClient(userAgent).InstanceTemplates.List(project).Filter(v.(string)).Do()
- if err != nil {
- return data_source_google_compute_instance_template_fmt.Errorf("error retrieving list of instance templates: %s", err)
- }
-
- mostRecent := d.Get("most_recent").(bool)
- if mostRecent {
- data_source_google_compute_instance_template_sort.Sort(ByCreationTimestamp(templates.Items))
- }
-
- count := len(templates.Items)
- if count == 1 || count > 1 && mostRecent {
- return retrieveInstance(d, meta, project, templates.Items[0].Name)
- }
-
- return data_source_google_compute_instance_template_fmt.Errorf("your filter has returned %d instance template(s). Please refine your filter or set most_recent to return exactly one instance template", len(templates.Items))
- }
-
- return data_source_google_compute_instance_template_fmt.Errorf("one of name or filters must be set")
-}
-
-func retrieveInstance(d *data_source_google_compute_instance_template_schema.ResourceData, meta interface{}, project, name string) error {
- d.SetId("projects/" + project + "/global/instanceTemplates/" + name)
-
- return resourceComputeInstanceTemplateRead(d, meta)
-}
-
-type ByCreationTimestamp []*data_source_google_compute_instance_template_compute.InstanceTemplate
-
-func (a ByCreationTimestamp) Len() int { return len(a) }
-
-func (a ByCreationTimestamp) Swap(i, j int) { a[i], a[j] = a[j], a[i] }
-
-func (a ByCreationTimestamp) Less(i, j int) bool {
- return a[i].CreationTimestamp > a[j].CreationTimestamp
-}
-
-func dataSourceGoogleComputeNetwork() *data_source_google_compute_network_schema.Resource {
- return &data_source_google_compute_network_schema.Resource{
- Read: dataSourceGoogleComputeNetworkRead,
-
- Schema: map[string]*data_source_google_compute_network_schema.Schema{
- "name": {
- Type: data_source_google_compute_network_schema.TypeString,
- Required: true,
- },
-
- "description": {
- Type: data_source_google_compute_network_schema.TypeString,
- Computed: true,
- },
-
- "gateway_ipv4": {
- Type: data_source_google_compute_network_schema.TypeString,
- Computed: true,
- },
-
- "self_link": {
- Type: data_source_google_compute_network_schema.TypeString,
- Computed: true,
- },
-
- "project": {
- Type: data_source_google_compute_network_schema.TypeString,
- Optional: true,
- },
-
- "subnetworks_self_links": {
- Type: data_source_google_compute_network_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_network_schema.Schema{Type: data_source_google_compute_network_schema.TypeString},
- },
- },
- }
-}
-
-func dataSourceGoogleComputeNetworkRead(d *data_source_google_compute_network_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- name := d.Get("name").(string)
- network, err := config.NewComputeClient(userAgent).Networks.Get(project, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_network_fmt.Sprintf("Network Not Found : %s", name))
- }
- if err := d.Set("gateway_ipv4", network.GatewayIPv4); err != nil {
- return data_source_google_compute_network_fmt.Errorf("Error setting gateway_ipv4: %s", err)
- }
- if err := d.Set("self_link", network.SelfLink); err != nil {
- return data_source_google_compute_network_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("description", network.Description); err != nil {
- return data_source_google_compute_network_fmt.Errorf("Error setting description: %s", err)
- }
- if err := d.Set("subnetworks_self_links", network.Subnetworks); err != nil {
- return data_source_google_compute_network_fmt.Errorf("Error setting subnetworks_self_links: %s", err)
- }
- d.SetId(data_source_google_compute_network_fmt.Sprintf("projects/%s/global/networks/%s", project, network.Name))
- return nil
-}
-
-func dataSourceGoogleComputeNodeTypes() *data_source_google_compute_node_types_schema.Resource {
- return &data_source_google_compute_node_types_schema.Resource{
- Read: dataSourceGoogleComputeNodeTypesRead,
- Schema: map[string]*data_source_google_compute_node_types_schema.Schema{
- "project": {
- Type: data_source_google_compute_node_types_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "zone": {
- Type: data_source_google_compute_node_types_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "names": {
- Type: data_source_google_compute_node_types_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_node_types_schema.Schema{Type: data_source_google_compute_node_types_schema.TypeString},
- },
- },
- }
-}
-
-func dataSourceGoogleComputeNodeTypesRead(d *data_source_google_compute_node_types_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- zone, err := getZone(d, config)
- if err != nil {
- return data_source_google_compute_node_types_fmt.Errorf("Please specify zone to get appropriate node types for zone. Unable to get zone: %s", err)
- }
-
- resp, err := config.NewComputeClient(userAgent).NodeTypes.List(project, zone).Do()
- if err != nil {
- return err
- }
- nodeTypes := flattenComputeNodeTypes(resp.Items)
- data_source_google_compute_node_types_log.Printf("[DEBUG] Received Google Compute Regions: %q", nodeTypes)
-
- if err := d.Set("names", nodeTypes); err != nil {
- return data_source_google_compute_node_types_fmt.Errorf("Error setting names: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_node_types_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("zone", zone); err != nil {
- return data_source_google_compute_node_types_fmt.Errorf("Error setting zone: %s", err)
- }
- d.SetId(data_source_google_compute_node_types_fmt.Sprintf("projects/%s/zones/%s", project, zone))
-
- return nil
-}
-
-func flattenComputeNodeTypes(nodeTypes []*data_source_google_compute_node_types_compute.NodeType) []string {
- result := make([]string, len(nodeTypes))
- for i, nodeType := range nodeTypes {
- result[i] = nodeType.Name
- }
- data_source_google_compute_node_types_sort.Strings(result)
- return result
-}
-
-func dataSourceGoogleComputeRegionInstanceGroup() *data_source_google_compute_region_instance_group_schema.Resource {
- return &data_source_google_compute_region_instance_group_schema.Resource{
- Read: dataSourceComputeRegionInstanceGroupRead,
- Schema: map[string]*data_source_google_compute_region_instance_group_schema.Schema{
- "name": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Optional: true,
- ForceNew: true,
- Computed: true,
- },
-
- "instances": {
- Type: data_source_google_compute_region_instance_group_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_region_instance_group_schema.Resource{
- Schema: map[string]*data_source_google_compute_region_instance_group_schema.Schema{
- "instance": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Required: true,
- },
-
- "status": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Required: true,
- },
-
- "named_ports": {
- Type: data_source_google_compute_region_instance_group_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_region_instance_group_schema.Resource{
- Schema: map[string]*data_source_google_compute_region_instance_group_schema.Schema{
- "name": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Required: true,
- },
- "port": {
- Type: data_source_google_compute_region_instance_group_schema.TypeInt,
- Required: true,
- },
- },
- },
- },
- },
- },
- },
-
- "region": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Optional: true,
- ForceNew: true,
- Computed: true,
- },
-
- "project": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Optional: true,
- ForceNew: true,
- Computed: true,
- },
-
- "self_link": {
- Type: data_source_google_compute_region_instance_group_schema.TypeString,
- Optional: true,
- ForceNew: true,
- Computed: true,
- },
-
- "size": {
- Type: data_source_google_compute_region_instance_group_schema.TypeInt,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceComputeRegionInstanceGroupRead(d *data_source_google_compute_region_instance_group_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, region, name, err := GetRegionalResourcePropertiesFromSelfLinkOrSchema(d, config)
- if err != nil {
- return err
- }
-
- instanceGroup, err := config.NewComputeClient(userAgent).RegionInstanceGroups.Get(
- project, region, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_region_instance_group_fmt.Sprintf("Region Instance Group %q", name))
- }
-
- members, err := config.NewComputeClient(userAgent).RegionInstanceGroups.ListInstances(
- project, region, name, &data_source_google_compute_region_instance_group_compute.RegionInstanceGroupsListInstancesRequest{
- InstanceState: "ALL",
- }).Do()
- if err != nil {
- if gerr, ok := err.(*data_source_google_compute_region_instance_group_googleapi.Error); ok && gerr.Code == 404 {
-
- if err := d.Set("instances", nil); err != nil {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error setting instances: %s", err)
- }
- } else {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error reading RegionInstanceGroup Members: %s", err)
- }
- } else {
- if err := d.Set("instances", flattenInstancesWithNamedPorts(members.Items)); err != nil {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error setting instances: %s", err)
- }
- }
- d.SetId(data_source_google_compute_region_instance_group_fmt.Sprintf("projects/%s/regions/%s/instanceGroups/%s", project, region, name))
- if err := d.Set("self_link", instanceGroup.SelfLink); err != nil {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("name", name); err != nil {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return data_source_google_compute_region_instance_group_fmt.Errorf("Error setting region: %s", err)
- }
- return nil
-}
-
-func flattenInstancesWithNamedPorts(insts []*data_source_google_compute_region_instance_group_compute.InstanceWithNamedPorts) []map[string]interface{} {
- result := make([]map[string]interface{}, 0, len(insts))
- data_source_google_compute_region_instance_group_log.Printf("There were %d instances.\n", len(insts))
- for _, inst := range insts {
- instMap := make(map[string]interface{})
- instMap["instance"] = inst.Instance
- instMap["named_ports"] = flattenNamedPorts(inst.NamedPorts)
- instMap["status"] = inst.Status
- result = append(result, instMap)
- }
- return result
-}
-
-func flattenNamedPorts(namedPorts []*data_source_google_compute_region_instance_group_compute.NamedPort) []map[string]interface{} {
- result := make([]map[string]interface{}, 0, len(namedPorts))
- for _, namedPort := range namedPorts {
- namedPortMap := make(map[string]interface{})
- namedPortMap["name"] = namedPort.Name
- namedPortMap["port"] = namedPort.Port
- result = append(result, namedPortMap)
- }
- return result
-}
-
-func dataSourceGoogleRegionComputeSslCertificate() *data_source_google_compute_region_ssl_certificate_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeRegionSslCertificate().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
- addOptionalFieldsToSchema(dsSchema, "region")
-
- return &data_source_google_compute_region_ssl_certificate_schema.Resource{
- Read: dataSourceComputeRegionSslCertificateRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceComputeRegionSslCertificateRead(d *data_source_google_compute_region_ssl_certificate_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- project, region, name, err := GetRegionalResourcePropertiesFromSelfLinkOrSchema(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_compute_region_ssl_certificate_fmt.Sprintf("projects/%s/regions/%s/sslCertificates/%s", project, region, name))
-
- return resourceComputeRegionSslCertificateRead(d, meta)
-}
-
-func dataSourceGoogleComputeRegions() *data_source_google_compute_regions_schema.Resource {
- return &data_source_google_compute_regions_schema.Resource{
- Read: dataSourceGoogleComputeRegionsRead,
- Schema: map[string]*data_source_google_compute_regions_schema.Schema{
- "project": {
- Type: data_source_google_compute_regions_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "names": {
- Type: data_source_google_compute_regions_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_regions_schema.Schema{Type: data_source_google_compute_regions_schema.TypeString},
- },
- "status": {
- Type: data_source_google_compute_regions_schema.TypeString,
- Optional: true,
- ValidateFunc: data_source_google_compute_regions_validation.StringInSlice([]string{"UP", "DOWN"}, false),
- },
- },
- }
-}
-
-func dataSourceGoogleComputeRegionsRead(d *data_source_google_compute_regions_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- filter := ""
- if s, ok := d.GetOk("status"); ok {
- filter = data_source_google_compute_regions_fmt.Sprintf(" (status eq %s)", s)
- }
-
- call := config.NewComputeClient(userAgent).Regions.List(project).Filter(filter)
-
- resp, err := call.Do()
- if err != nil {
- return err
- }
-
- regions := flattenRegions(resp.Items)
- data_source_google_compute_regions_log.Printf("[DEBUG] Received Google Compute Regions: %q", regions)
-
- if err := d.Set("names", regions); err != nil {
- return data_source_google_compute_regions_fmt.Errorf("Error setting names: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_regions_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_google_compute_regions_fmt.Sprintf("projects/%s", project))
-
- return nil
-}
-
-func flattenRegions(regions []*data_source_google_compute_regions_compute.Region) []string {
- result := make([]string, len(regions))
- for i, region := range regions {
- result[i] = region.Name
- }
- data_source_google_compute_regions_sort.Strings(result)
- return result
-}
-
-func dataSourceGoogleComputeResourcePolicy() *data_source_google_compute_resource_policy_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeResourcePolicy().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "region")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_compute_resource_policy_schema.Resource{
- Read: dataSourceGoogleComputeResourcePolicyRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComputeResourcePolicyRead(d *data_source_google_compute_resource_policy_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- name := d.Get("name").(string)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_compute_resource_policy_fmt.Sprintf("projects/%s/regions/%s/resourcePolicies/%s", project, region, name))
-
- return resourceComputeResourcePolicyRead(d, meta)
-}
-
-func dataSourceGoogleComputeRouter() *data_source_google_compute_router_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeRouter().Schema)
- addRequiredFieldsToSchema(dsSchema, "name")
- addRequiredFieldsToSchema(dsSchema, "network")
- addOptionalFieldsToSchema(dsSchema, "region")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_compute_router_schema.Resource{
- Read: dataSourceComputeRouterRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceComputeRouterRead(d *data_source_google_compute_router_schema.ResourceData, meta interface{}) error {
- routerName := d.Get("name").(string)
-
- d.SetId(routerName)
- return resourceComputeRouterRead(d, meta)
-}
-
-func dataSourceGoogleComputeRouterStatus() *data_source_google_compute_router_status_schema.Resource {
- routeElemSchema := datasourceSchemaFromResourceSchema(resourceComputeRoute().Schema)
-
- return &data_source_google_compute_router_status_schema.Resource{
- Read: dataSourceComputeRouterStatusRead,
- Schema: map[string]*data_source_google_compute_router_status_schema.Schema{
- "name": {
- Type: data_source_google_compute_router_status_schema.TypeString,
- Description: "Name of the router to query.",
- Required: true,
- Computed: false,
- },
- "project": {
- Type: data_source_google_compute_router_status_schema.TypeString,
- Description: "Project ID of the target router.",
- Optional: true,
- Computed: false,
- },
- "region": {
- Type: data_source_google_compute_router_status_schema.TypeString,
- Description: "Region of the target router.",
- Optional: true,
- Computed: true,
- },
- "network": {
- Type: data_source_google_compute_router_status_schema.TypeString,
- Description: "URI of the network to which this router belongs.",
- Computed: true,
- },
- "best_routes": {
- Type: data_source_google_compute_router_status_schema.TypeList,
- Description: "Best routes for this router's network.",
- Elem: &data_source_google_compute_router_status_schema.Resource{
- Schema: routeElemSchema,
- },
- Computed: true,
- },
- "best_routes_for_router": {
- Type: data_source_google_compute_router_status_schema.TypeList,
- Description: "Best routes learned by this router.",
- Elem: &data_source_google_compute_router_status_schema.Resource{
- Schema: routeElemSchema,
- },
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceComputeRouterStatusRead(d *data_source_google_compute_router_status_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- var name string
- if n, ok := d.GetOk("name"); ok {
- name = n.(string)
- }
-
- resp, err := config.NewComputeClient(userAgent).Routers.GetRouterStatus(project, region, name).Do()
- if err != nil {
- return err
- }
-
- status := resp.Result
-
- if err := d.Set("network", status.Network); err != nil {
- return data_source_google_compute_router_status_fmt.Errorf("Error setting network: %s", err)
- }
-
- if err := d.Set("best_routes", flattenRoutes(status.BestRoutes)); err != nil {
- return data_source_google_compute_router_status_fmt.Errorf("Error setting best_routes: %s", err)
- }
-
- if err := d.Set("best_routes_for_router", flattenRoutes(status.BestRoutesForRouter)); err != nil {
- return data_source_google_compute_router_status_fmt.Errorf("Error setting best_routes_for_router: %s", err)
- }
-
- id, err := replaceVars(d, config, "projects/{{project}}/regions/{{region}}/routers/{{name}}")
- if err != nil {
- return data_source_google_compute_router_status_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
-
- return nil
-}
-
-func flattenRoutes(routes []*data_source_google_compute_router_status_compute.Route) []map[string]interface{} {
- results := make([]map[string]interface{}, len(routes))
-
- for i, route := range routes {
- results[i] = map[string]interface{}{
- "dest_range": route.DestRange,
- "name": route.Name,
- "network": route.Network,
- "description": route.Description,
- "next_hop_gateway": route.NextHopGateway,
- "next_hop_ilb": route.NextHopIlb,
- "next_hop_ip": route.NextHopIp,
- "next_hop_vpn_tunnel": route.NextHopVpnTunnel,
- "priority": route.Priority,
- "tags": route.Tags,
- "next_hop_network": route.NextHopNetwork,
- }
- }
-
- return results
-}
-
-func dataSourceGoogleComputeSslCertificate() *data_source_google_compute_ssl_certificate_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeSslCertificate().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_compute_ssl_certificate_schema.Resource{
- Read: dataSourceComputeSslCertificateRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceComputeSslCertificateRead(d *data_source_google_compute_ssl_certificate_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- certificateName := d.Get("name").(string)
-
- d.SetId(data_source_google_compute_ssl_certificate_fmt.Sprintf("projects/%s/global/sslCertificates/%s", project, certificateName))
-
- return resourceComputeSslCertificateRead(d, meta)
-}
-
-func dataSourceGoogleComputeSslPolicy() *data_source_google_compute_ssl_policy_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeSslPolicy().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_compute_ssl_policy_schema.Resource{
- Read: datasourceComputeSslPolicyRead,
- Schema: dsSchema,
- }
-}
-
-func datasourceComputeSslPolicyRead(d *data_source_google_compute_ssl_policy_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- policyName := d.Get("name").(string)
-
- d.SetId(data_source_google_compute_ssl_policy_fmt.Sprintf("projects/%s/global/sslPolicies/%s", project, policyName))
-
- return resourceComputeSslPolicyRead(d, meta)
-}
-
-func dataSourceGoogleComputeSubnetwork() *data_source_google_compute_subnetwork_schema.Resource {
- return &data_source_google_compute_subnetwork_schema.Resource{
- Read: dataSourceGoogleComputeSubnetworkRead,
-
- Schema: map[string]*data_source_google_compute_subnetwork_schema.Schema{
- "name": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Optional: true,
- },
- "self_link": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "description": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- },
- "ip_cidr_range": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- },
- "private_ip_google_access": {
- Type: data_source_google_compute_subnetwork_schema.TypeBool,
- Computed: true,
- },
- "secondary_ip_range": {
- Type: data_source_google_compute_subnetwork_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_subnetwork_schema.Resource{
- Schema: map[string]*data_source_google_compute_subnetwork_schema.Schema{
- "range_name": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- },
- "ip_cidr_range": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- },
- },
- },
- },
- "network": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- },
- "gateway_address": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- },
- "region": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- Optional: true,
- },
-
- "project": {
- Type: data_source_google_compute_subnetwork_schema.TypeString,
- Computed: true,
- Optional: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeSubnetworkRead(d *data_source_google_compute_subnetwork_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, region, name, err := GetRegionalResourcePropertiesFromSelfLinkOrSchema(d, config)
- if err != nil {
- return err
- }
-
- subnetwork, err := config.NewComputeClient(userAgent).Subnetworks.Get(project, region, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_subnetwork_fmt.Sprintf("Subnetwork Not Found : %s", name))
- }
-
- if err := d.Set("ip_cidr_range", subnetwork.IpCidrRange); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting ip_cidr_range: %s", err)
- }
- if err := d.Set("private_ip_google_access", subnetwork.PrivateIpGoogleAccess); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting private_ip_google_access: %s", err)
- }
- if err := d.Set("self_link", subnetwork.SelfLink); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("description", subnetwork.Description); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting description: %s", err)
- }
- if err := d.Set("gateway_address", subnetwork.GatewayAddress); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting gateway_address: %s", err)
- }
- if err := d.Set("network", subnetwork.Network); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting network: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("name", name); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("secondary_ip_range", flattenSecondaryRanges(subnetwork.SecondaryIpRanges)); err != nil {
- return data_source_google_compute_subnetwork_fmt.Errorf("Error setting secondary_ip_range: %s", err)
- }
-
- d.SetId(data_source_google_compute_subnetwork_fmt.Sprintf("projects/%s/regions/%s/subnetworks/%s", project, region, name))
- return nil
-}
-
-func flattenSecondaryRanges(secondaryRanges []*data_source_google_compute_subnetwork_compute.SubnetworkSecondaryRange) []map[string]interface{} {
- secondaryRangesSchema := make([]map[string]interface{}, 0, len(secondaryRanges))
- for _, secondaryRange := range secondaryRanges {
- data := map[string]interface{}{
- "range_name": secondaryRange.RangeName,
- "ip_cidr_range": secondaryRange.IpCidrRange,
- }
-
- secondaryRangesSchema = append(secondaryRangesSchema, data)
- }
- return secondaryRangesSchema
-}
-
-func dataSourceGoogleComputeVpnGateway() *data_source_google_compute_vpn_gateway_schema.Resource {
- return &data_source_google_compute_vpn_gateway_schema.Resource{
- Read: dataSourceGoogleComputeVpnGatewayRead,
-
- Schema: map[string]*data_source_google_compute_vpn_gateway_schema.Schema{
- "name": {
- Type: data_source_google_compute_vpn_gateway_schema.TypeString,
- Required: true,
- },
-
- "region": {
- Type: data_source_google_compute_vpn_gateway_schema.TypeString,
- Optional: true,
- Computed: true,
- },
-
- "project": {
- Type: data_source_google_compute_vpn_gateway_schema.TypeString,
- Optional: true,
- Computed: true,
- },
-
- "description": {
- Type: data_source_google_compute_vpn_gateway_schema.TypeString,
- Computed: true,
- },
-
- "self_link": {
- Type: data_source_google_compute_vpn_gateway_schema.TypeString,
- Computed: true,
- },
-
- "network": {
- Type: data_source_google_compute_vpn_gateway_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleComputeVpnGatewayRead(d *data_source_google_compute_vpn_gateway_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- name := d.Get("name").(string)
-
- vpnGatewaysService := data_source_google_compute_vpn_gateway_compute.NewTargetVpnGatewaysService(config.NewComputeClient(userAgent))
-
- gateway, err := vpnGatewaysService.Get(project, region, name).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_compute_vpn_gateway_fmt.Sprintf("VPN Gateway Not Found : %s", name))
- }
- if err := d.Set("network", ConvertSelfLinkToV1(gateway.Network)); err != nil {
- return data_source_google_compute_vpn_gateway_fmt.Errorf("Error setting network: %s", err)
- }
- if err := d.Set("region", gateway.Region); err != nil {
- return data_source_google_compute_vpn_gateway_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("self_link", gateway.SelfLink); err != nil {
- return data_source_google_compute_vpn_gateway_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("description", gateway.Description); err != nil {
- return data_source_google_compute_vpn_gateway_fmt.Errorf("Error setting description: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_vpn_gateway_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_google_compute_vpn_gateway_fmt.Sprintf("projects/%s/regions/%s/targetVpnGateways/%s", project, region, name))
- return nil
-}
-
-func dataSourceGoogleComputeZones() *data_source_google_compute_zones_schema.Resource {
- return &data_source_google_compute_zones_schema.Resource{
- Read: dataSourceGoogleComputeZonesRead,
- Schema: map[string]*data_source_google_compute_zones_schema.Schema{
- "region": {
- Type: data_source_google_compute_zones_schema.TypeString,
- Optional: true,
- },
- "project": {
- Type: data_source_google_compute_zones_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "names": {
- Type: data_source_google_compute_zones_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_compute_zones_schema.Schema{Type: data_source_google_compute_zones_schema.TypeString},
- },
- "status": {
- Type: data_source_google_compute_zones_schema.TypeString,
- Optional: true,
- ValidateFunc: data_source_google_compute_zones_validation.StringInSlice([]string{"UP", "DOWN"}, false),
- },
- },
- }
-}
-
-func dataSourceGoogleComputeZonesRead(d *data_source_google_compute_zones_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- region := config.Region
- if r, ok := d.GetOk("region"); ok {
- region = r.(string)
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- filter := ""
- if s, ok := d.GetOk("status"); ok {
- filter += data_source_google_compute_zones_fmt.Sprintf(" (status eq %s)", s)
- }
-
- zones := []string{}
- err = config.NewComputeClient(userAgent).Zones.List(project).Filter(filter).Pages(config.context, func(zl *data_source_google_compute_zones_compute.ZoneList) error {
- for _, zone := range zl.Items {
-
- if data_source_google_compute_zones_strings.HasSuffix(zone.Region, "/"+region) {
- zones = append(zones, zone.Name)
- }
- }
- return nil
- })
-
- if err != nil {
- return err
- }
-
- data_source_google_compute_zones_sort.Strings(zones)
- data_source_google_compute_zones_log.Printf("[DEBUG] Received Google Compute Zones: %q", zones)
-
- if err := d.Set("names", zones); err != nil {
- return data_source_google_compute_zones_fmt.Errorf("Error setting names: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return data_source_google_compute_zones_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_compute_zones_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_google_compute_zones_fmt.Sprintf("projects/%s/regions/%s", project, region))
-
- return nil
-}
-
-func dataSourceGoogleContainerCluster() *data_source_google_container_cluster_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceContainerCluster().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project", "location")
-
- return &data_source_google_container_cluster_schema.Resource{
- Read: datasourceContainerClusterRead,
- Schema: dsSchema,
- }
-}
-
-func datasourceContainerClusterRead(d *data_source_google_container_cluster_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- clusterName := d.Get("name").(string)
-
- location, err := getLocation(d, config)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(containerClusterFullName(project, location, clusterName))
-
- return resourceContainerClusterRead(d, meta)
-}
-
-func dataSourceGoogleContainerEngineVersions() *data_source_google_container_engine_versions_schema.Resource {
- return &data_source_google_container_engine_versions_schema.Resource{
- Read: dataSourceGoogleContainerEngineVersionsRead,
- Schema: map[string]*data_source_google_container_engine_versions_schema.Schema{
- "project": {
- Type: data_source_google_container_engine_versions_schema.TypeString,
- Optional: true,
- },
- "version_prefix": {
- Type: data_source_google_container_engine_versions_schema.TypeString,
- Optional: true,
- },
- "location": {
- Type: data_source_google_container_engine_versions_schema.TypeString,
- Optional: true,
- },
- "default_cluster_version": {
- Type: data_source_google_container_engine_versions_schema.TypeString,
- Computed: true,
- },
- "latest_master_version": {
- Type: data_source_google_container_engine_versions_schema.TypeString,
- Computed: true,
- },
- "latest_node_version": {
- Type: data_source_google_container_engine_versions_schema.TypeString,
- Computed: true,
- },
- "valid_master_versions": {
- Type: data_source_google_container_engine_versions_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_container_engine_versions_schema.Schema{Type: data_source_google_container_engine_versions_schema.TypeString},
- },
- "valid_node_versions": {
- Type: data_source_google_container_engine_versions_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_container_engine_versions_schema.Schema{Type: data_source_google_container_engine_versions_schema.TypeString},
- },
- "release_channel_default_version": {
- Type: data_source_google_container_engine_versions_schema.TypeMap,
- Computed: true,
- Elem: &data_source_google_container_engine_versions_schema.Schema{Type: data_source_google_container_engine_versions_schema.TypeString},
- },
- },
- }
-}
-
-func dataSourceGoogleContainerEngineVersionsRead(d *data_source_google_container_engine_versions_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- location, err := getLocation(d, config)
- if err != nil {
- return err
- }
- if len(location) == 0 {
- return data_source_google_container_engine_versions_fmt.Errorf("Cannot determine location: set location in this data source or at provider-level")
- }
-
- location = data_source_google_container_engine_versions_fmt.Sprintf("projects/%s/locations/%s", project, location)
- resp, err := config.NewContainerClient(userAgent).Projects.Locations.GetServerConfig(location).Do()
- if err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error retrieving available container cluster versions: %s", err.Error())
- }
-
- validMasterVersions := make([]string, 0)
- for _, v := range resp.ValidMasterVersions {
- if data_source_google_container_engine_versions_strings.HasPrefix(v, d.Get("version_prefix").(string)) {
- validMasterVersions = append(validMasterVersions, v)
- }
- }
-
- validNodeVersions := make([]string, 0)
- for _, v := range resp.ValidNodeVersions {
- if data_source_google_container_engine_versions_strings.HasPrefix(v, d.Get("version_prefix").(string)) {
- validNodeVersions = append(validNodeVersions, v)
- }
- }
-
- if err := d.Set("valid_master_versions", validMasterVersions); err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error setting valid_master_versions: %s", err)
- }
- if len(validMasterVersions) > 0 {
- if err := d.Set("latest_master_version", validMasterVersions[0]); err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error setting latest_master_version: %s", err)
- }
- }
-
- if err := d.Set("valid_node_versions", validNodeVersions); err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error setting valid_node_versions: %s", err)
- }
- if len(validNodeVersions) > 0 {
- if err := d.Set("latest_node_version", validNodeVersions[0]); err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error setting latest_node_version: %s", err)
- }
- }
-
- if err := d.Set("default_cluster_version", resp.DefaultClusterVersion); err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error setting default_cluster_version: %s", err)
- }
-
- channels := map[string]string{}
- for _, v := range resp.Channels {
- channels[v.Channel] = v.DefaultVersion
- }
- if err := d.Set("release_channel_default_version", channels); err != nil {
- return data_source_google_container_engine_versions_fmt.Errorf("Error setting release_channel_default_version: %s", err)
- }
-
- d.SetId(data_source_google_container_engine_versions_time.Now().UTC().String())
- return nil
-}
-
-func dataSourceGoogleFolder() *data_source_google_folder_schema.Resource {
- return &data_source_google_folder_schema.Resource{
- Read: dataSourceFolderRead,
- Schema: map[string]*data_source_google_folder_schema.Schema{
- "folder": {
- Type: data_source_google_folder_schema.TypeString,
- Required: true,
- },
- "folder_id": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- "name": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- "parent": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- "display_name": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- "lifecycle_state": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- "create_time": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- "lookup_organization": {
- Type: data_source_google_folder_schema.TypeBool,
- Optional: true,
- Default: false,
- },
- "organization": {
- Type: data_source_google_folder_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceFolderRead(d *data_source_google_folder_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- d.SetId(canonicalFolderName(d.Get("folder").(string)))
- if err := resourceGoogleFolderRead(d, meta); err != nil {
- return err
- }
-
- if d.Id() == "" {
- return nil
- }
-
- if v, ok := d.GetOk("lookup_organization"); ok && v.(bool) {
- organization, err := lookupOrganizationName(d.Id(), userAgent, d, config)
- if err != nil {
- return err
- }
-
- if err := d.Set("organization", organization); err != nil {
- return data_source_google_folder_fmt.Errorf("Error setting organization: %s", err)
- }
- }
-
- return nil
-}
-
-func canonicalFolderName(ba string) string {
- if data_source_google_folder_strings.HasPrefix(ba, "folders/") {
- return ba
- }
-
- return "folders/" + ba
-}
-
-func lookupOrganizationName(parent, userAgent string, d *data_source_google_folder_schema.ResourceData, config *Config) (string, error) {
- if parent == "" || data_source_google_folder_strings.HasPrefix(parent, "organizations/") {
- return parent, nil
- } else if data_source_google_folder_strings.HasPrefix(parent, "folders/") {
- parentFolder, err := getGoogleFolder(parent, userAgent, d, config)
- if err != nil {
- return "", data_source_google_folder_fmt.Errorf("Error getting parent folder '%s': %s", parent, err)
- }
- return lookupOrganizationName(parentFolder.Parent, userAgent, d, config)
- } else {
- return "", data_source_google_folder_fmt.Errorf("Unknown parent type '%s' on folder '%s'", parent, d.Id())
- }
-}
-
-func dataSourceGoogleFolderOrganizationPolicy() *data_source_google_folder_organization_policy_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceGoogleFolderOrganizationPolicy().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "folder")
- addRequiredFieldsToSchema(dsSchema, "constraint")
-
- return &data_source_google_folder_organization_policy_schema.Resource{
- Read: datasourceGoogleFolderOrganizationPolicyRead,
- Schema: dsSchema,
- }
-}
-
-func datasourceGoogleFolderOrganizationPolicyRead(d *data_source_google_folder_organization_policy_schema.ResourceData, meta interface{}) error {
-
- d.SetId(data_source_google_folder_organization_policy_fmt.Sprintf("%s/%s", d.Get("folder"), d.Get("constraint")))
-
- return resourceGoogleFolderOrganizationPolicyRead(d, meta)
-}
-
-func dataSourceGoogleComputeGlobalForwardingRule() *data_source_google_global_compute_forwarding_rule_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceComputeGlobalForwardingRule().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_global_compute_forwarding_rule_schema.Resource{
- Read: dataSourceGoogleComputeGlobalForwardingRuleRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleComputeGlobalForwardingRuleRead(d *data_source_google_global_compute_forwarding_rule_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- name := d.Get("name").(string)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- d.SetId(data_source_google_global_compute_forwarding_rule_fmt.Sprintf("projects/%s/global/forwardingRules/%s", project, name))
-
- return resourceComputeGlobalForwardingRuleRead(d, meta)
-}
-
-func dataSourceGoogleIamPolicy() *data_source_google_iam_policy_schema.Resource {
- return &data_source_google_iam_policy_schema.Resource{
- Read: dataSourceGoogleIamPolicyRead,
- Schema: map[string]*data_source_google_iam_policy_schema.Schema{
- "binding": {
- Type: data_source_google_iam_policy_schema.TypeSet,
-
- Optional: true,
- Elem: &data_source_google_iam_policy_schema.Resource{
- Schema: map[string]*data_source_google_iam_policy_schema.Schema{
- "role": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Required: true,
- },
- "members": {
- Type: data_source_google_iam_policy_schema.TypeSet,
- Required: true,
- Elem: &data_source_google_iam_policy_schema.Schema{
- Type: data_source_google_iam_policy_schema.TypeString,
- ValidateFunc: data_source_google_iam_policy_validation.StringDoesNotMatch(data_source_google_iam_policy_regexp.MustCompile("^deleted:"), "Terraform does not support IAM policies for deleted principals"),
- },
- Set: data_source_google_iam_policy_schema.HashString,
- },
- "condition": {
- Type: data_source_google_iam_policy_schema.TypeList,
- Optional: true,
- MaxItems: 1,
- Elem: &data_source_google_iam_policy_schema.Resource{
- Schema: map[string]*data_source_google_iam_policy_schema.Schema{
- "expression": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Required: true,
- },
- "title": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Required: true,
- },
- "description": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Optional: true,
- },
- },
- },
- },
- },
- },
- },
- "policy_data": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Computed: true,
- },
- "audit_config": {
- Type: data_source_google_iam_policy_schema.TypeSet,
- Optional: true,
- Elem: &data_source_google_iam_policy_schema.Resource{
- Schema: map[string]*data_source_google_iam_policy_schema.Schema{
- "service": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Required: true,
- },
- "audit_log_configs": {
- Type: data_source_google_iam_policy_schema.TypeSet,
- Required: true,
- Elem: &data_source_google_iam_policy_schema.Resource{
- Schema: map[string]*data_source_google_iam_policy_schema.Schema{
- "log_type": {
- Type: data_source_google_iam_policy_schema.TypeString,
- Required: true,
- },
- "exempted_members": {
- Type: data_source_google_iam_policy_schema.TypeSet,
- Elem: &data_source_google_iam_policy_schema.Schema{Type: data_source_google_iam_policy_schema.TypeString},
- Optional: true,
- },
- },
- },
- },
- },
- },
- },
- },
- }
-}
-
-func dataSourceGoogleIamPolicyRead(d *data_source_google_iam_policy_schema.ResourceData, meta interface{}) error {
- var policy data_source_google_iam_policy_cloudresourcemanager.Policy
- var bindings []*data_source_google_iam_policy_cloudresourcemanager.Binding
-
- bset := d.Get("binding").(*data_source_google_iam_policy_schema.Set)
- aset := d.Get("audit_config").(*data_source_google_iam_policy_schema.Set)
-
- bindings = make([]*data_source_google_iam_policy_cloudresourcemanager.Binding, bset.Len())
- policy.Bindings = bindings
-
- for i, v := range bset.List() {
- binding := v.(map[string]interface{})
- members := convertStringSet(binding["members"].(*data_source_google_iam_policy_schema.Set))
- condition := expandIamCondition(binding["condition"])
-
- data_source_google_iam_policy_sort.Strings(members)
-
- policy.Bindings[i] = &data_source_google_iam_policy_cloudresourcemanager.Binding{
- Role: binding["role"].(string),
- Members: members,
- Condition: condition,
- }
- }
-
- data_source_google_iam_policy_sort.Slice(bindings, func(i, j int) bool {
- return bindings[i].Role < bindings[j].Role
- })
-
- policy.AuditConfigs = expandAuditConfig(aset)
-
- pjson, err := data_source_google_iam_policy_json.Marshal(&policy)
- if err != nil {
-
- return err
- }
- pstring := string(pjson)
-
- if err := d.Set("policy_data", pstring); err != nil {
- return data_source_google_iam_policy_fmt.Errorf("Error setting policy_data: %s", err)
- }
- d.SetId(data_source_google_iam_policy_strconv.Itoa(hashcode(pstring)))
-
- return nil
-}
-
-func expandAuditConfig(set *data_source_google_iam_policy_schema.Set) []*data_source_google_iam_policy_cloudresourcemanager.AuditConfig {
- auditConfigs := make([]*data_source_google_iam_policy_cloudresourcemanager.AuditConfig, 0, set.Len())
- for _, v := range set.List() {
- config := v.(map[string]interface{})
-
- auditLogConfigSet := config["audit_log_configs"].(*data_source_google_iam_policy_schema.Set)
-
- auditLogConfigs := make([]*data_source_google_iam_policy_cloudresourcemanager.AuditLogConfig, 0, auditLogConfigSet.Len())
- for _, y := range auditLogConfigSet.List() {
- logConfig := y.(map[string]interface{})
- auditLogConfigs = append(auditLogConfigs, &data_source_google_iam_policy_cloudresourcemanager.AuditLogConfig{
- LogType: logConfig["log_type"].(string),
- ExemptedMembers: convertStringArr(logConfig["exempted_members"].(*data_source_google_iam_policy_schema.Set).List()),
- })
- }
- auditConfigs = append(auditConfigs, &data_source_google_iam_policy_cloudresourcemanager.AuditConfig{
- Service: config["service"].(string),
- AuditLogConfigs: auditLogConfigs,
- })
- }
- return auditConfigs
-}
-
-func dataSourceGoogleIamRole() *data_source_google_iam_role_schema.Resource {
- return &data_source_google_iam_role_schema.Resource{
- Read: dataSourceGoogleIamRoleRead,
- Schema: map[string]*data_source_google_iam_role_schema.Schema{
- "name": {
- Type: data_source_google_iam_role_schema.TypeString,
- Required: true,
- },
- "title": {
- Type: data_source_google_iam_role_schema.TypeString,
- Computed: true,
- },
- "included_permissions": {
- Type: data_source_google_iam_role_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_iam_role_schema.Schema{Type: data_source_google_iam_role_schema.TypeString},
- },
- "stage": {
- Type: data_source_google_iam_role_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleIamRoleRead(d *data_source_google_iam_role_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- roleName := d.Get("name").(string)
- role, err := config.NewIamClient(userAgent).Roles.Get(roleName).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_iam_role_fmt.Sprintf("Error reading IAM Role %s: %s", roleName, err))
- }
-
- d.SetId(role.Name)
- if err := d.Set("title", role.Title); err != nil {
- return data_source_google_iam_role_fmt.Errorf("Error setting title: %s", err)
- }
- if err := d.Set("stage", role.Stage); err != nil {
- return data_source_google_iam_role_fmt.Errorf("Error setting stage: %s", err)
- }
- if err := d.Set("included_permissions", role.IncludedPermissions); err != nil {
- return data_source_google_iam_role_fmt.Errorf("Error setting included_permissions: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleIamTestablePermissions() *data_source_google_iam_testable_permissions_schema.Resource {
- return &data_source_google_iam_testable_permissions_schema.Resource{
- Read: dataSourceGoogleIamTestablePermissionsRead,
- Schema: map[string]*data_source_google_iam_testable_permissions_schema.Schema{
- "full_resource_name": {
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- Required: true,
- },
- "stages": {
- Type: data_source_google_iam_testable_permissions_schema.TypeList,
- Optional: true,
- Elem: &data_source_google_iam_testable_permissions_schema.Schema{
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- ValidateFunc: data_source_google_iam_testable_permissions_validation.StringInSlice([]string{"ALPHA", "BETA", "GA", "DEPRECATED"}, true),
- },
- },
- "custom_support_level": {
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- Optional: true,
- Default: "SUPPORTED",
- ValidateFunc: data_source_google_iam_testable_permissions_validation.StringInSlice([]string{"NOT_SUPPORTED", "SUPPORTED", "TESTING"}, true),
- },
- "permissions": {
- Type: data_source_google_iam_testable_permissions_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_iam_testable_permissions_schema.Resource{
- Schema: map[string]*data_source_google_iam_testable_permissions_schema.Schema{
- "name": {
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- Computed: true,
- },
- "title": {
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- Computed: true,
- },
- "custom_support_level": {
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- Computed: true,
- },
- "stage": {
- Type: data_source_google_iam_testable_permissions_schema.TypeString,
- Computed: true,
- },
- "api_disabled": {
- Type: data_source_google_iam_testable_permissions_schema.TypeBool,
- Computed: true,
- },
- },
- },
- },
- },
- }
-}
-
-func dataSourceGoogleIamTestablePermissionsRead(d *data_source_google_iam_testable_permissions_schema.ResourceData, meta interface{}) (err error) {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- body := make(map[string]interface{})
- body["pageSize"] = 500
- permissions := make([]map[string]interface{}, 0)
-
- custom_support_level := data_source_google_iam_testable_permissions_strings.ToUpper(d.Get("custom_support_level").(string))
- stages := []string{}
- for _, e := range d.Get("stages").([]interface{}) {
- stages = append(stages, data_source_google_iam_testable_permissions_strings.ToUpper(e.(string)))
- }
- if len(stages) == 0 {
-
- stages = append(stages, "GA")
- }
- for {
- url := "https://iam.googleapis.com/v1/permissions:queryTestablePermissions"
- body["fullResourceName"] = d.Get("full_resource_name").(string)
- res, err := sendRequest(config, "POST", "", url, userAgent, body)
- if err != nil {
- return data_source_google_iam_testable_permissions_fmt.Errorf("Error retrieving permissions: %s", err)
- }
-
- pagePermissions := flattenTestablePermissionsList(res["permissions"], custom_support_level, stages)
- permissions = append(permissions, pagePermissions...)
- pToken, ok := res["nextPageToken"]
- if ok && pToken != nil && pToken.(string) != "" {
- body["pageToken"] = pToken.(string)
- } else {
- break
- }
- }
-
- if err = d.Set("permissions", permissions); err != nil {
- return data_source_google_iam_testable_permissions_fmt.Errorf("Error retrieving permissions: %s", err)
- }
-
- d.SetId(d.Get("full_resource_name").(string))
- return nil
-}
-
-func flattenTestablePermissionsList(v interface{}, custom_support_level string, stages []string) []map[string]interface{} {
- if v == nil {
- return make([]map[string]interface{}, 0)
- }
-
- ls := v.([]interface{})
- permissions := make([]map[string]interface{}, 0, len(ls))
- for _, raw := range ls {
- p := raw.(map[string]interface{})
-
- if _, ok := p["name"]; ok {
- var csl bool
- if custom_support_level == "SUPPORTED" {
- csl = p["customRolesSupportLevel"] == nil || p["customRolesSupportLevel"] == "SUPPORTED"
- } else {
- csl = p["customRolesSupportLevel"] == custom_support_level
- }
- if csl && p["stage"] != nil && stringInSlice(stages, p["stage"].(string)) {
- permissions = append(permissions, map[string]interface{}{
- "name": p["name"],
- "title": p["title"],
- "stage": p["stage"],
- "api_disabled": p["apiDisabled"],
- "custom_support_level": p["customRolesSupportLevel"],
- })
- }
- }
- }
-
- return permissions
-}
-
-func dataSourceGoogleKmsCryptoKey() *data_source_google_kms_crypto_key_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceKMSCryptoKey().Schema)
- addRequiredFieldsToSchema(dsSchema, "name")
- addRequiredFieldsToSchema(dsSchema, "key_ring")
-
- return &data_source_google_kms_crypto_key_schema.Resource{
- Read: dataSourceGoogleKmsCryptoKeyRead,
- Schema: dsSchema,
- }
-
-}
-
-func dataSourceGoogleKmsCryptoKeyRead(d *data_source_google_kms_crypto_key_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- keyRingId, err := parseKmsKeyRingId(d.Get("key_ring").(string), config)
- if err != nil {
- return err
- }
-
- cryptoKeyId := kmsCryptoKeyId{
- KeyRingId: *keyRingId,
- Name: d.Get("name").(string),
- }
-
- d.SetId(cryptoKeyId.cryptoKeyId())
-
- return resourceKMSCryptoKeyRead(d, meta)
-}
-
-func dataSourceGoogleKmsCryptoKeyVersion() *data_source_google_kms_crypto_key_version_schema.Resource {
- return &data_source_google_kms_crypto_key_version_schema.Resource{
- Read: dataSourceGoogleKmsCryptoKeyVersionRead,
- Schema: map[string]*data_source_google_kms_crypto_key_version_schema.Schema{
- "crypto_key": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "name": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Computed: true,
- },
- "version": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeInt,
- Optional: true,
- Default: 1,
- },
- "algorithm": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Computed: true,
- },
- "protection_level": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Computed: true,
- },
- "state": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Computed: true,
- },
- "public_key": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_kms_crypto_key_version_schema.Resource{
- Schema: map[string]*data_source_google_kms_crypto_key_version_schema.Schema{
- "algorithm": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Computed: true,
- },
- "pem": {
- Type: data_source_google_kms_crypto_key_version_schema.TypeString,
- Computed: true,
- },
- },
- },
- },
- },
- }
-}
-
-func dataSourceGoogleKmsCryptoKeyVersionRead(d *data_source_google_kms_crypto_key_version_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- url, err := replaceVars(d, config, "{{KMSBasePath}}{{crypto_key}}/cryptoKeyVersions/{{version}}")
- if err != nil {
- return err
- }
-
- data_source_google_kms_crypto_key_version_log.Printf("[DEBUG] Getting attributes for CryptoKeyVersion: %#v", url)
-
- cryptoKeyId, err := parseKmsCryptoKeyId(d.Get("crypto_key").(string), config)
- if err != nil {
- return err
- }
- res, err := sendRequest(config, "GET", cryptoKeyId.KeyRingId.Project, url, userAgent, nil)
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_kms_crypto_key_version_fmt.Sprintf("KmsCryptoKeyVersion %q", d.Id()))
- }
-
- if err := d.Set("version", flattenKmsCryptoKeyVersionVersion(res["name"], d)); err != nil {
- return data_source_google_kms_crypto_key_version_fmt.Errorf("Error setting CryptoKeyVersion: %s", err)
- }
- if err := d.Set("name", flattenKmsCryptoKeyVersionName(res["name"], d)); err != nil {
- return data_source_google_kms_crypto_key_version_fmt.Errorf("Error setting CryptoKeyVersion: %s", err)
- }
- if err := d.Set("state", flattenKmsCryptoKeyVersionState(res["state"], d)); err != nil {
- return data_source_google_kms_crypto_key_version_fmt.Errorf("Error setting CryptoKeyVersion: %s", err)
- }
- if err := d.Set("protection_level", flattenKmsCryptoKeyVersionProtectionLevel(res["protectionLevel"], d)); err != nil {
- return data_source_google_kms_crypto_key_version_fmt.Errorf("Error setting CryptoKeyVersion: %s", err)
- }
- if err := d.Set("algorithm", flattenKmsCryptoKeyVersionAlgorithm(res["algorithm"], d)); err != nil {
- return data_source_google_kms_crypto_key_version_fmt.Errorf("Error setting CryptoKeyVersion: %s", err)
- }
-
- url, err = replaceVars(d, config, "{{KMSBasePath}}{{crypto_key}}")
- if err != nil {
- return err
- }
-
- data_source_google_kms_crypto_key_version_log.Printf("[DEBUG] Getting purpose of CryptoKey: %#v", url)
- res, err = sendRequest(config, "GET", cryptoKeyId.KeyRingId.Project, url, userAgent, nil)
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_kms_crypto_key_version_fmt.Sprintf("KmsCryptoKey %q", d.Id()))
- }
-
- if res["purpose"] == "ASYMMETRIC_SIGN" || res["purpose"] == "ASYMMETRIC_DECRYPT" {
- url, err = replaceVars(d, config, "{{KMSBasePath}}{{crypto_key}}/cryptoKeyVersions/{{version}}/publicKey")
- if err != nil {
- return err
- }
- data_source_google_kms_crypto_key_version_log.Printf("[DEBUG] Getting public key of CryptoKeyVersion: %#v", url)
-
- res, err = sendRequestWithTimeout(config, "GET", cryptoKeyId.KeyRingId.Project, url, userAgent, nil, d.Timeout(data_source_google_kms_crypto_key_version_schema.TimeoutRead), isCryptoKeyVersionsPendingGeneration)
-
- if err != nil {
- data_source_google_kms_crypto_key_version_log.Printf("Error generating public key: %s", err)
- return err
- }
-
- if err := d.Set("public_key", flattenKmsCryptoKeyVersionPublicKey(res, d)); err != nil {
- return data_source_google_kms_crypto_key_version_fmt.Errorf("Error setting CryptoKeyVersion public key: %s", err)
- }
- }
- d.SetId(data_source_google_kms_crypto_key_version_fmt.Sprintf("//cloudkms.googleapis.com/v1/%s/cryptoKeyVersions/%d", d.Get("crypto_key"), d.Get("version")))
-
- return nil
-}
-
-func flattenKmsCryptoKeyVersionVersion(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- parts := data_source_google_kms_crypto_key_version_strings.Split(v.(string), "/")
- version := parts[len(parts)-1]
-
- if intVal, err := data_source_google_kms_crypto_key_version_strconv.ParseInt(version, 10, 64); err == nil {
- return intVal
- }
- return v
-}
-
-func flattenKmsCryptoKeyVersionName(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- return v
-}
-
-func flattenKmsCryptoKeyVersionState(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- return v
-}
-
-func flattenKmsCryptoKeyVersionProtectionLevel(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- return v
-}
-
-func flattenKmsCryptoKeyVersionAlgorithm(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- return v
-}
-
-func flattenKmsCryptoKeyVersionPublicKey(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- if v == nil {
- return nil
- }
- original := v.(map[string]interface{})
- if len(original) == 0 {
- return nil
- }
- transformed := make(map[string]interface{})
- transformed["pem"] =
- flattenKmsCryptoKeyVersionPublicKeyPem(original["pem"], d)
- transformed["algorithm"] =
- flattenKmsCryptoKeyVersionPublicKeyAlgorithm(original["algorithm"], d)
- return []interface{}{transformed}
-}
-
-func flattenKmsCryptoKeyVersionPublicKeyPem(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- return v
-}
-
-func flattenKmsCryptoKeyVersionPublicKeyAlgorithm(v interface{}, d *data_source_google_kms_crypto_key_version_schema.ResourceData) interface{} {
- return v
-}
-
-func dataSourceGoogleKmsKeyRing() *data_source_google_kms_key_ring_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceKMSKeyRing().Schema)
- addRequiredFieldsToSchema(dsSchema, "name")
- addRequiredFieldsToSchema(dsSchema, "location")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_google_kms_key_ring_schema.Resource{
- Read: dataSourceGoogleKmsKeyRingRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleKmsKeyRingRead(d *data_source_google_kms_key_ring_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- keyRingId := kmsKeyRingId{
- Name: d.Get("name").(string),
- Location: d.Get("location").(string),
- Project: project,
- }
- d.SetId(keyRingId.keyRingId())
-
- return resourceKMSKeyRingRead(d, meta)
-}
-
-func dataSourceGoogleKmsSecret() *data_source_google_kms_secret_schema.Resource {
- return &data_source_google_kms_secret_schema.Resource{
- Read: dataSourceGoogleKmsSecretRead,
- Schema: map[string]*data_source_google_kms_secret_schema.Schema{
- "crypto_key": {
- Type: data_source_google_kms_secret_schema.TypeString,
- Required: true,
- },
- "ciphertext": {
- Type: data_source_google_kms_secret_schema.TypeString,
- Required: true,
- },
- "plaintext": {
- Type: data_source_google_kms_secret_schema.TypeString,
- Computed: true,
- Sensitive: true,
- },
- "additional_authenticated_data": {
- Type: data_source_google_kms_secret_schema.TypeString,
- Optional: true,
- },
- },
- }
-}
-
-func dataSourceGoogleKmsSecretRead(d *data_source_google_kms_secret_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- cryptoKeyId, err := parseKmsCryptoKeyId(d.Get("crypto_key").(string), config)
-
- if err != nil {
- return err
- }
-
- ciphertext := d.Get("ciphertext").(string)
-
- kmsDecryptRequest := &data_source_google_kms_secret_cloudkms.DecryptRequest{
- Ciphertext: ciphertext,
- }
-
- if aad, ok := d.GetOk("additional_authenticated_data"); ok {
- kmsDecryptRequest.AdditionalAuthenticatedData = aad.(string)
- }
-
- decryptResponse, err := config.NewKmsClient(userAgent).Projects.Locations.KeyRings.CryptoKeys.Decrypt(cryptoKeyId.cryptoKeyId(), kmsDecryptRequest).Do()
-
- if err != nil {
- return data_source_google_kms_secret_fmt.Errorf("Error decrypting ciphertext: %s", err)
- }
-
- plaintext, err := data_source_google_kms_secret_base64.StdEncoding.DecodeString(decryptResponse.Plaintext)
-
- if err != nil {
- return data_source_google_kms_secret_fmt.Errorf("Error decoding base64 response: %s", err)
- }
-
- data_source_google_kms_secret_log.Printf("[INFO] Successfully decrypted ciphertext: %s", ciphertext)
-
- if err := d.Set("plaintext", string(plaintext[:])); err != nil {
- return data_source_google_kms_secret_fmt.Errorf("Error setting plaintext: %s", err)
- }
- d.SetId(data_source_google_kms_secret_fmt.Sprintf("%s:%s", d.Get("crypto_key").(string), ciphertext))
-
- return nil
-}
-
-func dataSourceGoogleKmsSecretCiphertext() *data_source_google_kms_secret_ciphertext_schema.Resource {
- return &data_source_google_kms_secret_ciphertext_schema.Resource{
- DeprecationMessage: "Use the google_kms_secret_ciphertext resource instead.",
- Read: dataSourceGoogleKmsSecretCiphertextRead,
- Schema: map[string]*data_source_google_kms_secret_ciphertext_schema.Schema{
- "crypto_key": {
- Type: data_source_google_kms_secret_ciphertext_schema.TypeString,
- Required: true,
- },
- "ciphertext": {
- Type: data_source_google_kms_secret_ciphertext_schema.TypeString,
- Computed: true,
- },
- "plaintext": {
- Type: data_source_google_kms_secret_ciphertext_schema.TypeString,
- Required: true,
- Sensitive: true,
- },
- },
- }
-}
-
-func dataSourceGoogleKmsSecretCiphertextRead(d *data_source_google_kms_secret_ciphertext_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- cryptoKeyId, err := parseKmsCryptoKeyId(d.Get("crypto_key").(string), config)
-
- if err != nil {
- return err
- }
-
- plaintext := data_source_google_kms_secret_ciphertext_base64.StdEncoding.EncodeToString([]byte(d.Get("plaintext").(string)))
-
- kmsEncryptRequest := &data_source_google_kms_secret_ciphertext_cloudkms.EncryptRequest{
- Plaintext: plaintext,
- }
-
- encryptCall := config.NewKmsClient(userAgent).Projects.Locations.KeyRings.CryptoKeys.Encrypt(cryptoKeyId.cryptoKeyId(), kmsEncryptRequest)
- if config.UserProjectOverride {
- encryptCall.Header().Set("X-Goog-User-Project", cryptoKeyId.KeyRingId.Project)
- }
- encryptResponse, err := encryptCall.Do()
-
- if err != nil {
- return data_source_google_kms_secret_ciphertext_fmt.Errorf("Error encrypting plaintext: %s", err)
- }
-
- data_source_google_kms_secret_ciphertext_log.Printf("[INFO] Successfully encrypted plaintext")
-
- if err := d.Set("ciphertext", encryptResponse.Ciphertext); err != nil {
- return data_source_google_kms_secret_ciphertext_fmt.Errorf("Error setting ciphertext: %s", err)
- }
- d.SetId(d.Get("crypto_key").(string))
-
- return nil
-}
-
-func dataSourceGoogleMonitoringUptimeCheckIps() *data_source_google_monitoring_uptime_check_ips_schema.Resource {
- return &data_source_google_monitoring_uptime_check_ips_schema.Resource{
- Read: dataSourceGoogleMonitoringUptimeCheckIpsRead,
-
- Schema: map[string]*data_source_google_monitoring_uptime_check_ips_schema.Schema{
- "uptime_check_ips": {
- Type: data_source_google_monitoring_uptime_check_ips_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_monitoring_uptime_check_ips_schema.Resource{
- Schema: map[string]*data_source_google_monitoring_uptime_check_ips_schema.Schema{
- "region": {
- Type: data_source_google_monitoring_uptime_check_ips_schema.TypeString,
- Computed: true,
- },
- "location": {
- Type: data_source_google_monitoring_uptime_check_ips_schema.TypeString,
- Computed: true,
- },
- "ip_address": {
- Type: data_source_google_monitoring_uptime_check_ips_schema.TypeString,
- Computed: true,
- },
- },
- },
- },
- },
- }
-}
-
-func dataSourceGoogleMonitoringUptimeCheckIpsRead(d *data_source_google_monitoring_uptime_check_ips_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- url := "https://monitoring.googleapis.com/v3/uptimeCheckIps"
-
- uptimeCheckIps, err := paginatedListRequest("", url, userAgent, config, flattenUptimeCheckIpsList)
- if err != nil {
- return data_source_google_monitoring_uptime_check_ips_fmt.Errorf("Error retrieving monitoring uptime check ips: %s", err)
- }
-
- if err := d.Set("uptime_check_ips", uptimeCheckIps); err != nil {
- return data_source_google_monitoring_uptime_check_ips_fmt.Errorf("Error retrieving monitoring uptime check ips: %s", err)
- }
- d.SetId("uptime_check_ips_id")
- return nil
-}
-
-func flattenUptimeCheckIpsList(resp map[string]interface{}) []interface{} {
- ipObjList := resp["uptimeCheckIps"].([]interface{})
- uptimeCheckIps := make([]interface{}, len(ipObjList))
- for i, u := range ipObjList {
- ipObj := u.(map[string]interface{})
- uptimeCheckIps[i] = map[string]interface{}{
- "region": ipObj["region"],
- "location": ipObj["location"],
- "ip_address": ipObj["ipAddress"],
- }
- }
- return uptimeCheckIps
-}
-
-type googRanges struct {
- SyncToken string `json:"syncToken"`
- CreationTime string `json:"creationTime"`
- Prefixes []prefixes `json:"prefixes"`
-}
-
-type prefixes struct {
- Ipv4Prefix string `json:"ipv4Prefix"`
- Ipv6Prefix string `json:"ipv6Prefix"`
-}
-
-func dataSourceGoogleNetblockIpRanges() *data_source_google_netblock_ip_ranges_schema.Resource {
- return &data_source_google_netblock_ip_ranges_schema.Resource{
- Read: dataSourceGoogleNetblockIpRangesRead,
-
- Schema: map[string]*data_source_google_netblock_ip_ranges_schema.Schema{
- "range_type": {
- Type: data_source_google_netblock_ip_ranges_schema.TypeString,
- Optional: true,
- Default: "cloud-netblocks",
- },
- "cidr_blocks": {
- Type: data_source_google_netblock_ip_ranges_schema.TypeList,
- Elem: &data_source_google_netblock_ip_ranges_schema.Schema{Type: data_source_google_netblock_ip_ranges_schema.TypeString},
- Computed: true,
- },
- "cidr_blocks_ipv4": {
- Type: data_source_google_netblock_ip_ranges_schema.TypeList,
- Elem: &data_source_google_netblock_ip_ranges_schema.Schema{Type: data_source_google_netblock_ip_ranges_schema.TypeString},
- Computed: true,
- },
- "cidr_blocks_ipv6": {
- Type: data_source_google_netblock_ip_ranges_schema.TypeList,
- Elem: &data_source_google_netblock_ip_ranges_schema.Schema{Type: data_source_google_netblock_ip_ranges_schema.TypeString},
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleNetblockIpRangesRead(d *data_source_google_netblock_ip_ranges_schema.ResourceData, meta interface{}) error {
-
- rt := d.Get("range_type").(string)
- CidrBlocks := make(map[string][]string)
-
- switch rt {
-
- case "cloud-netblocks":
-
- const CLOUD_NETBLOCK_URL = "https://www.gstatic.com/ipranges/cloud.json"
- CidrBlocks, err := getCidrBlocksFromUrl(CLOUD_NETBLOCK_URL)
-
- if err != nil {
- return err
- }
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv6", CidrBlocks["cidr_blocks_ipv6"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv6: %s", err)
- }
- case "google-netblocks":
-
- const GOOGLE_NETBLOCK_URL = "https://www.gstatic.com/ipranges/goog.json"
- CidrBlocks, err := getCidrBlocksFromUrl(GOOGLE_NETBLOCK_URL)
-
- if err != nil {
- return err
- }
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv6", CidrBlocks["cidr_blocks_ipv6"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv6: %s", err)
- }
-
- case "restricted-googleapis":
-
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "199.36.153.4/30")
- CidrBlocks["cidr_blocks"] = CidrBlocks["cidr_blocks_ipv4"]
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- case "private-googleapis":
-
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "199.36.153.8/30")
- CidrBlocks["cidr_blocks"] = CidrBlocks["cidr_blocks_ipv4"]
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- case "dns-forwarders":
-
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "35.199.192.0/19")
- CidrBlocks["cidr_blocks"] = CidrBlocks["cidr_blocks_ipv4"]
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- case "iap-forwarders":
-
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "35.235.240.0/20")
- CidrBlocks["cidr_blocks"] = CidrBlocks["cidr_blocks_ipv4"]
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- case "health-checkers":
-
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "35.191.0.0/16")
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "130.211.0.0/22")
- CidrBlocks["cidr_blocks"] = CidrBlocks["cidr_blocks_ipv4"]
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- case "legacy-health-checkers":
-
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "35.191.0.0/16")
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "209.85.152.0/22")
- CidrBlocks["cidr_blocks_ipv4"] = append(CidrBlocks["cidr_blocks_ipv4"], "209.85.204.0/22")
- CidrBlocks["cidr_blocks"] = CidrBlocks["cidr_blocks_ipv4"]
- if err := d.Set("cidr_blocks", CidrBlocks["cidr_blocks"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks: %s", err)
- }
- if err := d.Set("cidr_blocks_ipv4", CidrBlocks["cidr_blocks_ipv4"]); err != nil {
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Error setting cidr_blocks_ipv4: %s", err)
- }
- default:
- return data_source_google_netblock_ip_ranges_fmt.Errorf("Unknown range_type: %s", rt)
- }
-
- d.SetId("netblock-ip-ranges-" + rt)
-
- return nil
-}
-
-func getCidrBlocksFromUrl(url string) (map[string][]string, error) {
- cidrBlocks := make(map[string][]string)
-
- response, err := data_source_google_netblock_ip_ranges_http.Get(url)
-
- if err != nil {
- return nil, data_source_google_netblock_ip_ranges_fmt.Errorf("Error: %s", err)
- }
-
- defer response.Body.Close()
- body, err := data_source_google_netblock_ip_ranges_ioutil.ReadAll(response.Body)
-
- if err != nil {
- return nil, data_source_google_netblock_ip_ranges_fmt.Errorf("Error to retrieve the CIDR list: %s", err)
- }
-
- ranges := googRanges{}
- jsonErr := data_source_google_netblock_ip_ranges_json.Unmarshal(body, &ranges)
- if jsonErr != nil {
- return nil, data_source_google_netblock_ip_ranges_fmt.Errorf("Error reading JSON list: %s", jsonErr)
- }
-
- for _, element := range ranges.Prefixes {
-
- if len(element.Ipv4Prefix) > 0 {
- cidrBlocks["cidr_blocks_ipv4"] = append(cidrBlocks["cidr_blocks_ipv4"], element.Ipv4Prefix)
- cidrBlocks["cidr_blocks"] = append(cidrBlocks["cidr_blocks"], element.Ipv4Prefix)
- } else if len(element.Ipv6Prefix) > 0 {
- cidrBlocks["cidr_blocks_ipv6"] = append(cidrBlocks["cidr_blocks_ipv6"], element.Ipv6Prefix)
- cidrBlocks["cidr_blocks"] = append(cidrBlocks["cidr_blocks"], element.Ipv6Prefix)
- }
-
- }
-
- return cidrBlocks, nil
-}
-
-func dataSourceGoogleOrganization() *data_source_google_organization_schema.Resource {
- return &data_source_google_organization_schema.Resource{
- Read: dataSourceOrganizationRead,
- Schema: map[string]*data_source_google_organization_schema.Schema{
- "domain": {
- Type: data_source_google_organization_schema.TypeString,
- Optional: true,
- Computed: true,
- ConflictsWith: []string{"organization"},
- },
- "organization": {
- Type: data_source_google_organization_schema.TypeString,
- Optional: true,
- ConflictsWith: []string{"domain"},
- },
- "org_id": {
- Type: data_source_google_organization_schema.TypeString,
- Computed: true,
- },
- "name": {
- Type: data_source_google_organization_schema.TypeString,
- Computed: true,
- },
- "directory_customer_id": {
- Type: data_source_google_organization_schema.TypeString,
- Computed: true,
- },
- "create_time": {
- Type: data_source_google_organization_schema.TypeString,
- Computed: true,
- },
- "lifecycle_state": {
- Type: data_source_google_organization_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceOrganizationRead(d *data_source_google_organization_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- var organization *data_source_google_organization_cloudresourcemanager.Organization
- if v, ok := d.GetOk("domain"); ok {
- filter := data_source_google_organization_fmt.Sprintf("domain=%s", v.(string))
- var resp *data_source_google_organization_cloudresourcemanager.SearchOrganizationsResponse
- err := retryTimeDuration(func() (err error) {
- resp, err = config.NewResourceManagerClient(userAgent).Organizations.Search(&data_source_google_organization_cloudresourcemanager.SearchOrganizationsRequest{
- Filter: filter,
- }).Do()
- return err
- }, d.Timeout(data_source_google_organization_schema.TimeoutRead))
- if err != nil {
- return data_source_google_organization_fmt.Errorf("Error reading organization: %s", err)
- }
-
- if len(resp.Organizations) == 0 {
- return data_source_google_organization_fmt.Errorf("Organization not found: %s", v)
- }
-
- if len(resp.Organizations) > 1 {
-
- for _, org := range resp.Organizations {
- if org.DisplayName == v.(string) {
- organization = org
- break
- }
- }
- if organization == nil {
- return data_source_google_organization_fmt.Errorf("Received multiple organizations in the response, but could not find an exact domain match.")
- }
- } else {
- organization = resp.Organizations[0]
- }
-
- } else if v, ok := d.GetOk("organization"); ok {
- var resp *data_source_google_organization_cloudresourcemanager.Organization
- err := retryTimeDuration(func() (err error) {
- resp, err = config.NewResourceManagerClient(userAgent).Organizations.Get(canonicalOrganizationName(v.(string))).Do()
- return err
- }, d.Timeout(data_source_google_organization_schema.TimeoutRead))
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_organization_fmt.Sprintf("Organization Not Found : %s", v))
- }
-
- organization = resp
- } else {
- return data_source_google_organization_fmt.Errorf("one of domain or organization must be set")
- }
-
- d.SetId(organization.Name)
- if err := d.Set("name", organization.Name); err != nil {
- return data_source_google_organization_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("org_id", GetResourceNameFromSelfLink(organization.Name)); err != nil {
- return data_source_google_organization_fmt.Errorf("Error setting org_id: %s", err)
- }
- if err := d.Set("domain", organization.DisplayName); err != nil {
- return data_source_google_organization_fmt.Errorf("Error setting domain: %s", err)
- }
- if err := d.Set("create_time", organization.CreationTime); err != nil {
- return data_source_google_organization_fmt.Errorf("Error setting create_time: %s", err)
- }
- if err := d.Set("lifecycle_state", organization.LifecycleState); err != nil {
- return data_source_google_organization_fmt.Errorf("Error setting lifecycle_state: %s", err)
- }
- if organization.Owner != nil {
- if err := d.Set("directory_customer_id", organization.Owner.DirectoryCustomerId); err != nil {
- return data_source_google_organization_fmt.Errorf("Error setting directory_customer_id: %s", err)
- }
- }
-
- return nil
-}
-
-func canonicalOrganizationName(ba string) string {
- if data_source_google_organization_strings.HasPrefix(ba, "organizations/") {
- return ba
- }
-
- return "organizations/" + ba
-}
-
-func dataSourceGoogleProject() *data_source_google_project_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceGoogleProject().Schema)
-
- addOptionalFieldsToSchema(dsSchema, "project_id")
-
- return &data_source_google_project_schema.Resource{
- Read: datasourceGoogleProjectRead,
- Schema: dsSchema,
- }
-}
-
-func datasourceGoogleProjectRead(d *data_source_google_project_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- if v, ok := d.GetOk("project_id"); ok {
- project := v.(string)
- d.SetId(data_source_google_project_fmt.Sprintf("projects/%s", project))
- } else {
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
- d.SetId(data_source_google_project_fmt.Sprintf("projects/%s", project))
- }
-
- return resourceGoogleProjectRead(d, meta)
-}
-
-func dataSourceGoogleProjectOrganizationPolicy() *data_source_google_project_organization_policy_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceGoogleProjectOrganizationPolicy().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "project")
- addRequiredFieldsToSchema(dsSchema, "constraint")
-
- return &data_source_google_project_organization_policy_schema.Resource{
- Read: datasourceGoogleProjectOrganizationPolicyRead,
- Schema: dsSchema,
- }
-}
-
-func datasourceGoogleProjectOrganizationPolicyRead(d *data_source_google_project_organization_policy_schema.ResourceData, meta interface{}) error {
-
- d.SetId(data_source_google_project_organization_policy_fmt.Sprintf("%s:%s", d.Get("project"), d.Get("constraint")))
-
- return resourceGoogleProjectOrganizationPolicyRead(d, meta)
-}
-
-func dataSourceGoogleProjects() *data_source_google_projects_schema.Resource {
- return &data_source_google_projects_schema.Resource{
- Read: datasourceGoogleProjectsRead,
- Schema: map[string]*data_source_google_projects_schema.Schema{
- "filter": {
- Type: data_source_google_projects_schema.TypeString,
- Required: true,
- },
- "projects": {
- Type: data_source_google_projects_schema.TypeList,
- Computed: true,
- Elem: &data_source_google_projects_schema.Resource{
- Schema: map[string]*data_source_google_projects_schema.Schema{
- "project_id": {
- Type: data_source_google_projects_schema.TypeString,
- Computed: true,
- },
- "create_time": {
- Type: data_source_google_projects_schema.TypeString,
- Computed: true,
- },
- "labels": {
- Type: data_source_google_projects_schema.TypeMap,
- Computed: true,
- Elem: &data_source_google_projects_schema.Schema{Type: data_source_google_projects_schema.TypeString},
- Description: `A set of key/value label pairs assigned on a project.`,
- },
- "parent": {
- Type: data_source_google_projects_schema.TypeMap,
- Computed: true,
- Elem: &data_source_google_projects_schema.Schema{Type: data_source_google_projects_schema.TypeString},
- Description: `An optional reference to a parent Resource.`,
- },
- "number": {
- Type: data_source_google_projects_schema.TypeString,
- Computed: true,
- Description: `The numeric identifier of the project.`,
- },
- "lifecycle_state": {
- Type: data_source_google_projects_schema.TypeString,
- Computed: true,
- Description: `The numeric identifier of the project.`,
- },
- "name": {
- Type: data_source_google_projects_schema.TypeString,
- Computed: true,
- Description: `The optional user-assigned display name of the Project.`,
- },
- },
- },
- },
- },
- }
-}
-
-func datasourceGoogleProjectsRead(d *data_source_google_projects_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- params := make(map[string]string)
- projects := make([]map[string]interface{}, 0)
-
- for {
- params["filter"] = d.Get("filter").(string)
- url := "https://cloudresourcemanager.googleapis.com/v1/projects"
-
- url, err := addQueryParams(url, params)
- if err != nil {
- return err
- }
-
- res, err := sendRequest(config, "GET", "", url, userAgent, nil)
- if err != nil {
- return data_source_google_projects_fmt.Errorf("Error retrieving projects: %s", err)
- }
-
- pageProjects := flattenDatasourceGoogleProjectsList(res["projects"])
- projects = append(projects, pageProjects...)
-
- pToken, ok := res["nextPageToken"]
- if ok && pToken != nil && pToken.(string) != "" {
- params["pageToken"] = pToken.(string)
- } else {
- break
- }
- }
-
- if err := d.Set("projects", projects); err != nil {
- return data_source_google_projects_fmt.Errorf("Error retrieving projects: %s", err)
- }
-
- d.SetId(d.Get("filter").(string))
-
- return nil
-}
-
-func flattenDatasourceGoogleProjectsList(v interface{}) []map[string]interface{} {
- if v == nil {
- return make([]map[string]interface{}, 0)
- }
-
- ls := v.([]interface{})
- projects := make([]map[string]interface{}, 0, len(ls))
- for _, raw := range ls {
- p := raw.(map[string]interface{})
-
- var mId, mNumber, mLabels, mLifecycleState, mName, mCreateTime, mParent interface{}
- if pId, ok := p["projectId"]; ok {
- mId = pId
- }
- if pNumber, ok := p["projectNumber"]; ok {
- mNumber = pNumber
- }
- if pName, ok := p["name"]; ok {
- mName = pName
- }
- if pLabels, ok := p["labels"]; ok {
- mLabels = pLabels
- }
- if pLifecycleState, ok := p["lifecycleState"]; ok {
- mLifecycleState = pLifecycleState
- }
- if pCreateTime, ok := p["createTime"]; ok {
- mCreateTime = pCreateTime
- }
- if pParent, ok := p["parent"]; ok {
- mParent = pParent
- }
- projects = append(projects, map[string]interface{}{
- "project_id": mId,
- "number": mNumber,
- "name": mName,
- "labels": mLabels,
- "lifecycle_state": mLifecycleState,
- "create_time": mCreateTime,
- "parent": mParent,
- })
- }
-
- return projects
-}
-
-func dataSourceGoogleServiceAccount() *data_source_google_service_account_schema.Resource {
- return &data_source_google_service_account_schema.Resource{
- Read: dataSourceGoogleServiceAccountRead,
- Schema: map[string]*data_source_google_service_account_schema.Schema{
- "account_id": {
- Type: data_source_google_service_account_schema.TypeString,
- Required: true,
- },
- "project": {
- Type: data_source_google_service_account_schema.TypeString,
- Optional: true,
- },
- "email": {
- Type: data_source_google_service_account_schema.TypeString,
- Computed: true,
- },
- "unique_id": {
- Type: data_source_google_service_account_schema.TypeString,
- Computed: true,
- },
- "name": {
- Type: data_source_google_service_account_schema.TypeString,
- Computed: true,
- },
- "display_name": {
- Type: data_source_google_service_account_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleServiceAccountRead(d *data_source_google_service_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- serviceAccountName, err := serviceAccountFQN(d.Get("account_id").(string), d, config)
- if err != nil {
- return err
- }
-
- sa, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Get(serviceAccountName).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_service_account_fmt.Sprintf("Service Account %q", serviceAccountName))
- }
-
- d.SetId(sa.Name)
- if err := d.Set("email", sa.Email); err != nil {
- return data_source_google_service_account_fmt.Errorf("Error setting email: %s", err)
- }
- if err := d.Set("unique_id", sa.UniqueId); err != nil {
- return data_source_google_service_account_fmt.Errorf("Error setting unique_id: %s", err)
- }
- if err := d.Set("project", sa.ProjectId); err != nil {
- return data_source_google_service_account_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("account_id", data_source_google_service_account_strings.Split(sa.Email, "@")[0]); err != nil {
- return data_source_google_service_account_fmt.Errorf("Error setting account_id: %s", err)
- }
- if err := d.Set("name", sa.Name); err != nil {
- return data_source_google_service_account_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("display_name", sa.DisplayName); err != nil {
- return data_source_google_service_account_fmt.Errorf("Error setting display_name: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleServiceAccountAccessToken() *data_source_google_service_account_access_token_schema.Resource {
-
- return &data_source_google_service_account_access_token_schema.Resource{
- Read: dataSourceGoogleServiceAccountAccessTokenRead,
- Schema: map[string]*data_source_google_service_account_access_token_schema.Schema{
- "target_service_account": {
- Type: data_source_google_service_account_access_token_schema.TypeString,
- Required: true,
- ValidateFunc: validateRegexp("(" + data_source_google_service_account_access_token_strings.Join(PossibleServiceAccountNames, "|") + ")"),
- },
- "access_token": {
- Type: data_source_google_service_account_access_token_schema.TypeString,
- Sensitive: true,
- Computed: true,
- },
- "scopes": {
- Type: data_source_google_service_account_access_token_schema.TypeSet,
- Required: true,
- Elem: &data_source_google_service_account_access_token_schema.Schema{
- Type: data_source_google_service_account_access_token_schema.TypeString,
- StateFunc: func(v interface{}) string {
- return canonicalizeServiceScope(v.(string))
- },
- },
- },
- "delegates": {
- Type: data_source_google_service_account_access_token_schema.TypeSet,
- Optional: true,
- Elem: &data_source_google_service_account_access_token_schema.Schema{
- Type: data_source_google_service_account_access_token_schema.TypeString,
- ValidateFunc: validateRegexp(ServiceAccountLinkRegex),
- },
- },
- "lifetime": {
- Type: data_source_google_service_account_access_token_schema.TypeString,
- Optional: true,
- ValidateFunc: validateDuration(),
- Default: "3600s",
- },
- },
- }
-}
-
-func dataSourceGoogleServiceAccountAccessTokenRead(d *data_source_google_service_account_access_token_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- data_source_google_service_account_access_token_log.Printf("[INFO] Acquire Service Account AccessToken for %s", d.Get("target_service_account").(string))
-
- service := config.NewIamCredentialsClient(userAgent)
-
- name := data_source_google_service_account_access_token_fmt.Sprintf("projects/-/serviceAccounts/%s", d.Get("target_service_account").(string))
- tokenRequest := &data_source_google_service_account_access_token_iamcredentialsiamcredentials.GenerateAccessTokenRequest{
- Lifetime: d.Get("lifetime").(string),
- Delegates: convertStringSet(d.Get("delegates").(*data_source_google_service_account_access_token_schema.Set)),
- Scope: canonicalizeServiceScopes(convertStringSet(d.Get("scopes").(*data_source_google_service_account_access_token_schema.Set))),
- }
- at, err := service.Projects.ServiceAccounts.GenerateAccessToken(name, tokenRequest).Do()
- if err != nil {
- return err
- }
-
- d.SetId(name)
- if err := d.Set("access_token", at.AccessToken); err != nil {
- return data_source_google_service_account_access_token_fmt.Errorf("Error setting access_token: %s", err)
- }
-
- return nil
-}
-
-const (
- userInfoScope = "https://www.googleapis.com/auth/userinfo.email"
-)
-
-func dataSourceGoogleServiceAccountIdToken() *data_source_google_service_account_id_token_schema.Resource {
-
- return &data_source_google_service_account_id_token_schema.Resource{
- Read: dataSourceGoogleServiceAccountIdTokenRead,
- Schema: map[string]*data_source_google_service_account_id_token_schema.Schema{
- "target_audience": {
- Type: data_source_google_service_account_id_token_schema.TypeString,
- Required: true,
- },
- "target_service_account": {
- Type: data_source_google_service_account_id_token_schema.TypeString,
- Optional: true,
- ValidateFunc: validateRegexp("(" + data_source_google_service_account_id_token_strings.Join(PossibleServiceAccountNames, "|") + ")"),
- },
- "delegates": {
- Type: data_source_google_service_account_id_token_schema.TypeSet,
- Optional: true,
- Elem: &data_source_google_service_account_id_token_schema.Schema{
- Type: data_source_google_service_account_id_token_schema.TypeString,
- ValidateFunc: validateRegexp(ServiceAccountLinkRegex),
- },
- },
- "include_email": {
- Type: data_source_google_service_account_id_token_schema.TypeBool,
- Optional: true,
- Default: false,
- },
-
- "id_token": {
- Type: data_source_google_service_account_id_token_schema.TypeString,
- Sensitive: true,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleServiceAccountIdTokenRead(d *data_source_google_service_account_id_token_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- targetAudience := d.Get("target_audience").(string)
- creds, err := config.GetCredentials([]string{userInfoScope}, false)
- if err != nil {
- return data_source_google_service_account_id_token_fmt.Errorf("error calling getCredentials(): %v", err)
- }
-
- if creds.JSON == nil {
-
- service := config.NewIamCredentialsClient(userAgent)
- name := data_source_google_service_account_id_token_fmt.Sprintf("projects/-/serviceAccounts/%s", d.Get("target_service_account").(string))
- tokenRequest := &data_source_google_service_account_id_token_iamcredentialsiamcredentials.GenerateIdTokenRequest{
- Audience: targetAudience,
- IncludeEmail: d.Get("include_email").(bool),
- Delegates: convertStringSet(d.Get("delegates").(*data_source_google_service_account_id_token_schema.Set)),
- }
- at, err := service.Projects.ServiceAccounts.GenerateIdToken(name, tokenRequest).Do()
- if err != nil {
- return data_source_google_service_account_id_token_fmt.Errorf("error calling iamcredentials.GenerateIdToken: %v", err)
- }
-
- d.SetId(d.Get("target_service_account").(string))
- if err := d.Set("id_token", at.Token); err != nil {
- return data_source_google_service_account_id_token_fmt.Errorf("Error setting id_token: %s", err)
- }
-
- return nil
- }
-
- ctx := data_source_google_service_account_id_token_context.Background()
- co := []data_source_google_service_account_id_token_option.ClientOption{}
- if creds.JSON != nil {
- co = append(co, data_source_google_service_account_id_token_idtoken.WithCredentialsJSON(creds.JSON))
- }
-
- idTokenSource, err := data_source_google_service_account_id_token_idtoken.NewTokenSource(ctx, targetAudience, co...)
- if err != nil {
- return data_source_google_service_account_id_token_fmt.Errorf("unable to retrieve TokenSource: %v", err)
- }
- idToken, err := idTokenSource.Token()
- if err != nil {
- return data_source_google_service_account_id_token_fmt.Errorf("unable to retrieve Token: %v", err)
- }
-
- d.SetId(targetAudience)
- if err := d.Set("id_token", idToken.AccessToken); err != nil {
- return data_source_google_service_account_id_token_fmt.Errorf("Error setting id_token: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleServiceAccountKey() *data_source_google_service_account_key_schema.Resource {
- return &data_source_google_service_account_key_schema.Resource{
- Read: dataSourceGoogleServiceAccountKeyRead,
-
- Schema: map[string]*data_source_google_service_account_key_schema.Schema{
- "name": {
- Type: data_source_google_service_account_key_schema.TypeString,
- Required: true,
- ValidateFunc: validateRegexp(ServiceAccountKeyNameRegex),
- },
- "public_key_type": {
- Type: data_source_google_service_account_key_schema.TypeString,
- Default: "TYPE_X509_PEM_FILE",
- Optional: true,
- ValidateFunc: data_source_google_service_account_key_validation.StringInSlice([]string{"TYPE_NONE", "TYPE_X509_PEM_FILE", "TYPE_RAW_PUBLIC_KEY"}, false),
- },
- "project": {
- Type: data_source_google_service_account_key_schema.TypeString,
- Optional: true,
- },
- "key_algorithm": {
- Type: data_source_google_service_account_key_schema.TypeString,
- Computed: true,
- },
- "public_key": {
- Type: data_source_google_service_account_key_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleServiceAccountKeyRead(d *data_source_google_service_account_key_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- keyName := d.Get("name").(string)
-
- r := data_source_google_service_account_key_regexp.MustCompile(ServiceAccountKeyNameRegex)
- if !r.MatchString(keyName) {
- return data_source_google_service_account_key_fmt.Errorf("invalid key name %q does not match regexp %q", keyName, ServiceAccountKeyNameRegex)
- }
-
- publicKeyType := d.Get("public_key_type").(string)
-
- sak, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.Keys.Get(keyName).PublicKeyType(publicKeyType).Do()
- if err != nil {
- return handleNotFoundError(err, d, data_source_google_service_account_key_fmt.Sprintf("Service Account Key %q", keyName))
- }
-
- d.SetId(sak.Name)
-
- if err := d.Set("name", sak.Name); err != nil {
- return data_source_google_service_account_key_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("key_algorithm", sak.KeyAlgorithm); err != nil {
- return data_source_google_service_account_key_fmt.Errorf("Error setting key_algorithm: %s", err)
- }
- if err := d.Set("public_key", sak.PublicKeyData); err != nil {
- return data_source_google_service_account_key_fmt.Errorf("Error setting public_key: %s", err)
- }
-
- return nil
-}
-
-func dataSourceGoogleServiceNetworkingPeeredDNSDomain() *data_source_google_service_networking_peered_dns_domain_schema.Resource {
- return &data_source_google_service_networking_peered_dns_domain_schema.Resource{
- Read: resourceGoogleServiceNetworkingPeeredDNSDomainRead,
- Schema: map[string]*data_source_google_service_networking_peered_dns_domain_schema.Schema{
- "project": {
- Type: data_source_google_service_networking_peered_dns_domain_schema.TypeString,
- Required: true,
- },
- "name": {
- Type: data_source_google_service_networking_peered_dns_domain_schema.TypeString,
- Required: true,
- },
- "network": {
- Type: data_source_google_service_networking_peered_dns_domain_schema.TypeString,
- Required: true,
- },
- "service": {
- Type: data_source_google_service_networking_peered_dns_domain_schema.TypeString,
- Required: true,
- },
- "dns_suffix": {
- Type: data_source_google_service_networking_peered_dns_domain_schema.TypeString,
- Computed: true,
- },
- "parent": {
- Type: data_source_google_service_networking_peered_dns_domain_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleSQLCaCerts() *data_source_google_sql_ca_certs_schema.Resource {
- return &data_source_google_sql_ca_certs_schema.Resource{
- Read: dataSourceGoogleSQLCaCertsRead,
-
- Schema: map[string]*data_source_google_sql_ca_certs_schema.Schema{
- "instance": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Required: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
- "project": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "active_version": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- },
- "certs": {
- Type: data_source_google_sql_ca_certs_schema.TypeList,
- Elem: &data_source_google_sql_ca_certs_schema.Resource{
- Schema: map[string]*data_source_google_sql_ca_certs_schema.Schema{
- "cert": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- },
- "common_name": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- },
- "create_time": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- },
- "expiration_time": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- },
- "sha1_fingerprint": {
- Type: data_source_google_sql_ca_certs_schema.TypeString,
- Computed: true,
- },
- },
- },
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleSQLCaCertsRead(d *data_source_google_sql_ca_certs_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- fv, err := parseProjectFieldValue("instances", d.Get("instance").(string), "project", d, config, false)
- if err != nil {
- return err
- }
- project := fv.Project
- instance := fv.Name
-
- data_source_google_sql_ca_certs_log.Printf("[DEBUG] Fetching CA certs from instance %s", instance)
-
- response, err := config.NewSqlAdminClient(userAgent).Instances.ListServerCas(project, instance).Do()
- if err != nil {
- return data_source_google_sql_ca_certs_fmt.Errorf("error retrieving CA certs: %s", err)
- }
-
- data_source_google_sql_ca_certs_log.Printf("[DEBUG] Fetched CA certs from instance %s", instance)
-
- if err := d.Set("project", project); err != nil {
- return data_source_google_sql_ca_certs_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("certs", flattenServerCaCerts(response.Certs)); err != nil {
- return data_source_google_sql_ca_certs_fmt.Errorf("Error setting certs: %s", err)
- }
- if err := d.Set("active_version", response.ActiveVersion); err != nil {
- return data_source_google_sql_ca_certs_fmt.Errorf("Error setting active_version: %s", err)
- }
- d.SetId(data_source_google_sql_ca_certs_fmt.Sprintf("projects/%s/instance/%s", project, instance))
-
- return nil
-}
-
-func dataSourceGoogleStorageBucket() *data_source_google_storage_bucket_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceStorageBucket().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- return &data_source_google_storage_bucket_schema.Resource{
- Read: dataSourceGoogleStorageBucketRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleStorageBucketRead(d *data_source_google_storage_bucket_schema.ResourceData, meta interface{}) error {
-
- bucket := d.Get("name").(string)
- d.SetId(bucket)
-
- return resourceStorageBucketRead(d, meta)
-}
-
-func dataSourceGoogleStorageBucketObject() *data_source_google_storage_bucket_object_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceStorageBucketObject().Schema)
-
- addOptionalFieldsToSchema(dsSchema, "bucket")
- addOptionalFieldsToSchema(dsSchema, "name")
-
- return &data_source_google_storage_bucket_object_schema.Resource{
- Read: dataSourceGoogleStorageBucketObjectRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleStorageBucketObjectRead(d *data_source_google_storage_bucket_object_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- bucket := d.Get("bucket").(string)
- name := d.Get("name").(string)
-
- if data_source_google_storage_bucket_object_strings.Contains(name, "/") {
- name = data_source_google_storage_bucket_object_url.QueryEscape(name)
- }
-
- data_source_google_storage_bucket_object_url := data_source_google_storage_bucket_object_fmt.Sprintf("https://www.googleapis.com/storage/v1/b/%s/o/%s", bucket, name)
-
- res, err := sendRequest(config, "GET", "", data_source_google_storage_bucket_object_url, userAgent, nil)
- if err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error retrieving storage bucket object: %s", err)
- }
-
- if err := d.Set("cache_control", res["cacheControl"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting cache_control: %s", err)
- }
- if err := d.Set("content_disposition", res["contentDisposition"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting content_disposition: %s", err)
- }
- if err := d.Set("content_encoding", res["contentEncoding"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting content_encoding: %s", err)
- }
- if err := d.Set("content_language", res["contentLanguage"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting content_language: %s", err)
- }
- if err := d.Set("content_type", res["contentType"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting content_type: %s", err)
- }
- if err := d.Set("crc32c", res["crc32c"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting crc32c: %s", err)
- }
- if err := d.Set("self_link", res["selfLink"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting self_link: %s", err)
- }
- if err := d.Set("storage_class", res["storageClass"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting storage_class: %s", err)
- }
- if err := d.Set("md5hash", res["md5Hash"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting md5hash: %s", err)
- }
- if err := d.Set("media_link", res["mediaLink"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting media_link: %s", err)
- }
- if err := d.Set("metadata", res["metadata"]); err != nil {
- return data_source_google_storage_bucket_object_fmt.Errorf("Error setting metadata: %s", err)
- }
-
- d.SetId(bucket + "-" + name)
-
- return nil
-}
-
-func dataSourceGoogleStorageProjectServiceAccount() *data_source_google_storage_project_service_account_schema.Resource {
- return &data_source_google_storage_project_service_account_schema.Resource{
- Read: dataSourceGoogleStorageProjectServiceAccountRead,
- Schema: map[string]*data_source_google_storage_project_service_account_schema.Schema{
- "project": {
- Type: data_source_google_storage_project_service_account_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "user_project": {
- Type: data_source_google_storage_project_service_account_schema.TypeString,
- Optional: true,
- ForceNew: true,
- },
- "email_address": {
- Type: data_source_google_storage_project_service_account_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleStorageProjectServiceAccountRead(d *data_source_google_storage_project_service_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- serviceAccountGetRequest := config.NewStorageClient(userAgent).Projects.ServiceAccount.Get(project)
-
- if v, ok := d.GetOk("user_project"); ok {
- serviceAccountGetRequest = serviceAccountGetRequest.UserProject(v.(string))
- }
-
- serviceAccount, err := serviceAccountGetRequest.Do()
- if err != nil {
- return handleNotFoundError(err, d, "GCS service account not found")
- }
-
- if err := d.Set("project", project); err != nil {
- return data_source_google_storage_project_service_account_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("email_address", serviceAccount.EmailAddress); err != nil {
- return data_source_google_storage_project_service_account_fmt.Errorf("Error setting email_address: %s", err)
- }
-
- d.SetId(serviceAccount.EmailAddress)
-
- return nil
-}
-
-func dataSourceGoogleStorageTransferProjectServiceAccount() *data_source_google_storage_transfer_project_service_account_schema.Resource {
- return &data_source_google_storage_transfer_project_service_account_schema.Resource{
- Read: dataSourceGoogleStorageTransferProjectServiceAccountRead,
- Schema: map[string]*data_source_google_storage_transfer_project_service_account_schema.Schema{
- "email": {
- Type: data_source_google_storage_transfer_project_service_account_schema.TypeString,
- Computed: true,
- },
- "project": {
- Type: data_source_google_storage_transfer_project_service_account_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- },
- }
-}
-
-func dataSourceGoogleStorageTransferProjectServiceAccountRead(d *data_source_google_storage_transfer_project_service_account_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- serviceAccount, err := config.NewStorageTransferClient(userAgent).GoogleServiceAccounts.Get(project).Do()
- if err != nil {
- return handleNotFoundError(err, d, "Google Cloud Storage Transfer service account not found")
- }
-
- d.SetId(serviceAccount.AccountEmail)
- if err := d.Set("email", serviceAccount.AccountEmail); err != nil {
- return data_source_google_storage_transfer_project_service_account_fmt.Errorf("Error setting email: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_google_storage_transfer_project_service_account_fmt.Errorf("Error setting project: %s", err)
- }
- return nil
-}
-
-func dataSourceGoogleIapClient() *data_source_iap_client_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceIapClient().Schema)
- addRequiredFieldsToSchema(dsSchema, "brand", "client_id")
-
- return &data_source_iap_client_schema.Resource{
- Read: dataSourceGoogleIapClientRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleIapClientRead(d *data_source_iap_client_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- id, err := replaceVars(d, config, "{{brand}}/identityAwareProxyClients/{{client_id}}")
- if err != nil {
- return data_source_iap_client_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
- return resourceIapClientRead(d, meta)
-}
-
-func dataSourceMonitoringIstioCanonicalService() *data_source_monitoring_istio_canonical_service_schema.Resource {
- csSchema := map[string]*data_source_monitoring_istio_canonical_service_schema.Schema{
- "mesh_uid": {
- Type: data_source_monitoring_istio_canonical_service_schema.TypeString,
- Required: true,
- Description: `Identifier for the Istio mesh in which this canonical service is defined.
- Corresponds to the meshUid metric label in Istio metrics.`,
- },
- "canonical_service_namespace": {
- Type: data_source_monitoring_istio_canonical_service_schema.TypeString,
- Required: true,
- Description: `The namespace of the canonical service underlying this service.
- Corresponds to the destination_service_namespace metric label in Istio metrics.`,
- },
- "canonical_service": {
- Type: data_source_monitoring_istio_canonical_service_schema.TypeString,
- Required: true,
- Description: `The name of the canonical service underlying this service..
- Corresponds to the destination_service_name metric label in Istio metrics.`,
- },
- }
- t := `istio_canonical_service.mesh_uid="{{mesh_uid}}" AND
- istio_canonical_service.canonical_service="{{canonical_service}}" AND
- istio_canonical_service.canonical_service_namespace="{{canonical_service_namespace}}"`
- return dataSourceMonitoringServiceType(csSchema, t, dataSourceMonitoringIstioCanonicalServiceRead)
-}
-
-func dataSourceMonitoringIstioCanonicalServiceRead(res map[string]interface{}, d *data_source_monitoring_istio_canonical_service_schema.ResourceData, meta interface{}) error {
- var istioCanonicalService map[string]interface{}
- if v, ok := res["istio_canonical_service"]; ok {
- istioCanonicalService = v.(map[string]interface{})
- }
- if len(istioCanonicalService) == 0 {
- return nil
- }
- if err := d.Set("canonical_service", istioCanonicalService["canonical_service"]); err != nil {
- return err
- }
- if err := d.Set("canonical_service_namespace", istioCanonicalService["canonical_service_namespace"]); err != nil {
- return err
- }
- if err := d.Set("mesh_name", istioCanonicalService["mesh_name"]); err != nil {
- return err
- }
- return nil
-}
-
-func dataSourceMonitoringNotificationChannel() *data_source_monitoring_notification_channel_schema.Resource {
- dsSchema := datasourceSchemaFromResourceSchema(resourceMonitoringNotificationChannel().Schema)
-
- addOptionalFieldsToSchema(dsSchema, "display_name")
- addOptionalFieldsToSchema(dsSchema, "project")
- addOptionalFieldsToSchema(dsSchema, "type")
- addOptionalFieldsToSchema(dsSchema, "labels")
- addOptionalFieldsToSchema(dsSchema, "user_labels")
-
- return &data_source_monitoring_notification_channel_schema.Resource{
- Read: dataSourceMonitoringNotificationChannelRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceMonitoringNotificationChannelRead(d *data_source_monitoring_notification_channel_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- url, err := replaceVars(d, config, "{{MonitoringBasePath}}v3/projects/{{project}}/notificationChannels")
- if err != nil {
- return err
- }
-
- displayName := d.Get("display_name").(string)
- channelType := d.Get("type").(string)
-
- if displayName == "" && channelType == "" {
- return data_source_monitoring_notification_channel_fmt.Errorf("At least one of display_name or type must be provided")
- }
-
- labels, err := expandMonitoringNotificationChannelLabels(d.Get("labels"), d, config)
- if err != nil {
- return err
- }
-
- userLabels, err := expandMonitoringNotificationChannelLabels(d.Get("user_labels"), d, config)
- if err != nil {
- return err
- }
-
- filters := make([]string, 0, len(labels)+2)
-
- if displayName != "" {
- filters = append(filters, data_source_monitoring_notification_channel_fmt.Sprintf(`display_name="%s"`, displayName))
- }
-
- if channelType != "" {
- filters = append(filters, data_source_monitoring_notification_channel_fmt.Sprintf(`type="%s"`, channelType))
- }
-
- for k, v := range labels {
- filters = append(filters, data_source_monitoring_notification_channel_fmt.Sprintf(`labels.%s="%s"`, k, v))
- }
-
- for k, v := range userLabels {
- filters = append(filters, data_source_monitoring_notification_channel_fmt.Sprintf(`user_labels.%s="%s"`, k, v))
- }
-
- filter := data_source_monitoring_notification_channel_strings.Join(filters, " AND ")
- params := map[string]string{
- "filter": filter,
- }
- url, err = addQueryParams(url, params)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- response, err := sendRequest(config, "GET", project, url, userAgent, nil)
- if err != nil {
- return data_source_monitoring_notification_channel_fmt.Errorf("Error retrieving NotificationChannels: %s", err)
- }
-
- var channels []interface{}
- if v, ok := response["notificationChannels"]; ok {
- channels = v.([]interface{})
- }
- if len(channels) == 0 {
- return data_source_monitoring_notification_channel_fmt.Errorf("No NotificationChannel found using filter: %s", filter)
- }
- if len(channels) > 1 {
- return data_source_monitoring_notification_channel_fmt.Errorf("Found more than one 1 NotificationChannel matching specified filter: %s", filter)
- }
- res := channels[0].(map[string]interface{})
-
- name := flattenMonitoringNotificationChannelName(res["name"], d, config).(string)
- if err := d.Set("name", name); err != nil {
- return data_source_monitoring_notification_channel_fmt.Errorf("Error setting name: %s", err)
- }
- d.SetId(name)
-
- return resourceMonitoringNotificationChannelRead(d, meta)
-}
-
-type monitoringServiceTypeStateSetter func(map[string]interface{}, *data_source_monitoring_service_schema.ResourceData, interface{}) error
-
-func dataSourceMonitoringServiceType(
- typeSchema map[string]*data_source_monitoring_service_schema.Schema,
- listFilter string,
- typeStateSetter monitoringServiceTypeStateSetter) *data_source_monitoring_service_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceMonitoringService().Schema)
- addOptionalFieldsToSchema(dsSchema, "project")
-
- dsSchema = mergeSchemas(typeSchema, dsSchema)
-
- return &data_source_monitoring_service_schema.Resource{
- Read: dataSourceMonitoringServiceTypeReadFromList(listFilter, typeStateSetter),
- Schema: dsSchema,
- }
-}
-
-func dataSourceMonitoringServiceTypeReadFromList(listFilter string, typeStateSetter monitoringServiceTypeStateSetter) data_source_monitoring_service_schema.ReadFunc {
- return func(d *data_source_monitoring_service_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- filters, err := replaceVars(d, config, listFilter)
- if err != nil {
- return err
- }
-
- listUrlTmpl := "{{MonitoringBasePath}}v3/projects/{{project}}/services?filter=" + data_source_monitoring_service_urlneturl.QueryEscape(filters)
- url, err := replaceVars(d, config, listUrlTmpl)
- if err != nil {
- return err
- }
-
- resp, err := sendRequest(config, "GET", project, url, userAgent, nil, isMonitoringConcurrentEditError)
- if err != nil {
- return data_source_monitoring_service_fmt.Errorf("unable to list Monitoring Service for data source: %v", err)
- }
-
- v, ok := resp["services"]
- if !ok || v == nil {
- return data_source_monitoring_service_fmt.Errorf("no Monitoring Services found for data source")
- }
- ls, ok := v.([]interface{})
- if !ok {
- return data_source_monitoring_service_fmt.Errorf("no Monitoring Services found for data source")
- }
- if len(ls) == 0 {
- return data_source_monitoring_service_fmt.Errorf("no Monitoring Services found for data source")
- }
- if len(ls) > 1 {
- return data_source_monitoring_service_fmt.Errorf("more than one Monitoring Services with given identifier found")
- }
- res := ls[0].(map[string]interface{})
-
- if err := d.Set("project", project); err != nil {
- return data_source_monitoring_service_fmt.Errorf("Error setting Service: %s", err)
- }
- if err := d.Set("display_name", flattenMonitoringServiceDisplayName(res["displayName"], d, config)); err != nil {
- return data_source_monitoring_service_fmt.Errorf("Error setting Service: %s", err)
- }
- if err := d.Set("telemetry", flattenMonitoringServiceTelemetry(res["telemetry"], d, config)); err != nil {
- return data_source_monitoring_service_fmt.Errorf("Error setting Service: %s", err)
- }
- if err := d.Set("service_id", flattenMonitoringServiceServiceId(res["name"], d, config)); err != nil {
- return data_source_monitoring_service_fmt.Errorf("Error setting Service: %s", err)
- }
- if err := typeStateSetter(res, d, config); err != nil {
- return data_source_monitoring_service_fmt.Errorf("Error reading Service: %s", err)
- }
-
- name := flattenMonitoringServiceName(res["name"], d, config).(string)
- if err := d.Set("name", name); err != nil {
- return data_source_monitoring_service_fmt.Errorf("Error setting name: %s", err)
- }
- d.SetId(name)
-
- return nil
- }
-}
-
-func dataSourceMonitoringServiceAppEngine() *data_source_monitoring_service_app_engine_schema.Resource {
- aeSchema := map[string]*data_source_monitoring_service_app_engine_schema.Schema{
- "module_id": {
- Type: data_source_monitoring_service_app_engine_schema.TypeString,
- Required: true,
- Description: `The ID of the App Engine module underlying this service.
-Corresponds to the 'moduleId' resource label for a 'gae_app'
-monitored resource(see https://cloud.google.com/monitoring/api/resources#tag_gae_app)`,
- },
- }
- filter := `app_engine.module_id="{{module_id}}"`
- return dataSourceMonitoringServiceType(aeSchema, filter, dataSourceMonitoringServiceAppEngineRead)
-}
-
-func dataSourceMonitoringServiceAppEngineRead(res map[string]interface{}, d *data_source_monitoring_service_app_engine_schema.ResourceData, meta interface{}) error {
- var appEngine map[string]interface{}
- if v, ok := res["app_engine"]; ok {
- appEngine = v.(map[string]interface{})
- }
- if len(appEngine) == 0 {
- return nil
- }
-
- if err := d.Set("module_id", appEngine["module_id"]); err != nil {
- return err
- }
- return nil
-}
-
-func dataSourceMonitoringServiceClusterIstio() *data_source_monitoring_service_cluster_istio_schema.Resource {
- ciSchema := map[string]*data_source_monitoring_service_cluster_istio_schema.Schema{
- "location": {
- Type: data_source_monitoring_service_cluster_istio_schema.TypeString,
- Required: true,
- Description: `The location of the Kubernetes cluster in which this Istio service is defined.
- Corresponds to the location resource label in k8s_cluster resources.`,
- },
- "cluster_name": {
- Type: data_source_monitoring_service_cluster_istio_schema.TypeString,
- Required: true,
- Description: `The name of the Kubernetes cluster in which this Istio service is defined.
- Corresponds to the clusterName resource label in k8s_cluster resources.`,
- },
- "service_namespace": {
- Type: data_source_monitoring_service_cluster_istio_schema.TypeString,
- Required: true,
- Description: `The namespace of the Istio service underlying this service.
- Corresponds to the destination_service_namespace metric label in Istio metrics.`,
- },
- "service_name": {
- Type: data_source_monitoring_service_cluster_istio_schema.TypeString,
- Required: true,
- Description: `The name of the Istio service underlying this service.
- Corresponds to the destination_service_name metric label in Istio metrics.`,
- },
- }
- filter := `cluster_istio.cluster_name="{{cluster_name}}" AND
- cluster_istio.service_namespace="{{service_namespace}}" AND
- cluster_istio.service_name="{{service_name}}" AND
- cluster_istio.location="{{location}}"`
- return dataSourceMonitoringServiceType(ciSchema, filter, dataSourceMonitoringServiceClusterIstioRead)
-}
-
-func dataSourceMonitoringServiceClusterIstioRead(res map[string]interface{}, d *data_source_monitoring_service_cluster_istio_schema.ResourceData, meta interface{}) error {
- var clusterIstio map[string]interface{}
- if v, ok := res["cluster_istio"]; ok {
- clusterIstio = v.(map[string]interface{})
- }
- if len(clusterIstio) == 0 {
- return nil
- }
-
- if err := d.Set("location", clusterIstio["location"]); err != nil {
- return err
- }
- if err := d.Set("service_name", clusterIstio["service_name"]); err != nil {
- return err
- }
- if err := d.Set("service_namespace", clusterIstio["service_namespace"]); err != nil {
- return err
- }
- if err := d.Set("cluster_name", clusterIstio["cluster_name"]); err != nil {
- return err
- }
- return nil
-}
-
-func dataSourceMonitoringServiceMeshIstio() *data_source_monitoring_service_mesh_istio_schema.Resource {
- miSchema := map[string]*data_source_monitoring_service_mesh_istio_schema.Schema{
- "mesh_uid": {
- Type: data_source_monitoring_service_mesh_istio_schema.TypeString,
- Required: true,
- Description: `Identifier for the mesh in which this Istio service is defined.
- Corresponds to the meshUid metric label in Istio metrics.`,
- },
- "service_namespace": {
- Type: data_source_monitoring_service_mesh_istio_schema.TypeString,
- Required: true,
- Description: `The namespace of the Istio service underlying this service.
- Corresponds to the destination_service_namespace metric label in Istio metrics.`,
- },
- "service_name": {
- Type: data_source_monitoring_service_mesh_istio_schema.TypeString,
- Required: true,
- Description: `The name of the Istio service underlying this service.
- Corresponds to the destination_service_name metric label in Istio metrics.`,
- },
- }
- t := `mesh_istio.mesh_uid="{{mesh_uid}}" AND
- mesh_istio.service_name="{{service_name}}" AND
- mesh_istio.service_namespace="{{service_namespace}}"`
- return dataSourceMonitoringServiceType(miSchema, t, dataSourceMonitoringServiceMeshIstioRead)
-}
-
-func dataSourceMonitoringServiceMeshIstioRead(res map[string]interface{}, d *data_source_monitoring_service_mesh_istio_schema.ResourceData, meta interface{}) error {
- var meshIstio map[string]interface{}
- if v, ok := res["mesh_istio"]; ok {
- meshIstio = v.(map[string]interface{})
- }
- if len(meshIstio) == 0 {
- return nil
- }
- if err := d.Set("service_name", meshIstio["service_name"]); err != nil {
- return err
- }
- if err := d.Set("service_namespace", meshIstio["service_namespace"]); err != nil {
- return err
- }
- if err := d.Set("mesh_name", meshIstio["mesh_name"]); err != nil {
- return err
- }
- return nil
-}
-
-func dataSourceGooglePubsubTopic() *data_source_pubsub_topic_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourcePubsubTopic().Schema)
- addRequiredFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_pubsub_topic_schema.Resource{
- Read: dataSourceGooglePubsubTopicRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGooglePubsubTopicRead(d *data_source_pubsub_topic_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- id, err := replaceVars(d, config, "projects/{{project}}/topics/{{name}}")
- if err != nil {
- return data_source_pubsub_topic_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
- return resourcePubsubTopicRead(d, meta)
-}
-
-func dataSourceGoogleRedisInstance() *data_source_redis_instance_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceRedisInstance().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
-
- addOptionalFieldsToSchema(dsSchema, "project", "region")
-
- return &data_source_redis_instance_schema.Resource{
- Read: dataSourceGoogleRedisInstanceRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleRedisInstanceRead(d *data_source_redis_instance_schema.ResourceData, meta interface{}) error {
- id, err := replaceVars(d, meta.(*Config), "projects/{{project}}/locations/{{region}}/instances/{{name}}")
- if err != nil {
- return err
- }
- d.SetId(id)
-
- return resourceRedisInstanceRead(d, meta)
-}
-
-func dataSourceSecretManagerSecret() *data_source_secret_manager_secret_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceSecretManagerSecret().Schema)
- addRequiredFieldsToSchema(dsSchema, "secret_id")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_secret_manager_secret_schema.Resource{
- Read: dataSourceSecretManagerSecretRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceSecretManagerSecretRead(d *data_source_secret_manager_secret_schema.ResourceData, meta interface{}) error {
- id, err := replaceVars(d, meta.(*Config), "projects/{{project}}/secrets/{{secret_id}}")
- if err != nil {
- return data_source_secret_manager_secret_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
- return resourceSecretManagerSecretRead(d, meta)
-}
-
-func dataSourceSecretManagerSecretVersion() *data_source_secret_manager_secret_version_schema.Resource {
- return &data_source_secret_manager_secret_version_schema.Resource{
- Read: dataSourceSecretManagerSecretVersionRead,
- Schema: map[string]*data_source_secret_manager_secret_version_schema.Schema{
- "project": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "secret": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Required: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
- "version": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "create_time": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Computed: true,
- },
- "destroy_time": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Computed: true,
- },
- "name": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Computed: true,
- },
- "enabled": {
- Type: data_source_secret_manager_secret_version_schema.TypeBool,
- Computed: true,
- },
- "secret_data": {
- Type: data_source_secret_manager_secret_version_schema.TypeString,
- Computed: true,
- Sensitive: true,
- },
- },
- }
-}
-
-func dataSourceSecretManagerSecretVersionRead(d *data_source_secret_manager_secret_version_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- fv, err := parseProjectFieldValue("secrets", d.Get("secret").(string), "project", d, config, false)
- if err != nil {
- return err
- }
- if d.Get("project").(string) != "" && d.Get("project").(string) != fv.Project {
- return data_source_secret_manager_secret_version_fmt.Errorf("The project set on this secret version (%s) is not equal to the project where this secret exists (%s).", d.Get("project").(string), fv.Project)
- }
- project := fv.Project
- if err := d.Set("project", project); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("secret", fv.Name); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting secret: %s", err)
- }
-
- var url string
- versionNum := d.Get("version")
-
- if versionNum != "" {
- url, err = replaceVars(d, config, "{{SecretManagerBasePath}}projects/{{project}}/secrets/{{secret}}/versions/{{version}}")
- if err != nil {
- return err
- }
- } else {
- url, err = replaceVars(d, config, "{{SecretManagerBasePath}}projects/{{project}}/secrets/{{secret}}/versions/latest")
- if err != nil {
- return err
- }
- }
-
- var version map[string]interface{}
- version, err = sendRequest(config, "GET", project, url, userAgent, nil)
- if err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error retrieving available secret manager secret versions: %s", err.Error())
- }
-
- secretVersionRegex := data_source_secret_manager_secret_version_regexp.MustCompile("projects/(.+)/secrets/(.+)/versions/(.+)$")
-
- parts := secretVersionRegex.FindStringSubmatch(version["name"].(string))
-
- if len(parts) != 4 {
- panic(data_source_secret_manager_secret_version_fmt.Sprintf("secret name, %s, does not match format, projects/{{project}}/secrets/{{secret}}/versions/{{version}}", version["name"].(string)))
- }
-
- data_source_secret_manager_secret_version_log.Printf("[DEBUG] Received Google SecretManager Version: %q", version)
-
- if err := d.Set("version", parts[3]); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting version: %s", err)
- }
-
- url = data_source_secret_manager_secret_version_fmt.Sprintf("%s:access", url)
- resp, err := sendRequest(config, "GET", project, url, userAgent, nil)
- if err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error retrieving available secret manager secret version access: %s", err.Error())
- }
-
- if err := d.Set("create_time", version["createTime"].(string)); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting create_time: %s", err)
- }
- if version["destroyTime"] != nil {
- if err := d.Set("destroy_time", version["destroyTime"].(string)); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting destroy_time: %s", err)
- }
- }
- if err := d.Set("name", version["name"].(string)); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting name: %s", err)
- }
- if err := d.Set("enabled", true); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting enabled: %s", err)
- }
-
- data := resp["payload"].(map[string]interface{})
- secretData, err := data_source_secret_manager_secret_version_base64.StdEncoding.DecodeString(data["data"].(string))
- if err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error decoding secret manager secret version data: %s", err.Error())
- }
- if err := d.Set("secret_data", string(secretData)); err != nil {
- return data_source_secret_manager_secret_version_fmt.Errorf("Error setting secret_data: %s", err)
- }
-
- d.SetId(version["name"].(string))
- return nil
-}
-
-func dataSourceGoogleSourceRepoRepository() *data_source_sourcerepo_repository_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceSourceRepoRepository().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_sourcerepo_repository_schema.Resource{
- Read: dataSourceGoogleSourceRepoRepositoryRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleSourceRepoRepositoryRead(d *data_source_sourcerepo_repository_schema.ResourceData, meta interface{}) error {
-
- config := meta.(*Config)
-
- id, err := replaceVars(d, config, "projects/{{project}}/repos/{{name}}")
- if err != nil {
- return data_source_sourcerepo_repository_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
-
- return resourceSourceRepoRepositoryRead(d, meta)
-}
-
-func dataSourceSpannerInstance() *data_source_spanner_instance_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceSpannerInstance().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "config")
- addOptionalFieldsToSchema(dsSchema, "display_name")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_spanner_instance_schema.Resource{
- Read: dataSourceSpannerInstanceRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceSpannerInstanceRead(d *data_source_spanner_instance_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- id, err := replaceVars(d, config, "{{project}}/{{name}}")
- if err != nil {
- return data_source_spanner_instance_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
-
- return resourceSpannerInstanceRead(d, meta)
-}
-
-func dataSourceSqlBackupRun() *data_source_sql_backup_run_schema.Resource {
-
- return &data_source_sql_backup_run_schema.Resource{
- Read: dataSourceSqlBackupRunRead,
-
- Schema: map[string]*data_source_sql_backup_run_schema.Schema{
- "backup_id": {
- Type: data_source_sql_backup_run_schema.TypeInt,
- Optional: true,
- Computed: true,
- Description: `The identifier for this backup run. Unique only for a specific Cloud SQL instance. If left empty and multiple backups exist for the instance, most_recent must be set to true.`,
- },
- "instance": {
- Type: data_source_sql_backup_run_schema.TypeString,
- Required: true,
- Description: `Name of the database instance.`,
- },
- "location": {
- Type: data_source_sql_backup_run_schema.TypeString,
- Computed: true,
- Description: `Location of the backups.`,
- },
- "start_time": {
- Type: data_source_sql_backup_run_schema.TypeString,
- Computed: true,
- Description: `The time the backup operation actually started in UTC timezone in RFC 3339 format, for example 2012-11-15T16:19:00.094Z.`,
- },
- "status": {
- Type: data_source_sql_backup_run_schema.TypeString,
- Computed: true,
- Description: `The status of this run.`,
- },
- "most_recent": {
- Type: data_source_sql_backup_run_schema.TypeBool,
- Optional: true,
- Description: `Toggles use of the most recent backup run if multiple backups exist for a Cloud SQL instance.`,
- },
- },
- }
-}
-
-func dataSourceSqlBackupRunRead(d *data_source_sql_backup_run_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- instance := d.Get("instance").(string)
-
- var backup *data_source_sql_backup_run_sqladminsqladmin.BackupRun
- if backupId, ok := d.GetOk("backup_id"); ok {
- backup, err = config.NewSqlAdminClient(userAgent).BackupRuns.Get(project, instance, int64(backupId.(int))).Do()
- if err != nil {
- return err
- }
- } else {
- res, err := config.NewSqlAdminClient(userAgent).BackupRuns.List(project, instance).Do()
- if err != nil {
- return err
- }
- backupsList := res.Items
- if len(backupsList) == 0 {
- return data_source_sql_backup_run_fmt.Errorf("No backups found for SQL Database Instance %s", instance)
- } else if len(backupsList) > 1 {
- mostRecent := d.Get("most_recent").(bool)
- if !mostRecent {
- return data_source_sql_backup_run_fmt.Errorf("Multiple SQL backup runs listed for Instance %s. Consider setting most_recent or specifying a backup_id", instance)
- }
- }
- backup = backupsList[0]
- }
-
- if err := d.Set("backup_id", backup.Id); err != nil {
- return data_source_sql_backup_run_fmt.Errorf("Error setting backup_id: %s", err)
- }
- if err := d.Set("location", backup.Location); err != nil {
- return data_source_sql_backup_run_fmt.Errorf("Error setting location: %s", err)
- }
- if err := d.Set("start_time", backup.StartTime); err != nil {
- return data_source_sql_backup_run_fmt.Errorf("Error setting start_time: %s", err)
- }
- if err := d.Set("status", backup.Status); err != nil {
- return data_source_sql_backup_run_fmt.Errorf("Error setting status: %s", err)
- }
-
- id, err := replaceVars(d, config, "projects/{{project}}/instances/{{instance}}/backupRuns/{{backup_id}}")
- if err != nil {
- return data_source_sql_backup_run_fmt.Errorf("Error constructing id: %s", err)
- }
- d.SetId(id)
- return nil
-}
-
-func dataSourceSqlDatabaseInstance() *data_source_sql_database_instance_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceSqlDatabaseInstance().Schema)
- addRequiredFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "project")
-
- return &data_source_sql_database_instance_schema.Resource{
- Read: dataSourceSqlDatabaseInstanceRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceSqlDatabaseInstanceRead(d *data_source_sql_database_instance_schema.ResourceData, meta interface{}) error {
-
- return resourceSqlDatabaseInstanceRead(d, meta)
-
-}
-
-func dataSourceGoogleStorageBucketObjectContent() *data_source_storage_bucket_object_content_schema.Resource {
-
- dsSchema := datasourceSchemaFromResourceSchema(resourceStorageBucketObject().Schema)
-
- addRequiredFieldsToSchema(dsSchema, "bucket")
- addRequiredFieldsToSchema(dsSchema, "name")
- addOptionalFieldsToSchema(dsSchema, "content")
-
- return &data_source_storage_bucket_object_content_schema.Resource{
- Read: dataSourceGoogleStorageBucketObjectContentRead,
- Schema: dsSchema,
- }
-}
-
-func dataSourceGoogleStorageBucketObjectContentRead(d *data_source_storage_bucket_object_content_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- bucket := d.Get("bucket").(string)
- name := d.Get("name").(string)
-
- objectsService := data_source_storage_bucket_object_content_storage.NewObjectsService(config.NewStorageClient(userAgent))
- getCall := objectsService.Get(bucket, name)
-
- res, err := getCall.Download()
- if err != nil {
- return data_source_storage_bucket_object_content_fmt.Errorf("Error downloading storage bucket object: %s", err)
- }
-
- defer res.Body.Close()
- var bodyString string
-
- if res.StatusCode == data_source_storage_bucket_object_content_http.StatusOK {
- bodyBytes, err := data_source_storage_bucket_object_content_ioutil.ReadAll(res.Body)
- if err != nil {
- return data_source_storage_bucket_object_content_fmt.Errorf("Error reading all from res.Body: %s", err)
- }
- bodyString = string(bodyBytes)
- }
-
- if err := d.Set("content", bodyString); err != nil {
- return data_source_storage_bucket_object_content_fmt.Errorf("Error setting content: %s", err)
- }
-
- d.SetId(bucket + "-" + name)
- return nil
-}
-
-const gcsBaseUrl = "https://storage.googleapis.com"
-
-const googleCredentialsEnvVar = "GOOGLE_APPLICATION_CREDENTIALS"
-
-func dataSourceGoogleSignedUrl() *data_source_storage_object_signed_url_schema.Resource {
- return &data_source_storage_object_signed_url_schema.Resource{
- Read: dataSourceGoogleSignedUrlRead,
-
- Schema: map[string]*data_source_storage_object_signed_url_schema.Schema{
- "bucket": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Required: true,
- },
- "content_md5": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Optional: true,
- Default: "",
- },
- "content_type": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Optional: true,
- Default: "",
- },
- "credentials": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Sensitive: true,
- Optional: true,
- },
- "duration": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Optional: true,
- Default: "1h",
- },
- "extension_headers": {
- Type: data_source_storage_object_signed_url_schema.TypeMap,
- Optional: true,
- Elem: &data_source_storage_object_signed_url_schema.Schema{Type: data_source_storage_object_signed_url_schema.TypeString},
- ValidateFunc: validateExtensionHeaders,
- },
- "http_method": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Optional: true,
- Default: "GET",
- ValidateFunc: data_source_storage_object_signed_url_validation.StringInSlice([]string{"GET", "HEAD", "PUT", "DELETE"}, true),
- },
- "path": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Required: true,
- },
- "signed_url": {
- Type: data_source_storage_object_signed_url_schema.TypeString,
- Computed: true,
- },
- },
- }
-}
-
-func validateExtensionHeaders(v interface{}, k string) (ws []string, errors []error) {
- hdrMap := v.(map[string]interface{})
- for k := range hdrMap {
- if !data_source_storage_object_signed_url_strings.HasPrefix(data_source_storage_object_signed_url_strings.ToLower(k), "x-goog-") {
- errors = append(errors, data_source_storage_object_signed_url_fmt.Errorf(
- "extension_header (%s) not valid, header name must begin with 'x-goog-'", k))
- }
- }
- return
-}
-
-func dataSourceGoogleSignedUrlRead(d *data_source_storage_object_signed_url_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
-
- urlData := &UrlData{}
-
- if method, ok := d.GetOk("http_method"); ok {
- urlData.HttpMethod = method.(string)
- }
-
- durationString := "1h"
- if v, ok := d.GetOk("duration"); ok {
- durationString = v.(string)
- }
- duration, err := data_source_storage_object_signed_url_time.ParseDuration(durationString)
- if err != nil {
- return data_source_storage_object_signed_url_errwrap.Wrapf("could not parse duration: {{err}}", err)
- }
- expires := data_source_storage_object_signed_url_time.Now().Unix() + int64(duration.Seconds())
- urlData.Expires = int(expires)
-
- if v, ok := d.GetOk("content_md5"); ok {
- urlData.ContentMd5 = v.(string)
- }
-
- if v, ok := d.GetOk("content_type"); ok {
- urlData.ContentType = v.(string)
- }
-
- if v, ok := d.GetOk("extension_headers"); ok {
- hdrMap := v.(map[string]interface{})
-
- if len(hdrMap) > 0 {
- urlData.HttpHeaders = make(map[string]string, len(hdrMap))
- for k, v := range hdrMap {
- urlData.HttpHeaders[k] = v.(string)
- }
- }
- }
-
- urlData.Path = data_source_storage_object_signed_url_fmt.Sprintf("/%s/%s", d.Get("bucket").(string), d.Get("path").(string))
-
- jwtConfig, err := loadJwtConfig(d, config)
- if err != nil {
- return err
- }
- urlData.JwtConfig = jwtConfig
-
- signedUrl, err := urlData.SignedUrl()
- if err != nil {
- return err
- }
-
- if err := d.Set("signed_url", signedUrl); err != nil {
- return data_source_storage_object_signed_url_fmt.Errorf("Error setting signed_url: %s", err)
- }
-
- encodedSig, err := urlData.EncodedSignature()
- if err != nil {
- return err
- }
- d.SetId(encodedSig)
-
- return nil
-}
-
-func loadJwtConfig(d *data_source_storage_object_signed_url_schema.ResourceData, meta interface{}) (*data_source_storage_object_signed_url_jwt.Config, error) {
- config := meta.(*Config)
-
- credentials := ""
- if v, ok := d.GetOk("credentials"); ok {
- data_source_storage_object_signed_url_log.Println("[DEBUG] using data source credentials to sign URL")
- credentials = v.(string)
-
- } else if config.Credentials != "" {
- data_source_storage_object_signed_url_log.Println("[DEBUG] using provider credentials to sign URL")
- credentials = config.Credentials
-
- } else if filename := data_source_storage_object_signed_url_os.Getenv(googleCredentialsEnvVar); filename != "" {
- data_source_storage_object_signed_url_log.Println("[DEBUG] using env GOOGLE_APPLICATION_CREDENTIALS credentials to sign URL")
- credentials = filename
-
- }
-
- if data_source_storage_object_signed_url_strings.TrimSpace(credentials) != "" {
- contents, _, err := pathOrContents(credentials)
- if err != nil {
- return nil, data_source_storage_object_signed_url_errwrap.Wrapf("Error loading credentials: {{err}}", err)
- }
-
- cfg, err := data_source_storage_object_signed_url_google.JWTConfigFromJSON([]byte(contents), "")
- if err != nil {
- return nil, data_source_storage_object_signed_url_errwrap.Wrapf("Error parsing credentials: {{err}}", err)
- }
- return cfg, nil
- }
-
- return nil, data_source_storage_object_signed_url_errors.New("Credentials not found in datasource, provider configuration or GOOGLE_APPLICATION_CREDENTIALS environment variable.")
-}
-
-func parsePrivateKey(key []byte) (*data_source_storage_object_signed_url_rsa.PrivateKey, error) {
- block, _ := data_source_storage_object_signed_url_pem.Decode(key)
- if block != nil {
- key = block.Bytes
- }
- parsedKey, err := data_source_storage_object_signed_url_x509.ParsePKCS8PrivateKey(key)
- if err != nil {
- parsedKey, err = data_source_storage_object_signed_url_x509.ParsePKCS1PrivateKey(key)
- if err != nil {
- return nil, data_source_storage_object_signed_url_errwrap.Wrapf("private key should be a PEM or plain PKSC1 or PKCS8; parse error: {{err}}", err)
- }
- }
- parsed, ok := parsedKey.(*data_source_storage_object_signed_url_rsa.PrivateKey)
- if !ok {
- return nil, data_source_storage_object_signed_url_errors.New("private key is invalid")
- }
- return parsed, nil
-}
-
-type UrlData struct {
- JwtConfig *data_source_storage_object_signed_url_jwt.Config
- ContentMd5 string
- ContentType string
- HttpMethod string
- Expires int
- HttpHeaders map[string]string
- Path string
-}
-
-func (u *UrlData) SigningString() []byte {
- var buf data_source_storage_object_signed_url_bytes.Buffer
-
- buf.WriteString(u.HttpMethod)
- buf.WriteString("\n")
-
- buf.WriteString(u.ContentMd5)
- buf.WriteString("\n")
-
- buf.WriteString(u.ContentType)
- buf.WriteString("\n")
-
- buf.WriteString(data_source_storage_object_signed_url_strconv.Itoa(u.Expires))
- buf.WriteString("\n")
-
- var keys []string
- for k := range u.HttpHeaders {
- keys = append(keys, data_source_storage_object_signed_url_strings.ToLower(k))
- }
- data_source_storage_object_signed_url_sort.Strings(keys)
-
- for _, k := range keys {
- buf.WriteString(data_source_storage_object_signed_url_fmt.Sprintf("%s:%s\n", k, u.HttpHeaders[k]))
- }
-
- buf.WriteString(u.Path)
-
- return buf.Bytes()
-}
-
-func (u *UrlData) Signature() ([]byte, error) {
-
- signature, err := SignString(u.SigningString(), u.JwtConfig)
- if err != nil {
- return nil, err
-
- }
-
- return signature, nil
-}
-
-func (u *UrlData) EncodedSignature() (string, error) {
- signature, err := u.Signature()
- if err != nil {
- return "", err
- }
-
- encoded := data_source_storage_object_signed_url_base64.StdEncoding.EncodeToString(signature)
-
- encoded = data_source_storage_object_signed_url_url.QueryEscape(encoded)
-
- return encoded, nil
-}
-
-func (u *UrlData) SignedUrl() (string, error) {
-
- encodedSig, err := u.EncodedSignature()
- if err != nil {
- return "", err
- }
-
- var urlBuffer data_source_storage_object_signed_url_bytes.Buffer
- urlBuffer.WriteString(gcsBaseUrl)
- urlBuffer.WriteString(u.Path)
- urlBuffer.WriteString("?GoogleAccessId=")
- urlBuffer.WriteString(u.JwtConfig.Email)
- urlBuffer.WriteString("&Expires=")
- urlBuffer.WriteString(data_source_storage_object_signed_url_strconv.Itoa(u.Expires))
- urlBuffer.WriteString("&Signature=")
- urlBuffer.WriteString(encodedSig)
-
- return urlBuffer.String(), nil
-}
-
-func SignString(toSign []byte, cfg *data_source_storage_object_signed_url_jwt.Config) ([]byte, error) {
-
- pk, err := parsePrivateKey(cfg.PrivateKey)
- if err != nil {
- return nil, data_source_storage_object_signed_url_errwrap.Wrapf("failed to sign string, could not parse key: {{err}}", err)
- }
-
- hasher := data_source_storage_object_signed_url_sha256.New()
- if _, err := hasher.Write(toSign); err != nil {
- return nil, data_source_storage_object_signed_url_errwrap.Wrapf("failed to calculate sha256: {{err}}", err)
- }
-
- signed, err := data_source_storage_object_signed_url_rsa.SignPKCS1v15(data_source_storage_object_signed_url_rand.Reader, pk, data_source_storage_object_signed_url_crypto.SHA256, hasher.Sum(nil))
- if err != nil {
- return nil, data_source_storage_object_signed_url_errwrap.Wrapf("failed to sign string, an error occurred: {{err}}", err)
- }
-
- return signed, nil
-}
-
-func dataSourceTpuTensorflowVersions() *data_source_tpu_tensorflow_versions_schema.Resource {
- return &data_source_tpu_tensorflow_versions_schema.Resource{
- Read: dataSourceTpuTensorFlowVersionsRead,
- Schema: map[string]*data_source_tpu_tensorflow_versions_schema.Schema{
- "project": {
- Type: data_source_tpu_tensorflow_versions_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "zone": {
- Type: data_source_tpu_tensorflow_versions_schema.TypeString,
- Optional: true,
- Computed: true,
- },
- "versions": {
- Type: data_source_tpu_tensorflow_versions_schema.TypeList,
- Computed: true,
- Elem: &data_source_tpu_tensorflow_versions_schema.Schema{Type: data_source_tpu_tensorflow_versions_schema.TypeString},
- },
- },
- }
-}
-
-func dataSourceTpuTensorFlowVersionsRead(d *data_source_tpu_tensorflow_versions_schema.ResourceData, meta interface{}) error {
- config := meta.(*Config)
- userAgent, err := generateUserAgentString(d, config.userAgent)
- if err != nil {
- return err
- }
-
- project, err := getProject(d, config)
- if err != nil {
- return err
- }
-
- zone, err := getZone(d, config)
- if err != nil {
- return err
- }
-
- url, err := replaceVars(d, config, "{{TPUBasePath}}projects/{{project}}/locations/{{zone}}/tensorflowVersions")
- if err != nil {
- return err
- }
-
- versionsRaw, err := paginatedListRequest(project, url, userAgent, config, flattenTpuTensorflowVersions)
- if err != nil {
- return data_source_tpu_tensorflow_versions_fmt.Errorf("Error listing TPU Tensorflow versions: %s", err)
- }
-
- versions := make([]string, len(versionsRaw))
- for i, ver := range versionsRaw {
- versions[i] = ver.(string)
- }
- data_source_tpu_tensorflow_versions_sort.Strings(versions)
-
- data_source_tpu_tensorflow_versions_log.Printf("[DEBUG] Received Google TPU Tensorflow Versions: %q", versions)
-
- if err := d.Set("versions", versions); err != nil {
- return data_source_tpu_tensorflow_versions_fmt.Errorf("Error setting versions: %s", err)
- }
- if err := d.Set("zone", zone); err != nil {
- return data_source_tpu_tensorflow_versions_fmt.Errorf("Error setting zone: %s", err)
- }
- if err := d.Set("project", project); err != nil {
- return data_source_tpu_tensorflow_versions_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(data_source_tpu_tensorflow_versions_fmt.Sprintf("projects/%s/zones/%s", project, zone))
-
- return nil
-}
-
-func flattenTpuTensorflowVersions(resp map[string]interface{}) []interface{} {
- verObjList := resp["tensorflowVersions"].([]interface{})
- versions := make([]interface{}, len(verObjList))
- for i, v := range verObjList {
- verObj := v.(map[string]interface{})
- versions[i] = verObj["version"]
- }
- return versions
-}
-
-type DataprocClusterOperationWaiter struct {
- Service *dataproc_cluster_operation_dataproc.Service
- CommonOperationWaiter
-}
-
-func (w *DataprocClusterOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, dataproc_cluster_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- return w.Service.Projects.Regions.Operations.Get(w.Op.Name).Do()
-}
-
-func dataprocClusterOperationWait(config *Config, op *dataproc_cluster_operation_dataproc.Operation, activity, userAgent string, timeout dataproc_cluster_operation_time.Duration) error {
- w := &DataprocClusterOperationWaiter{
- Service: config.NewDataprocClient(userAgent),
- }
- if err := w.SetOp(op); err != nil {
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type DataprocJobOperationWaiter struct {
- Service *dataproc_job_operation_dataproc.Service
- Region string
- ProjectId string
- JobId string
- Status string
-}
-
-func (w *DataprocJobOperationWaiter) State() string {
- if w == nil {
- return ""
- }
- return w.Status
-}
-
-func (w *DataprocJobOperationWaiter) Error() error {
-
- return nil
-}
-
-func (w *DataprocJobOperationWaiter) IsRetryable(error) bool {
- return false
-}
-
-func (w *DataprocJobOperationWaiter) SetOp(job interface{}) error {
-
- return nil
-}
-
-func (w *DataprocJobOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, dataproc_job_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- job, err := w.Service.Projects.Regions.Jobs.Get(w.ProjectId, w.Region, w.JobId).Do()
- if job != nil {
- w.Status = job.Status.State
- }
- return job, err
-}
-
-func (w *DataprocJobOperationWaiter) OpName() string {
- if w == nil {
- return ""
- }
- return w.JobId
-}
-
-func (w *DataprocJobOperationWaiter) PendingStates() []string {
- return []string{"PENDING", "CANCEL_PENDING", "CANCEL_STARTED", "SETUP_DONE"}
-}
-
-func (w *DataprocJobOperationWaiter) TargetStates() []string {
- return []string{"CANCELLED", "DONE", "ATTEMPT_FAILURE", "ERROR", "RUNNING"}
-}
-
-func dataprocJobOperationWait(config *Config, region, projectId, jobId, activity, userAgent string, timeout dataproc_job_operation_time.Duration) error {
- w := &DataprocJobOperationWaiter{
- Service: config.NewDataprocClient(userAgent),
- Region: region,
- ProjectId: projectId,
- JobId: jobId,
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type DataprocDeleteJobOperationWaiter struct {
- DataprocJobOperationWaiter
-}
-
-func (w *DataprocDeleteJobOperationWaiter) PendingStates() []string {
- return []string{"EXISTS", "ERROR"}
-}
-
-func (w *DataprocDeleteJobOperationWaiter) TargetStates() []string {
- return []string{"DELETED"}
-}
-
-func (w *DataprocDeleteJobOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, dataproc_job_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
- job, err := w.Service.Projects.Regions.Jobs.Get(w.ProjectId, w.Region, w.JobId).Do()
- if err != nil {
- if isGoogleApiErrorWithCode(err, dataproc_job_operation_http.StatusNotFound) {
- w.Status = "DELETED"
- return job, nil
- }
- w.Status = "ERROR"
- }
- w.Status = "EXISTS"
- return job, err
-}
-
-func dataprocDeleteOperationWait(config *Config, region, projectId, jobId, activity, userAgent string, timeout dataproc_job_operation_time.Duration) error {
- w := &DataprocDeleteJobOperationWaiter{
- DataprocJobOperationWaiter{
- Service: config.NewDataprocClient(userAgent),
- Region: region,
- ProjectId: projectId,
- JobId: jobId,
- },
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func datasourceSchemaFromResourceSchema(rs map[string]*datasource_helpers_schema.Schema) map[string]*datasource_helpers_schema.Schema {
- ds := make(map[string]*datasource_helpers_schema.Schema, len(rs))
- for k, v := range rs {
- dv := &datasource_helpers_schema.Schema{
- Computed: true,
- ForceNew: false,
- Required: false,
- Description: v.Description,
- Type: v.Type,
- }
-
- switch v.Type {
- case datasource_helpers_schema.TypeSet:
- dv.Set = v.Set
- fallthrough
- case datasource_helpers_schema.TypeList:
-
- if elem, ok := v.Elem.(*datasource_helpers_schema.Resource); ok {
-
- dv.Elem = &datasource_helpers_schema.Resource{
- Schema: datasourceSchemaFromResourceSchema(elem.Schema),
- }
- } else {
-
- dv.Elem = v.Elem
- }
-
- default:
-
- dv.Elem = v.Elem
-
- }
- ds[k] = dv
-
- }
- return ds
-}
-
-func fixDatasourceSchemaFlags(schema map[string]*datasource_helpers_schema.Schema, required bool, keys ...string) {
- for _, v := range keys {
- schema[v].Computed = false
- schema[v].Optional = !required
- schema[v].Required = required
- }
-}
-
-func addRequiredFieldsToSchema(schema map[string]*datasource_helpers_schema.Schema, keys ...string) {
- fixDatasourceSchemaFlags(schema, true, keys...)
-}
-
-func addOptionalFieldsToSchema(schema map[string]*datasource_helpers_schema.Schema, keys ...string) {
- fixDatasourceSchemaFlags(schema, false, keys...)
-}
-
-type DatastoreOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- CommonOperationWaiter
-}
-
-func (w *DatastoreOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, datastore_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := datastore_operation_fmt.Sprintf("https://datastore.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", w.Project, url, w.UserAgent, nil, datastoreIndex409Contention)
-}
-
-func createDatastoreWaiter(config *Config, op map[string]interface{}, project, activity, userAgent string) (*DatastoreOperationWaiter, error) {
- w := &DatastoreOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- Project: project,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func datastoreOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout datastore_operation_time.Duration) error {
- w, err := createDatastoreWaiter(config, op, project, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return datastore_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func datastoreOperationWaitTime(config *Config, op map[string]interface{}, project, activity, userAgent string, timeout datastore_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createDatastoreWaiter(config, op, project, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-var (
- CreateDirective = []dcl_dcldcl.ApplyOption{
- dcl_dcldcl.WithLifecycleParam(dcl_dcldcl.BlockAcquire),
- dcl_dcldcl.WithLifecycleParam(dcl_dcldcl.BlockDestruction),
- dcl_dcldcl.WithLifecycleParam(dcl_dcldcl.BlockModification),
- }
-
- UpdateDirective = []dcl_dcldcl.ApplyOption{
- dcl_dcldcl.WithLifecycleParam(dcl_dcldcl.BlockCreation),
- dcl_dcldcl.WithLifecycleParam(dcl_dcldcl.BlockDestruction),
- }
-)
-
-type dclLogger struct{}
-
-func (l dclLogger) Fatal(args ...interface{}) {
- dcl_logger_log.Fatal(args...)
-}
-
-func (l dclLogger) Fatalf(format string, args ...interface{}) {
- dcl_logger_log.Fatalf(dcl_logger_fmt.Sprintf("[DEBUG][DCL FATAL] %s", format), args...)
-}
-
-func (l dclLogger) Info(args ...interface{}) {
- dcl_logger_log.Print(args...)
-}
-
-func (l dclLogger) Infof(format string, args ...interface{}) {
- dcl_logger_log.Printf(dcl_logger_fmt.Sprintf("[DEBUG][DCL INFO] %s", format), args...)
-}
-
-func (l dclLogger) Warningf(format string, args ...interface{}) {
- dcl_logger_log.Printf(dcl_logger_fmt.Sprintf("[DEBUG][DCL WARNING] %s", format), args...)
-}
-
-func (l dclLogger) Warning(args ...interface{}) {
- dcl_logger_log.Print(args...)
-}
-
-type DeploymentManagerOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- OperationUrl string
- ComputeOperationWaiter
-}
-
-func (w *DeploymentManagerOperationWaiter) IsRetryable(error) bool {
- return false
-}
-
-func (w *DeploymentManagerOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil || w.Op == nil || w.Op.SelfLink == "" {
- return nil, deployment_manager_operation_fmt.Errorf("cannot query unset/nil operation")
- }
-
- resp, err := sendRequest(w.Config, "GET", w.Project, w.Op.SelfLink, w.UserAgent, nil)
- if err != nil {
- return nil, err
- }
- op := &deployment_manager_operation_compute.Operation{}
- if err := Convert(resp, op); err != nil {
- return nil, deployment_manager_operation_fmt.Errorf("could not convert response to operation: %v", err)
- }
- return op, nil
-}
-
-func deploymentManagerOperationWaitTime(config *Config, resp interface{}, project, activity, userAgent string, timeout deployment_manager_operation_time.Duration) error {
- op := &deployment_manager_operation_compute.Operation{}
- err := Convert(resp, op)
- if err != nil {
- return err
- }
-
- w := &DeploymentManagerOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- OperationUrl: op.SelfLink,
- ComputeOperationWaiter: ComputeOperationWaiter{
- Project: project,
- },
- }
- if err := w.SetOp(op); err != nil {
- return err
- }
-
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func (w *DeploymentManagerOperationWaiter) Error() error {
- if w != nil && w.Op != nil && w.Op.Error != nil {
- return DeploymentManagerOperationError{
- HTTPStatusCode: w.Op.HttpErrorStatusCode,
- HTTPMessage: w.Op.HttpErrorMessage,
- OperationError: *w.Op.Error,
- }
- }
- return nil
-}
-
-type DeploymentManagerOperationError struct {
- HTTPStatusCode int64
- HTTPMessage string
- deployment_manager_operation_compute.OperationError
-}
-
-func (e DeploymentManagerOperationError) Error() string {
- var buf deployment_manager_operation_bytes.Buffer
- buf.WriteString("Deployment Manager returned errors for this operation, likely due to invalid configuration.")
- buf.WriteString(deployment_manager_operation_fmt.Sprintf("Operation failed with HTTP error %d: %s.", e.HTTPStatusCode, e.HTTPMessage))
- buf.WriteString("Errors returned: \n")
- for _, err := range e.Errors {
- buf.WriteString(err.Message + "\n")
- }
- return buf.String()
-}
-
-type DialogflowCXOperationWaiter struct {
- Config *Config
- UserAgent string
- CommonOperationWaiter
-}
-
-func (w *DialogflowCXOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, dialogflow_cx_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := dialogflow_cx_operation_fmt.Sprintf("https://dialogflow.googleapis.com/v3/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", "", url, w.UserAgent, nil)
-}
-
-func createDialogflowCXWaiter(config *Config, op map[string]interface{}, activity, userAgent string) (*DialogflowCXOperationWaiter, error) {
- w := &DialogflowCXOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func dialogflowCXOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, activity, userAgent string, timeout dialogflow_cx_operation_time.Duration) error {
- w, err := createDialogflowCXWaiter(config, op, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return dialogflow_cx_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func dialogflowCXOperationWaitTime(config *Config, op map[string]interface{}, activity, userAgent string, timeout dialogflow_cx_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createDialogflowCXWaiter(config, op, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func readDiskType(c *Config, d TerraformResourceData, name string) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("diskTypes", name, "project", "zone", d, c, false)
-}
-
-func readRegionDiskType(c *Config, d TerraformResourceData, name string) (*RegionalFieldValue, error) {
- return parseRegionalFieldValue("diskTypes", name, "project", "region", "zone", d, c, false)
-}
-
-type DnsChangeWaiter struct {
- Service *dns_change_dns.Service
- Change *dns_change_dns.Change
- Project string
- ManagedZone string
-}
-
-func (w *DnsChangeWaiter) RefreshFunc() dns_change_resource.StateRefreshFunc {
- return func() (interface{}, string, error) {
- var chg *dns_change_dns.Change
- var err error
-
- chg, err = w.Service.Changes.Get(
- w.Project, w.ManagedZone, w.Change.Id).Do()
-
- if err != nil {
- return nil, "", err
- }
-
- return chg, chg.Status, nil
- }
-}
-
-func (w *DnsChangeWaiter) Conf() *dns_change_resource.StateChangeConf {
- return &dns_change_resource.StateChangeConf{
- Pending: []string{"pending"},
- Target: []string{"done"},
- Refresh: w.RefreshFunc(),
- Timeout: 10 * dns_change_time.Minute,
- MinTimeout: 2 * dns_change_time.Second,
- }
-}
-
-type RetryErrorPredicateFunc func(error) (bool, string)
-
-var defaultErrorRetryPredicates = []RetryErrorPredicateFunc{
-
- isNetworkTemporaryError,
- isNetworkTimeoutError,
- isIoEOFError,
- isConnectionResetNetworkError,
-
- isCommonRetryableErrorCode,
-
- is409OperationInProgressError,
-
- isSubnetworkUnreadyError,
-}
-
-func isNetworkTemporaryError(err error) (bool, string) {
- if netErr, ok := err.(*error_retry_predicates_net.OpError); ok && netErr.Temporary() {
- return true, "marked as timeout"
- }
- if urlerr, ok := err.(*error_retry_predicates_url.Error); ok && urlerr.Temporary() {
- return true, "marked as timeout"
- }
- return false, ""
-}
-
-func isNetworkTimeoutError(err error) (bool, string) {
- if netErr, ok := err.(*error_retry_predicates_net.OpError); ok && netErr.Timeout() {
- return true, "marked as timeout"
- }
- if urlerr, ok := err.(*error_retry_predicates_url.Error); ok && urlerr.Timeout() {
- return true, "marked as timeout"
- }
- return false, ""
-}
-
-func isIoEOFError(err error) (bool, string) {
- if err == error_retry_predicates_io.ErrUnexpectedEOF {
- return true, "Got unexpected EOF"
- }
-
- if urlerr, urlok := err.(*error_retry_predicates_url.Error); urlok {
- wrappedErr := urlerr.Unwrap()
- if wrappedErr == error_retry_predicates_io.ErrUnexpectedEOF {
- return true, "Got unexpected EOF"
- }
- }
- return false, ""
-}
-
-const connectionResetByPeerErr = ": connection reset by peer"
-
-func isConnectionResetNetworkError(err error) (bool, string) {
- if error_retry_predicates_strings.HasSuffix(err.Error(), connectionResetByPeerErr) {
- return true, error_retry_predicates_fmt.Sprintf("reset connection error: %v", err)
- }
- return false, ""
-}
-
-func is409OperationInProgressError(err error) (bool, string) {
- gerr, ok := err.(*error_retry_predicates_googleapi.Error)
- if !ok {
- return false, ""
- }
-
- if gerr.Code == 409 && error_retry_predicates_strings.Contains(gerr.Body, "operationInProgress") {
- error_retry_predicates_log.Printf("[DEBUG] Dismissed an error as retryable based on error code 409 and error reason 'operationInProgress': %s", err)
- return true, "Operation still in progress"
- }
- return false, ""
-}
-
-func isSubnetworkUnreadyError(err error) (bool, string) {
- gerr, ok := err.(*error_retry_predicates_googleapi.Error)
- if !ok {
- return false, ""
- }
-
- if gerr.Code == 400 && error_retry_predicates_strings.Contains(gerr.Body, "resourceNotReady") && error_retry_predicates_strings.Contains(gerr.Body, "subnetworks") {
- error_retry_predicates_log.Printf("[DEBUG] Dismissed an error as retryable based on error code 400 and error reason 'resourceNotReady' w/ `subnetwork`: %s", err)
- return true, "Subnetwork not ready"
- }
- return false, ""
-}
-
-func isCommonRetryableErrorCode(err error) (bool, string) {
- gerr, ok := err.(*error_retry_predicates_googleapi.Error)
- if !ok {
- return false, ""
- }
-
- if gerr.Code == 429 || gerr.Code == 500 || gerr.Code == 502 || gerr.Code == 503 {
- error_retry_predicates_log.Printf("[DEBUG] Dismissed an error as retryable based on error code: %s", err)
- return true, error_retry_predicates_fmt.Sprintf("Retryable error code %d", gerr.Code)
- }
- return false, ""
-}
-
-var FINGERPRINT_FAIL_ERRORS = []string{"Invalid fingerprint.", "Supplied fingerprint does not match current metadata fingerprint."}
-
-func isFingerprintError(err error) (bool, string) {
- gerr, ok := err.(*error_retry_predicates_googleapi.Error)
- if !ok {
- return false, ""
- }
-
- if gerr.Code != 412 {
- return false, ""
- }
-
- for _, msg := range FINGERPRINT_FAIL_ERRORS {
- if error_retry_predicates_strings.Contains(err.Error(), msg) {
- return true, "fingerprint mismatch"
- }
- }
-
- return false, ""
-}
-
-func iamMemberMissing(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 400 && error_retry_predicates_strings.Contains(gerr.Body, "permission") {
- return true, "Waiting for IAM member permissions to propagate."
- }
- }
- return false, ""
-}
-
-func pubsubTopicProjectNotReady(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 400 && error_retry_predicates_strings.Contains(gerr.Body, "retry this operation") {
- error_retry_predicates_log.Printf("[DEBUG] Dismissed error as a retryable operation: %s", err)
- return true, "Waiting for Pubsub topic's project to properly initialize with organiation policy"
- }
- }
- return false, ""
-}
-
-func isSqlInternalError(err error) (bool, string) {
- if gerr, ok := err.(*SqlAdminOperationError); ok {
-
- var ierr interface{}
- ierr = gerr
- if serr, ok := ierr.(*error_retry_predicates_sqladminsqladmin.OperationErrors); ok && serr.Errors[0].Code == "INTERNAL_ERROR" {
- return true, "Received an internal error, which is sometimes retryable for some SQL resources. Optimistically retrying."
- }
-
- }
- return false, ""
-}
-
-func isSqlOperationInProgressError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok && gerr.Code == 409 {
- if error_retry_predicates_strings.Contains(gerr.Body, "instanceAlreadyExists") {
- return false, ""
- }
-
- return true, "Waiting for other concurrent Cloud SQL operations to finish"
- }
- return false, ""
-}
-
-func serviceUsageServiceBeingActivated(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok && gerr.Code == 400 {
- if error_retry_predicates_strings.Contains(gerr.Body, "Another activation or deactivation is in progress") {
- return true, "Waiting for same service activation/deactivation to finish"
- }
-
- return false, ""
- }
- return false, ""
-}
-
-func isBigqueryIAMQuotaError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 403 && error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "exceeded rate limits") {
- return true, "Waiting for Bigquery edit quota to refresh"
- }
- }
- return false, ""
-}
-
-func isOperationReadQuotaError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 403 && error_retry_predicates_strings.Contains(gerr.Body, "Quota exceeded for quota group") {
- return true, "Waiting for quota to refresh"
- }
- }
- return false, ""
-}
-
-func isMonitoringConcurrentEditError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 409 && (error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "too many concurrent edits") ||
- error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "could not fulfill the request")) {
- return true, "Waiting for other Monitoring changes to finish"
- }
- }
- return false, ""
-}
-
-func isNotFilestoreQuotaError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 429 {
- return false, ""
- }
- }
- return isCommonRetryableErrorCode(err)
-}
-
-func isAppEngineRetryableError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 409 && error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "operation is already in progress") {
- return true, "Waiting for other concurrent App Engine changes to finish"
- }
- if gerr.Code == 404 && error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "unable to retrieve p4sa") {
- return true, "Waiting for P4SA propagation to GAIA"
- }
- }
- return false, ""
-}
-
-func isCryptoKeyVersionsPendingGeneration(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok && gerr.Code == 400 {
- if error_retry_predicates_strings.Contains(gerr.Body, "PENDING_GENERATION") {
- return true, "Waiting for pending key generation"
- }
- }
- return false, ""
-}
-
-func isNotFoundRetryableError(opType string) RetryErrorPredicateFunc {
- return func(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok && gerr.Code == 404 {
- return true, error_retry_predicates_fmt.Sprintf("Retry 404s for %s", opType)
- }
- return false, ""
- }
-}
-
-func isDataflowJobUpdateRetryableError(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 404 && error_retry_predicates_strings.Contains(gerr.Body, "in RUNNING OR DRAINING state") {
- return true, "Waiting for job to be in a valid state"
- }
- }
- return false, ""
-}
-
-func isPeeringOperationInProgress(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 400 && error_retry_predicates_strings.Contains(gerr.Body, "There is a peering operation in progress") {
- return true, "Waiting peering operation to complete"
- }
- }
- return false, ""
-}
-
-func isCloudFunctionsSourceCodeError(err error) (bool, string) {
- if operr, ok := err.(*CommonOpError); ok {
- if operr.Code == 3 && operr.Message == "Failed to retrieve function source code" {
- return true, error_retry_predicates_fmt.Sprintf("Retry on Function failing to pull code from GCS")
- }
- }
- return false, ""
-}
-
-func datastoreIndex409Contention(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 409 && error_retry_predicates_strings.Contains(gerr.Body, "too much contention") {
- return true, "too much contention - waiting for less activity"
- }
- }
- return false, ""
-}
-
-func iapClient409Operation(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 409 && error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "operation was aborted") {
- return true, "operation was aborted possibly due to concurrency issue - retrying"
- }
- }
- return false, ""
-}
-
-func healthcareDatasetNotInitialized(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 404 && error_retry_predicates_strings.Contains(error_retry_predicates_strings.ToLower(gerr.Body), "dataset not initialized") {
- return true, "dataset not initialized - retrying"
- }
- }
- return false, ""
-}
-
-func isCloudRunCreationConflict(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 409 {
- return true, "saw a 409 - waiting until background deletion completes"
- }
- }
-
- return false, ""
-}
-
-func iamServiceAccountNotFound(err error) (bool, string) {
- if gerr, ok := err.(*error_retry_predicates_googleapi.Error); ok {
- if gerr.Code == 400 && error_retry_predicates_strings.Contains(gerr.Body, "Service account") && error_retry_predicates_strings.Contains(gerr.Body, "does not exist") {
- return true, "service account not found in IAM"
- }
- }
-
- return false, ""
-}
-
-func isBigTableRetryableError(err error) (bool, string) {
- statusCode := error_retry_predicates_status.Code(err)
- if statusCode.String() == "FailedPrecondition" {
- return true, "Waiting for table to be in a valid state"
- }
-
- return false, ""
-}
-
-func expandStringArray(v interface{}) []string {
- arr, ok := v.([]string)
-
- if ok {
- return arr
- }
-
- if arr, ok := v.(*expanders_schema.Set); ok {
- return convertStringSet(arr)
- }
-
- arr = convertStringArr(v.([]interface{}))
- if arr == nil {
-
- return make([]string, 0)
- }
- return arr
-}
-
-func expandIntegerArray(v interface{}) []int64 {
- arr, ok := v.([]int64)
-
- if ok {
- return arr
- }
-
- if arr, ok := v.(*expanders_schema.Set); ok {
- return convertIntegerSet(arr)
- }
-
- return convertIntegerArr(v.([]interface{}))
-}
-
-func convertIntegerSet(v *expanders_schema.Set) []int64 {
- return convertIntegerArr(v.List())
-}
-
-func convertIntegerArr(v []interface{}) []int64 {
- var vi []int64
- for _, vs := range v {
- vi = append(vi, int64(vs.(int)))
- }
- return vi
-}
-
-func expandEnumBool(v interface{}) *bool {
- s, ok := v.(string)
- if !ok {
- return nil
- }
- switch s {
- case "TRUE":
- b := true
- return &b
- case "FALSE":
- b := false
- return &b
- }
- return nil
-}
-
-const (
- globalLinkTemplate = "projects/%s/global/%s/%s"
- globalLinkBasePattern = "projects/(.+)/global/%s/(.+)"
- zonalLinkTemplate = "projects/%s/zones/%s/%s/%s"
- zonalLinkBasePattern = "projects/(.+)/zones/(.+)/%s/(.+)"
- zonalPartialLinkBasePattern = "zones/(.+)/%s/(.+)"
- regionalLinkTemplate = "projects/%s/regions/%s/%s/%s"
- regionalLinkBasePattern = "projects/(.+)/regions/(.+)/%s/(.+)"
- regionalPartialLinkBasePattern = "regions/(.+)/%s/(.+)"
- projectLinkTemplate = "projects/%s/%s/%s"
- projectBasePattern = "projects/(.+)/%s/(.+)"
- organizationLinkTemplate = "organizations/%s/%s/%s"
- organizationBasePattern = "organizations/(.+)/%s/(.+)"
-)
-
-func ParseNetworkFieldValue(network string, d TerraformResourceData, config *Config) (*GlobalFieldValue, error) {
- return parseGlobalFieldValue("networks", network, "project", d, config, true)
-}
-
-func ParseSubnetworkFieldValue(subnetwork string, d TerraformResourceData, config *Config) (*RegionalFieldValue, error) {
- return parseRegionalFieldValue("subnetworks", subnetwork, "project", "region", "zone", d, config, true)
-}
-
-func ParseSubnetworkFieldValueWithProjectField(subnetwork, projectField string, d TerraformResourceData, config *Config) (*RegionalFieldValue, error) {
- return parseRegionalFieldValue("subnetworks", subnetwork, projectField, "region", "zone", d, config, true)
-}
-
-func ParseSslCertificateFieldValue(sslCertificate string, d TerraformResourceData, config *Config) (*GlobalFieldValue, error) {
- return parseGlobalFieldValue("sslCertificates", sslCertificate, "project", d, config, false)
-}
-
-func ParseHttpHealthCheckFieldValue(healthCheck string, d TerraformResourceData, config *Config) (*GlobalFieldValue, error) {
- return parseGlobalFieldValue("httpHealthChecks", healthCheck, "project", d, config, false)
-}
-
-func ParseDiskFieldValue(disk string, d TerraformResourceData, config *Config) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("disks", disk, "project", "zone", d, config, false)
-}
-
-func ParseRegionDiskFieldValue(disk string, d TerraformResourceData, config *Config) (*RegionalFieldValue, error) {
- return parseRegionalFieldValue("disks", disk, "project", "region", "zone", d, config, false)
-}
-
-func ParseOrganizationCustomRoleName(role string) (*OrganizationFieldValue, error) {
- return parseOrganizationFieldValue("roles", role, false)
-}
-
-func ParseAcceleratorFieldValue(accelerator string, d TerraformResourceData, config *Config) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("acceleratorTypes", accelerator, "project", "zone", d, config, false)
-}
-
-func ParseMachineTypesFieldValue(machineType string, d TerraformResourceData, config *Config) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("machineTypes", machineType, "project", "zone", d, config, false)
-}
-
-func ParseInstanceFieldValue(instance string, d TerraformResourceData, config *Config) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("instances", instance, "project", "zone", d, config, false)
-}
-
-func ParseInstanceGroupFieldValue(instanceGroup string, d TerraformResourceData, config *Config) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("instanceGroups", instanceGroup, "project", "zone", d, config, false)
-}
-
-func ParseInstanceTemplateFieldValue(instanceTemplate string, d TerraformResourceData, config *Config) (*GlobalFieldValue, error) {
- return parseGlobalFieldValue("instanceTemplates", instanceTemplate, "project", d, config, false)
-}
-
-func ParseMachineImageFieldValue(machineImage string, d TerraformResourceData, config *Config) (*GlobalFieldValue, error) {
- return parseGlobalFieldValue("machineImages", machineImage, "project", d, config, false)
-}
-
-func ParseSecurityPolicyFieldValue(securityPolicy string, d TerraformResourceData, config *Config) (*GlobalFieldValue, error) {
- return parseGlobalFieldValue("securityPolicies", securityPolicy, "project", d, config, true)
-}
-
-func ParseNetworkEndpointGroupFieldValue(networkEndpointGroup string, d TerraformResourceData, config *Config) (*ZonalFieldValue, error) {
- return parseZonalFieldValue("networkEndpointGroups", networkEndpointGroup, "project", "zone", d, config, false)
-}
-
-type GlobalFieldValue struct {
- Project string
- Name string
-
- resourceType string
-}
-
-func (f GlobalFieldValue) RelativeLink() string {
- if len(f.Name) == 0 {
- return ""
- }
-
- return field_helpers_fmt.Sprintf(globalLinkTemplate, f.Project, f.resourceType, f.Name)
-}
-
-func parseGlobalFieldValue(resourceType, fieldValue, projectSchemaField string, d TerraformResourceData, config *Config, isEmptyValid bool) (*GlobalFieldValue, error) {
- if len(fieldValue) == 0 {
- if isEmptyValid {
- return &GlobalFieldValue{resourceType: resourceType}, nil
- }
- return nil, field_helpers_fmt.Errorf("The global field for resource %s cannot be empty", resourceType)
- }
-
- r := field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(globalLinkBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &GlobalFieldValue{
- Project: parts[1],
- Name: parts[2],
-
- resourceType: resourceType,
- }, nil
- }
-
- project, err := getProjectFromSchema(projectSchemaField, d, config)
- if err != nil {
- return nil, err
- }
-
- return &GlobalFieldValue{
- Project: project,
- Name: GetResourceNameFromSelfLink(fieldValue),
-
- resourceType: resourceType,
- }, nil
-}
-
-type ZonalFieldValue struct {
- Project string
- Zone string
- Name string
-
- resourceType string
-}
-
-func (f ZonalFieldValue) RelativeLink() string {
- if len(f.Name) == 0 {
- return ""
- }
-
- return field_helpers_fmt.Sprintf(zonalLinkTemplate, f.Project, f.Zone, f.resourceType, f.Name)
-}
-
-func parseZonalFieldValue(resourceType, fieldValue, projectSchemaField, zoneSchemaField string, d TerraformResourceData, config *Config, isEmptyValid bool) (*ZonalFieldValue, error) {
- if len(fieldValue) == 0 {
- if isEmptyValid {
- return &ZonalFieldValue{resourceType: resourceType}, nil
- }
- return nil, field_helpers_fmt.Errorf("The zonal field for resource %s cannot be empty.", resourceType)
- }
-
- r := field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(zonalLinkBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &ZonalFieldValue{
- Project: parts[1],
- Zone: parts[2],
- Name: parts[3],
- resourceType: resourceType,
- }, nil
- }
-
- project, err := getProjectFromSchema(projectSchemaField, d, config)
- if err != nil {
- return nil, err
- }
-
- r = field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(zonalPartialLinkBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &ZonalFieldValue{
- Project: project,
- Zone: parts[1],
- Name: parts[2],
- resourceType: resourceType,
- }, nil
- }
-
- if len(zoneSchemaField) == 0 {
- return nil, field_helpers_fmt.Errorf("Invalid field format. Got '%s', expected format '%s'", fieldValue, field_helpers_fmt.Sprintf(globalLinkTemplate, "{project}", resourceType, "{name}"))
- }
-
- zone, ok := d.GetOk(zoneSchemaField)
- if !ok {
- zone = config.Zone
- if zone == "" {
- return nil, field_helpers_fmt.Errorf("A zone must be specified")
- }
- }
-
- return &ZonalFieldValue{
- Project: project,
- Zone: zone.(string),
- Name: GetResourceNameFromSelfLink(fieldValue),
- resourceType: resourceType,
- }, nil
-}
-
-func getProjectFromSchema(projectSchemaField string, d TerraformResourceData, config *Config) (string, error) {
- res, ok := d.GetOk(projectSchemaField)
- if ok && projectSchemaField != "" {
- return res.(string), nil
- }
- if config.Project != "" {
- return config.Project, nil
- }
- return "", field_helpers_fmt.Errorf("%s: required field is not set", projectSchemaField)
-}
-
-func getBillingProjectFromSchema(billingProjectSchemaField string, d TerraformResourceData, config *Config) (string, error) {
- res, ok := d.GetOk(billingProjectSchemaField)
- if ok && billingProjectSchemaField != "" {
- return res.(string), nil
- }
- if config.BillingProject != "" {
- return config.BillingProject, nil
- }
- return "", field_helpers_fmt.Errorf("%s: required field is not set", billingProjectSchemaField)
-}
-
-type OrganizationFieldValue struct {
- OrgId string
- Name string
-
- resourceType string
-}
-
-func (f OrganizationFieldValue) RelativeLink() string {
- if len(f.Name) == 0 {
- return ""
- }
-
- return field_helpers_fmt.Sprintf(organizationLinkTemplate, f.OrgId, f.resourceType, f.Name)
-}
-
-func parseOrganizationFieldValue(resourceType, fieldValue string, isEmptyValid bool) (*OrganizationFieldValue, error) {
- if len(fieldValue) == 0 {
- if isEmptyValid {
- return &OrganizationFieldValue{resourceType: resourceType}, nil
- }
- return nil, field_helpers_fmt.Errorf("The organization field for resource %s cannot be empty", resourceType)
- }
-
- r := field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(organizationBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &OrganizationFieldValue{
- OrgId: parts[1],
- Name: parts[2],
-
- resourceType: resourceType,
- }, nil
- }
-
- return nil, field_helpers_fmt.Errorf("Invalid field format. Got '%s', expected format '%s'", fieldValue, field_helpers_fmt.Sprintf(organizationLinkTemplate, "{org_id}", resourceType, "{name}"))
-}
-
-type RegionalFieldValue struct {
- Project string
- Region string
- Name string
-
- resourceType string
-}
-
-func (f RegionalFieldValue) RelativeLink() string {
- if len(f.Name) == 0 {
- return ""
- }
-
- return field_helpers_fmt.Sprintf(regionalLinkTemplate, f.Project, f.Region, f.resourceType, f.Name)
-}
-
-func parseRegionalFieldValue(resourceType, fieldValue, projectSchemaField, regionSchemaField, zoneSchemaField string, d TerraformResourceData, config *Config, isEmptyValid bool) (*RegionalFieldValue, error) {
- if len(fieldValue) == 0 {
- if isEmptyValid {
- return &RegionalFieldValue{resourceType: resourceType}, nil
- }
- return nil, field_helpers_fmt.Errorf("The regional field for resource %s cannot be empty.", resourceType)
- }
-
- r := field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(regionalLinkBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &RegionalFieldValue{
- Project: parts[1],
- Region: parts[2],
- Name: parts[3],
- resourceType: resourceType,
- }, nil
- }
-
- project, err := getProjectFromSchema(projectSchemaField, d, config)
- if err != nil {
- return nil, err
- }
-
- r = field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(regionalPartialLinkBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &RegionalFieldValue{
- Project: project,
- Region: parts[1],
- Name: parts[2],
- resourceType: resourceType,
- }, nil
- }
-
- region, err := getRegionFromSchema(regionSchemaField, zoneSchemaField, d, config)
- if err != nil {
- return nil, err
- }
-
- return &RegionalFieldValue{
- Project: project,
- Region: region,
- Name: GetResourceNameFromSelfLink(fieldValue),
- resourceType: resourceType,
- }, nil
-}
-
-func getRegionFromSchema(regionSchemaField, zoneSchemaField string, d TerraformResourceData, config *Config) (string, error) {
-
- if regionSchemaField == zoneSchemaField {
- if v, ok := d.GetOk(regionSchemaField); ok {
- if isZone(v.(string)) {
- return getRegionFromZone(v.(string)), nil
- }
-
- return v.(string), nil
- }
- }
-
- if v, ok := d.GetOk(regionSchemaField); ok && regionSchemaField != "" {
- return GetResourceNameFromSelfLink(v.(string)), nil
- }
- if v, ok := d.GetOk(zoneSchemaField); ok && zoneSchemaField != "" {
- return getRegionFromZone(v.(string)), nil
- }
- if config.Region != "" {
- return config.Region, nil
- }
- if config.Zone != "" {
- return getRegionFromZone(config.Zone), nil
- }
-
- return "", field_helpers_fmt.Errorf("Cannot determine region: set in this resource, or set provider-level 'region' or 'zone'.")
-}
-
-type ProjectFieldValue struct {
- Project string
- Name string
-
- resourceType string
-}
-
-func (f ProjectFieldValue) RelativeLink() string {
- if len(f.Name) == 0 {
- return ""
- }
-
- return field_helpers_fmt.Sprintf(projectLinkTemplate, f.Project, f.resourceType, f.Name)
-}
-
-func parseProjectFieldValue(resourceType, fieldValue, projectSchemaField string, d TerraformResourceData, config *Config, isEmptyValid bool) (*ProjectFieldValue, error) {
- if len(fieldValue) == 0 {
- if isEmptyValid {
- return &ProjectFieldValue{resourceType: resourceType}, nil
- }
- return nil, field_helpers_fmt.Errorf("The project field for resource %s cannot be empty", resourceType)
- }
-
- r := field_helpers_regexp.MustCompile(field_helpers_fmt.Sprintf(projectBasePattern, resourceType))
- if parts := r.FindStringSubmatch(fieldValue); parts != nil {
- return &ProjectFieldValue{
- Project: parts[1],
- Name: parts[2],
-
- resourceType: resourceType,
- }, nil
- }
-
- project, err := getProjectFromSchema(projectSchemaField, d, config)
- if err != nil {
- return nil, err
- }
-
- return &ProjectFieldValue{
- Project: project,
- Name: GetResourceNameFromSelfLink(fieldValue),
-
- resourceType: resourceType,
- }, nil
-}
-
-type FilestoreOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- CommonOperationWaiter
-}
-
-func (w *FilestoreOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, filestore_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := filestore_operation_fmt.Sprintf("https://file.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", w.Project, url, w.UserAgent, nil, isNotFilestoreQuotaError)
-}
-
-func createFilestoreWaiter(config *Config, op map[string]interface{}, project, activity, userAgent string) (*FilestoreOperationWaiter, error) {
- w := &FilestoreOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- Project: project,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func filestoreOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout filestore_operation_time.Duration) error {
- w, err := createFilestoreWaiter(config, op, project, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return filestore_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func filestoreOperationWaitTime(config *Config, op map[string]interface{}, project, activity, userAgent string, timeout filestore_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createFilestoreWaiter(config, op, project, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type FirestoreOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- CommonOperationWaiter
-}
-
-func (w *FirestoreOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, firestore_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := firestore_operation_fmt.Sprintf("https://firestore.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", w.Project, url, w.UserAgent, nil)
-}
-
-func createFirestoreWaiter(config *Config, op map[string]interface{}, project, activity, userAgent string) (*FirestoreOperationWaiter, error) {
- w := &FirestoreOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- Project: project,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func firestoreOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout firestore_operation_time.Duration) error {
- w, err := createFirestoreWaiter(config, op, project, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return firestore_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func firestoreOperationWaitTime(config *Config, op map[string]interface{}, project, activity, userAgent string, timeout firestore_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createFirestoreWaiter(config, op, project, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func flattenEnumBool(v interface{}) string {
- b, ok := v.(*bool)
- if !ok || b == nil {
- return ""
- }
- if *b {
- return "TRUE"
- }
- return "FALSE"
-}
-
-type GameServicesOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- CommonOperationWaiter
-}
-
-func (w *GameServicesOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, game_services_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := game_services_operation_fmt.Sprintf("https://gameservices.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", w.Project, url, w.UserAgent, nil)
-}
-
-func createGameServicesWaiter(config *Config, op map[string]interface{}, project, activity, userAgent string) (*GameServicesOperationWaiter, error) {
- w := &GameServicesOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- Project: project,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func gameServicesOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout game_services_operation_time.Duration) error {
- w, err := createGameServicesWaiter(config, op, project, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return game_services_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func gameServicesOperationWaitTime(config *Config, op map[string]interface{}, project, activity, userAgent string, timeout game_services_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createGameServicesWaiter(config, op, project, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-type GKEHubOperationWaiter struct {
- Config *Config
- UserAgent string
- Project string
- CommonOperationWaiter
-}
-
-func (w *GKEHubOperationWaiter) QueryOp() (interface{}, error) {
- if w == nil {
- return nil, gke_hub_operation_fmt.Errorf("Cannot query operation, it's unset or nil.")
- }
-
- url := gke_hub_operation_fmt.Sprintf("https://gkehub.googleapis.com/v1/%s", w.CommonOperationWaiter.Op.Name)
-
- return sendRequest(w.Config, "GET", w.Project, url, w.UserAgent, nil)
-}
-
-func createGKEHubWaiter(config *Config, op map[string]interface{}, project, activity, userAgent string) (*GKEHubOperationWaiter, error) {
- w := &GKEHubOperationWaiter{
- Config: config,
- UserAgent: userAgent,
- Project: project,
- }
- if err := w.CommonOperationWaiter.SetOp(op); err != nil {
- return nil, err
- }
- return w, nil
-}
-
-func gKEHubOperationWaitTimeWithResponse(config *Config, op map[string]interface{}, response *map[string]interface{}, project, activity, userAgent string, timeout gke_hub_operation_time.Duration) error {
- w, err := createGKEHubWaiter(config, op, project, activity, userAgent)
- if err != nil {
- return err
- }
- if err := OperationWait(w, activity, timeout, config.PollInterval); err != nil {
- return err
- }
- return gke_hub_operation_json.Unmarshal([]byte(w.CommonOperationWaiter.Op.Response), response)
-}
-
-func gKEHubOperationWaitTime(config *Config, op map[string]interface{}, project, activity, userAgent string, timeout gke_hub_operation_time.Duration) error {
- if val, ok := op["name"]; !ok || val == "" {
-
- return nil
- }
- w, err := createGKEHubWaiter(config, op, project, activity, userAgent)
- if err != nil {
-
- return err
- }
- return OperationWait(w, activity, timeout, config.PollInterval)
-}
-
-func hashcode(s string) int {
- v := int(hashcode_crc32.ChecksumIEEE([]byte(s)))
- if v >= 0 {
- return v
- }
- if -v >= 0 {
- return -v
- }
-
- return 0
-}
-
-type headerTransportLayer struct {
- header_transport_http.Header
- baseTransit header_transport_http.RoundTripper
-}
-
-func newTransportWithHeaders(baseTransit header_transport_http.RoundTripper) headerTransportLayer {
- if baseTransit == nil {
- baseTransit = header_transport_http.DefaultTransport
- }
-
- headers := make(header_transport_http.Header)
-
- return headerTransportLayer{Header: headers, baseTransit: baseTransit}
-}
-
-func (h headerTransportLayer) RoundTrip(req *header_transport_http.Request) (*header_transport_http.Response, error) {
- for key, value := range h.Header {
-
- if _, ok := req.Header[key]; !ok {
- req.Header[key] = value
- }
- }
- return h.baseTransit.RoundTrip(req)
-}
-
-type healthcareDatasetId struct {
- Project string
- Location string
- Name string
-}
-
-func (s *healthcareDatasetId) datasetId() string {
- return healthcare_utils_fmt.Sprintf("projects/%s/locations/%s/datasets/%s", s.Project, s.Location, s.Name)
-}
-
-func (s *healthcareDatasetId) terraformId() string {
- return healthcare_utils_fmt.Sprintf("%s/%s/%s", s.Project, s.Location, s.Name)
-}
-
-func parseHealthcareDatasetId(id string, config *Config) (*healthcareDatasetId, error) {
- parts := healthcare_utils_strings.Split(id, "/")
-
- datasetIdRegex := healthcare_utils_regexp.MustCompile("^(" + ProjectRegex + ")/([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})$")
- datasetIdWithoutProjectRegex := healthcare_utils_regexp.MustCompile("^([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})$")
- datasetRelativeLinkRegex := healthcare_utils_regexp.MustCompile("^projects/(" + ProjectRegex + ")/locations/([a-z0-9-]+)/datasets/([a-zA-Z0-9_-]{1,256})$")
-
- if datasetIdRegex.MatchString(id) {
- return &healthcareDatasetId{
- Project: parts[0],
- Location: parts[1],
- Name: parts[2],
- }, nil
- }
-
- if datasetIdWithoutProjectRegex.MatchString(id) {
- if config.Project == "" {
- return nil, healthcare_utils_fmt.Errorf("The default project for the provider must be set when using the `{location}/{datasetName}` id format.")
- }
-
- return &healthcareDatasetId{
- Project: config.Project,
- Location: parts[0],
- Name: parts[1],
- }, nil
- }
-
- if parts := datasetRelativeLinkRegex.FindStringSubmatch(id); parts != nil {
- return &healthcareDatasetId{
- Project: parts[1],
- Location: parts[2],
- Name: parts[3],
- }, nil
- }
- return nil, healthcare_utils_fmt.Errorf("Invalid Dataset id format, expecting `{projectId}/{locationId}/{datasetName}` or `{locationId}/{datasetName}.`")
-}
-
-type healthcareFhirStoreId struct {
- DatasetId healthcareDatasetId
- Name string
-}
-
-func (s *healthcareFhirStoreId) fhirStoreId() string {
- return healthcare_utils_fmt.Sprintf("%s/fhirStores/%s", s.DatasetId.datasetId(), s.Name)
-}
-
-func (s *healthcareFhirStoreId) terraformId() string {
- return healthcare_utils_fmt.Sprintf("%s/%s", s.DatasetId.terraformId(), s.Name)
-}
-
-func parseHealthcareFhirStoreId(id string, config *Config) (*healthcareFhirStoreId, error) {
- parts := healthcare_utils_strings.Split(id, "/")
-
- fhirStoreIdRegex := healthcare_utils_regexp.MustCompile("^(" + ProjectRegex + ")/([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})/([a-zA-Z0-9_-]{1,256})$")
- fhirStoreIdWithoutProjectRegex := healthcare_utils_regexp.MustCompile("^([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})/([a-zA-Z0-9_-]{1,256})$")
- fhirStoreRelativeLinkRegex := healthcare_utils_regexp.MustCompile("^projects/(" + ProjectRegex + ")/locations/([a-z0-9-]+)/datasets/([a-zA-Z0-9_-]{1,256})/fhirStores/([a-zA-Z0-9_-]{1,256})$")
-
- if fhirStoreIdRegex.MatchString(id) {
- return &healthcareFhirStoreId{
- DatasetId: healthcareDatasetId{
- Project: parts[0],
- Location: parts[1],
- Name: parts[2],
- },
- Name: parts[3],
- }, nil
- }
-
- if fhirStoreIdWithoutProjectRegex.MatchString(id) {
- if config.Project == "" {
- return nil, healthcare_utils_fmt.Errorf("The default project for the provider must be set when using the `{location}/{datasetName}/{fhirStoreName}` id format.")
- }
-
- return &healthcareFhirStoreId{
- DatasetId: healthcareDatasetId{
- Project: config.Project,
- Location: parts[0],
- Name: parts[1],
- },
- Name: parts[2],
- }, nil
- }
-
- if parts := fhirStoreRelativeLinkRegex.FindStringSubmatch(id); parts != nil {
- return &healthcareFhirStoreId{
- DatasetId: healthcareDatasetId{
- Project: parts[1],
- Location: parts[2],
- Name: parts[3],
- },
- Name: parts[4],
- }, nil
- }
- return nil, healthcare_utils_fmt.Errorf("Invalid FhirStore id format, expecting `{projectId}/{locationId}/{datasetName}/{fhirStoreName}` or `{locationId}/{datasetName}/{fhirStoreName}.`")
-}
-
-type healthcareHl7V2StoreId struct {
- DatasetId healthcareDatasetId
- Name string
-}
-
-func (s *healthcareHl7V2StoreId) hl7V2StoreId() string {
- return healthcare_utils_fmt.Sprintf("%s/hl7V2Stores/%s", s.DatasetId.datasetId(), s.Name)
-}
-
-func (s *healthcareHl7V2StoreId) terraformId() string {
- return healthcare_utils_fmt.Sprintf("%s/%s", s.DatasetId.terraformId(), s.Name)
-}
-
-func parseHealthcareHl7V2StoreId(id string, config *Config) (*healthcareHl7V2StoreId, error) {
- parts := healthcare_utils_strings.Split(id, "/")
-
- hl7V2StoreIdRegex := healthcare_utils_regexp.MustCompile("^(" + ProjectRegex + ")/([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})/([a-zA-Z0-9_-]{1,256})$")
- hl7V2StoreIdWithoutProjectRegex := healthcare_utils_regexp.MustCompile("^([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})/([a-zA-Z0-9_-]{1,256})$")
- hl7V2StoreRelativeLinkRegex := healthcare_utils_regexp.MustCompile("^projects/(" + ProjectRegex + ")/locations/([a-z0-9-]+)/datasets/([a-zA-Z0-9_-]{1,256})/hl7V2Stores/([a-zA-Z0-9_-]{1,256})$")
-
- if hl7V2StoreIdRegex.MatchString(id) {
- return &healthcareHl7V2StoreId{
- DatasetId: healthcareDatasetId{
- Project: parts[0],
- Location: parts[1],
- Name: parts[2],
- },
- Name: parts[3],
- }, nil
- }
-
- if hl7V2StoreIdWithoutProjectRegex.MatchString(id) {
- if config.Project == "" {
- return nil, healthcare_utils_fmt.Errorf("The default project for the provider must be set when using the `{location}/{datasetName}/{hl7V2StoreName}` id format.")
- }
-
- return &healthcareHl7V2StoreId{
- DatasetId: healthcareDatasetId{
- Project: config.Project,
- Location: parts[0],
- Name: parts[1],
- },
- Name: parts[2],
- }, nil
- }
-
- if parts := hl7V2StoreRelativeLinkRegex.FindStringSubmatch(id); parts != nil {
- return &healthcareHl7V2StoreId{
- DatasetId: healthcareDatasetId{
- Project: parts[1],
- Location: parts[2],
- Name: parts[3],
- },
- Name: parts[4],
- }, nil
- }
- return nil, healthcare_utils_fmt.Errorf("Invalid Hl7V2Store id format, expecting `{projectId}/{locationId}/{datasetName}/{hl7V2StoreName}` or `{locationId}/{datasetName}/{hl7V2StoreName}.`")
-}
-
-type healthcareDicomStoreId struct {
- DatasetId healthcareDatasetId
- Name string
-}
-
-func (s *healthcareDicomStoreId) dicomStoreId() string {
- return healthcare_utils_fmt.Sprintf("%s/dicomStores/%s", s.DatasetId.datasetId(), s.Name)
-}
-
-func (s *healthcareDicomStoreId) terraformId() string {
- return healthcare_utils_fmt.Sprintf("%s/%s", s.DatasetId.terraformId(), s.Name)
-}
-
-func parseHealthcareDicomStoreId(id string, config *Config) (*healthcareDicomStoreId, error) {
- parts := healthcare_utils_strings.Split(id, "/")
-
- dicomStoreIdRegex := healthcare_utils_regexp.MustCompile("^(" + ProjectRegex + ")/([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})/([a-zA-Z0-9_-]{1,256})$")
- dicomStoreIdWithoutProjectRegex := healthcare_utils_regexp.MustCompile("^([a-z0-9-])+/([a-zA-Z0-9_-]{1,256})/([a-zA-Z0-9_-]{1,256})$")
- dicomStoreRelativeLinkRegex := healthcare_utils_regexp.MustCompile("^projects/(" + ProjectRegex + ")/locations/([a-z0-9-]+)/datasets/([a-zA-Z0-9_-]{1,256})/dicomStores/([a-zA-Z0-9_-]{1,256})$")
-
- if dicomStoreIdRegex.MatchString(id) {
- return &healthcareDicomStoreId{
- DatasetId: healthcareDatasetId{
- Project: parts[0],
- Location: parts[1],
- Name: parts[2],
- },
- Name: parts[3],
- }, nil
- }
-
- if dicomStoreIdWithoutProjectRegex.MatchString(id) {
- if config.Project == "" {
- return nil, healthcare_utils_fmt.Errorf("The default project for the provider must be set when using the `{location}/{datasetName}/{dicomStoreName}` id format.")
- }
-
- return &healthcareDicomStoreId{
- DatasetId: healthcareDatasetId{
- Project: config.Project,
- Location: parts[0],
- Name: parts[1],
- },
- Name: parts[2],
- }, nil
- }
-
- if parts := dicomStoreRelativeLinkRegex.FindStringSubmatch(id); parts != nil {
- return &healthcareDicomStoreId{
- DatasetId: healthcareDatasetId{
- Project: parts[1],
- Location: parts[2],
- Name: parts[3],
- },
- Name: parts[4],
- }, nil
- }
- return nil, healthcare_utils_fmt.Errorf("Invalid DicomStore id format, expecting `{projectId}/{locationId}/{datasetName}/{dicomStoreName}` or `{locationId}/{datasetName}/{dicomStoreName}.`")
-}
-
-const maxBackoffSeconds = 30
-
-const iamPolicyVersion = 3
-
-type (
- ResourceIamUpdater interface {
- GetResourceIamPolicy() (*iam_cloudresourcemanager.Policy, error)
-
- SetResourceIamPolicy(policy *iam_cloudresourcemanager.Policy) error
-
- GetMutexKey() string
-
- GetResourceId() string
-
- DescribeResource() string
- }
-
- newResourceIamUpdaterFunc func(d TerraformResourceData, config *Config) (ResourceIamUpdater, error)
-
- iamPolicyModifyFunc func(p *iam_cloudresourcemanager.Policy) error
-
- resourceIdParserFunc func(d *iam_schema.ResourceData, config *Config) error
-)
-
-func iamPolicyReadWithRetry(updater ResourceIamUpdater) (*iam_cloudresourcemanager.Policy, error) {
- mutexKey := updater.GetMutexKey()
- mutexKV.Lock(mutexKey)
- defer mutexKV.Unlock(mutexKey)
-
- iam_log.Printf("[DEBUG] Retrieving policy for %s\n", updater.DescribeResource())
- var policy *iam_cloudresourcemanager.Policy
- err := retryTime(func() (perr error) {
- policy, perr = updater.GetResourceIamPolicy()
- return perr
- }, 10)
- if err != nil {
- return nil, err
- }
- iam_log.Print(iam_spew.Sprintf("[DEBUG] Retrieved policy for %s: %#v\n", updater.DescribeResource(), policy))
- return policy, nil
-}
-
-func iamPolicyReadModifyWrite(updater ResourceIamUpdater, modify iamPolicyModifyFunc) error {
- mutexKey := updater.GetMutexKey()
- mutexKV.Lock(mutexKey)
- defer mutexKV.Unlock(mutexKey)
-
- backoff := iam_time.Second
- for {
- iam_log.Printf("[DEBUG]: Retrieving policy for %s\n", updater.DescribeResource())
- p, err := updater.GetResourceIamPolicy()
- if isGoogleApiErrorWithCode(err, 429) {
- iam_log.Printf("[DEBUG] 429 while attempting to read policy for %s, waiting %v before attempting again", updater.DescribeResource(), backoff)
- iam_time.Sleep(backoff)
- continue
- } else if err != nil {
- return err
- }
- iam_log.Printf("[DEBUG]: Retrieved policy for %s: %+v\n", updater.DescribeResource(), p)
-
- err = modify(p)
- if err != nil {
- return err
- }
-
- iam_log.Printf("[DEBUG]: Setting policy for %s to %+v\n", updater.DescribeResource(), p)
- err = updater.SetResourceIamPolicy(p)
- if err == nil {
- fetchBackoff := 1 * iam_time.Second
- for successfulFetches := 0; successfulFetches < 3; {
- if fetchBackoff > maxBackoffSeconds*iam_time.Second {
- return iam_fmt.Errorf("Error applying IAM policy to %s: Waited too long for propagation.\n", updater.DescribeResource())
- }
- iam_time.Sleep(fetchBackoff)
- iam_log.Printf("[DEBUG]: Retrieving policy for %s\n", updater.DescribeResource())
- new_p, err := updater.GetResourceIamPolicy()
- if err != nil {
-
- if isGoogleApiErrorWithCode(err, 429) {
- fetchBackoff = fetchBackoff * 2
- } else {
- return err
- }
- }
- iam_log.Printf("[DEBUG]: Retrieved policy for %s: %+v\n", updater.DescribeResource(), p)
- if new_p == nil {
-
- fetchBackoff = fetchBackoff * 2
- continue
- }
- modified_p := new_p
-
- err = modify(modified_p)
- if err != nil {
- return err
- }
- if modified_p == new_p {
- successfulFetches += 1
- } else {
- fetchBackoff = fetchBackoff * 2
- }
- }
- break
- }
- if isConflictError(err) {
- iam_log.Printf("[DEBUG]: Concurrent policy changes, restarting read-modify-write after %s\n", backoff)
- iam_time.Sleep(backoff)
- backoff = backoff * 2
- if backoff > 30*iam_time.Second {
- return iam_errwrap.Wrapf(iam_fmt.Sprintf("Error applying IAM policy to %s: Too many conflicts. Latest error: {{err}}", updater.DescribeResource()), err)
- }
- continue
- }
-
- if isServiceAccountNotFoundError, _ := iamServiceAccountNotFound(err); isServiceAccountNotFoundError {
-
- currentPolicy, rerr := iamPolicyReadWithRetry(updater)
- if rerr != nil {
- if p.Etag != currentPolicy.Etag {
-
- iam_log.Printf("current and old etag did not match for %s, retrying", updater.DescribeResource())
- iam_time.Sleep(backoff)
- backoff = backoff * 2
- continue
- }
-
- iam_log.Printf("current and old etag matched for %s, not retrying", updater.DescribeResource())
- } else {
-
- iam_log.Printf("[DEBUG]: error checking etag for policy %s. error: %v", updater.DescribeResource(), rerr)
- }
- }
-
- iam_log.Printf("[DEBUG]: not retrying IAM policy for %s. error: %v", updater.DescribeResource(), err)
- return iam_errwrap.Wrapf(iam_fmt.Sprintf("Error applying IAM policy for %s: {{err}}", updater.DescribeResource()), err)
- }
- iam_log.Printf("[DEBUG]: Set policy for %s", updater.DescribeResource())
- return nil
-}
-
-func mergeBindings(bindings []*iam_cloudresourcemanager.Binding) []*iam_cloudresourcemanager.Binding {
- bm := createIamBindingsMap(bindings)
- return listFromIamBindingMap(bm)
-}
-
-type conditionKey struct {
- Description string
- Expression string
- Title string
-}
-
-func conditionKeyFromCondition(condition *iam_cloudresourcemanager.Expr) conditionKey {
- if condition == nil {
- return conditionKey{}
- }
- return conditionKey{condition.Description, condition.Expression, condition.Title}
-}
-
-func (k conditionKey) Empty() bool {
- return k == conditionKey{}
-}
-
-func (k conditionKey) String() string {
- return iam_fmt.Sprintf("%s/%s/%s", k.Title, k.Description, k.Expression)
-}
-
-type iamBindingKey struct {
- Role string
- Condition conditionKey
-}
-
-func filterBindingsWithRoleAndCondition(b []*iam_cloudresourcemanager.Binding, role string, condition *iam_cloudresourcemanager.Expr) []*iam_cloudresourcemanager.Binding {
- bMap := createIamBindingsMap(b)
- key := iamBindingKey{role, conditionKeyFromCondition(condition)}
- delete(bMap, key)
- return listFromIamBindingMap(bMap)
-}
-
-func subtractFromBindings(bindings []*iam_cloudresourcemanager.Binding, toRemove ...*iam_cloudresourcemanager.Binding) []*iam_cloudresourcemanager.Binding {
- currMap := createIamBindingsMap(bindings)
- toRemoveMap := createIamBindingsMap(toRemove)
-
- for key, removeSet := range toRemoveMap {
- members, ok := currMap[key]
- if !ok {
- continue
- }
-
- for m := range removeSet {
- delete(members, m)
- }
-
- if len(members) == 0 {
- delete(currMap, key)
- }
- }
-
- return listFromIamBindingMap(currMap)
-}
-
-func iamMemberIsCaseSensitive(member string) bool {
- return iam_strings.HasPrefix(member, "principalSet:") || iam_strings.HasPrefix(member, "principal:") || iam_strings.HasPrefix(member, "principalHierarchy:")
-}
-
-func normalizeIamMemberCasing(member string) string {
- var pieces []string
- if iam_strings.HasPrefix(member, "deleted:") {
- pieces = iam_strings.SplitN(member, ":", 3)
- if len(pieces) > 2 && !iamMemberIsCaseSensitive(iam_strings.TrimPrefix(member, "deleted:")) {
- pieces[2] = iam_strings.ToLower(pieces[2])
- }
- } else if !iamMemberIsCaseSensitive(member) {
- pieces = iam_strings.SplitN(member, ":", 2)
- if len(pieces) > 1 {
- pieces[1] = iam_strings.ToLower(pieces[1])
- }
- }
-
- if len(pieces) > 0 {
- member = iam_strings.Join(pieces, ":")
- }
- return member
-}
-
-func createIamBindingsMap(bindings []*iam_cloudresourcemanager.Binding) map[iamBindingKey]map[string]struct{} {
- bm := make(map[iamBindingKey]map[string]struct{})
-
- for _, b := range bindings {
- members := make(map[string]struct{})
- key := iamBindingKey{b.Role, conditionKeyFromCondition(b.Condition)}
-
- if _, ok := bm[key]; ok {
- members = bm[key]
- }
-
- for _, m := range b.Members {
- m = normalizeIamMemberCasing(m)
-
- members[m] = struct{}{}
- }
- if len(members) > 0 {
- bm[key] = members
- } else {
- delete(bm, key)
- }
- }
- return bm
-}
-
-func listFromIamBindingMap(bm map[iamBindingKey]map[string]struct{}) []*iam_cloudresourcemanager.Binding {
- rb := make([]*iam_cloudresourcemanager.Binding, 0, len(bm))
- var keys []iamBindingKey
- for k := range bm {
- keys = append(keys, k)
- }
- iam_sort.Slice(keys, func(i, j int) bool {
- keyI := keys[i]
- keyJ := keys[j]
- return iam_fmt.Sprintf("%s%s", keyI.Role, keyI.Condition.String()) < iam_fmt.Sprintf("%s%s", keyJ.Role, keyJ.Condition.String())
- })
- for _, key := range keys {
- members := bm[key]
- if len(members) == 0 {
- continue
- }
- b := &iam_cloudresourcemanager.Binding{
- Role: key.Role,
- Members: stringSliceFromGolangSet(members),
- }
- if !key.Condition.Empty() {
- b.Condition = &iam_cloudresourcemanager.Expr{
- Description: key.Condition.Description,
- Expression: key.Condition.Expression,
- Title: key.Condition.Title,
- }
- }
- rb = append(rb, b)
- }
- return rb
-}
-
-func removeAllAuditConfigsWithService(ac []*iam_cloudresourcemanager.AuditConfig, service string) []*iam_cloudresourcemanager.AuditConfig {
- acMap := createIamAuditConfigsMap(ac)
- delete(acMap, service)
- return listFromIamAuditConfigMap(acMap)
-}
-
-func createIamAuditConfigsMap(auditConfigs []*iam_cloudresourcemanager.AuditConfig) map[string]map[string]map[string]struct{} {
- acMap := make(map[string]map[string]map[string]struct{})
-
- for _, ac := range auditConfigs {
- if _, ok := acMap[ac.Service]; !ok {
- acMap[ac.Service] = make(map[string]map[string]struct{})
- }
- alcMap := acMap[ac.Service]
- for _, alc := range ac.AuditLogConfigs {
- if _, ok := alcMap[alc.LogType]; !ok {
- alcMap[alc.LogType] = make(map[string]struct{})
- }
- memberMap := alcMap[alc.LogType]
-
- for _, m := range alc.ExemptedMembers {
- memberMap[m] = struct{}{}
- }
- }
- }
-
- return acMap
-}
-
-func listFromIamAuditConfigMap(acMap map[string]map[string]map[string]struct{}) []*iam_cloudresourcemanager.AuditConfig {
- ac := make([]*iam_cloudresourcemanager.AuditConfig, 0, len(acMap))
-
- for service, logConfigMap := range acMap {
- if len(logConfigMap) == 0 {
- continue
- }
-
- logConfigs := make([]*iam_cloudresourcemanager.AuditLogConfig, 0, len(logConfigMap))
- for logType, memberSet := range logConfigMap {
- alc := &iam_cloudresourcemanager.AuditLogConfig{
- LogType: logType,
- ForceSendFields: []string{"exemptedMembers"},
- }
- if len(memberSet) > 0 {
- alc.ExemptedMembers = stringSliceFromGolangSet(memberSet)
- }
- logConfigs = append(logConfigs, alc)
- }
-
- ac = append(ac, &iam_cloudresourcemanager.AuditConfig{
- Service: service,
- AuditLogConfigs: logConfigs,
- })
- }
- return ac
-}
-
-func jsonPolicyDiffSuppress(k, old, new string, d *iam_schema.ResourceData) bool {
- if old == "" && new == "" {
- return true
- }
-
- var oldPolicy, newPolicy iam_cloudresourcemanager.Policy
- if old != "" && new != "" {
- if err := iam_json.Unmarshal([]byte(old), &oldPolicy); err != nil {
- iam_log.Printf("[ERROR] Could not unmarshal old policy %s: %v", old, err)
- return false
- }
- if err := iam_json.Unmarshal([]byte(new), &newPolicy); err != nil {
- iam_log.Printf("[ERROR] Could not unmarshal new policy %s: %v", new, err)
- return false
- }
-
- return compareIamPolicies(&newPolicy, &oldPolicy)
- }
-
- return false
-}
-
-func compareIamPolicies(a, b *iam_cloudresourcemanager.Policy) bool {
- if a.Etag != b.Etag {
- iam_log.Printf("[DEBUG] policies etag differ: %q vs %q", a.Etag, b.Etag)
- return false
- }
- if a.Version != b.Version {
- iam_log.Printf("[DEBUG] policies version differ: %q vs %q", a.Version, b.Version)
- return false
- }
- if !compareBindings(a.Bindings, b.Bindings) {
- iam_log.Printf("[DEBUG] policies bindings differ: %#v vs %#v", a.Bindings, b.Bindings)
- return false
- }
- if !compareAuditConfigs(a.AuditConfigs, b.AuditConfigs) {
- iam_log.Printf("[DEBUG] policies audit configs differ: %#v vs %#v", a.AuditConfigs, b.AuditConfigs)
- return false
- }
- return true
-}
-
-func compareBindings(a, b []*iam_cloudresourcemanager.Binding) bool {
- aMap := createIamBindingsMap(a)
- bMap := createIamBindingsMap(b)
- return iam_reflect.DeepEqual(aMap, bMap)
-}
-
-func compareAuditConfigs(a, b []*iam_cloudresourcemanager.AuditConfig) bool {
- aMap := createIamAuditConfigsMap(a)
- bMap := createIamAuditConfigsMap(b)
- return iam_reflect.DeepEqual(aMap, bMap)
-}
-
-type IamSettings struct {
- DeprecationMessage string
-}
-
-func IamWithDeprecationMessage(message string) func(s *IamSettings) {
- return func(s *IamSettings) {
- s.DeprecationMessage = message
- }
-}
-
-func IamWithGAResourceDeprecation() func(s *IamSettings) {
- return IamWithDeprecationMessage("This resource has been deprecated in the google (GA) provider, and will only be available in the google-beta provider in a future release.")
-}
-
-const (
- batchKeyTmplModifyIamPolicy = "%s modifyIamPolicy"
-
- IamBatchingEnabled = true
- IamBatchingDisabled = false
-)
-
-func BatchRequestModifyIamPolicy(updater ResourceIamUpdater, modify iamPolicyModifyFunc, config *Config, reqDesc string) error {
- batchKey := iam_batching_fmt.Sprintf(batchKeyTmplModifyIamPolicy, updater.GetMutexKey())
-
- request := &BatchRequest{
- ResourceName: updater.GetResourceId(),
- Body: []iamPolicyModifyFunc{modify},
- CombineF: combineBatchIamPolicyModifiers,
- SendF: sendBatchModifyIamPolicy(updater),
- DebugId: reqDesc,
- }
-
- _, err := config.requestBatcherIam.SendRequestWithTimeout(batchKey, request, iam_batching_time.Minute*30)
- return err
-}
-
-func combineBatchIamPolicyModifiers(currV interface{}, toAddV interface{}) (interface{}, error) {
- currModifiers, ok := currV.([]iamPolicyModifyFunc)
- if !ok {
- return nil, iam_batching_fmt.Errorf("provider error in batch combiner: expected data to be type []iamPolicyModifyFunc, got %v with type %T", currV, currV)
- }
-
- newModifiers, ok := toAddV.([]iamPolicyModifyFunc)
- if !ok {
- return nil, iam_batching_fmt.Errorf("provider error in batch combiner: expected data to be type []iamPolicyModifyFunc, got %v with type %T", currV, currV)
- }
-
- return append(currModifiers, newModifiers...), nil
-}
-
-func sendBatchModifyIamPolicy(updater ResourceIamUpdater) BatcherSendFunc {
- return func(resourceName string, body interface{}) (interface{}, error) {
- modifiers, ok := body.([]iamPolicyModifyFunc)
- if !ok {
- return nil, iam_batching_fmt.Errorf("provider error: expected data to be type []iamPolicyModifyFunc, got %v with type %T", body, body)
- }
- return nil, iamPolicyReadModifyWrite(updater, func(policy *iam_batching_cloudresourcemanager.Policy) error {
- for _, modifyF := range modifiers {
- if err := modifyF(policy); err != nil {
- return err
- }
- }
- return nil
- })
- }
-}
-
-var IamBigqueryDatasetSchema = map[string]*iam_bigquery_dataset_schema.Schema{
- "dataset_id": {
- Type: iam_bigquery_dataset_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "project": {
- Type: iam_bigquery_dataset_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
-}
-
-var bigqueryAccessPrimitiveToRoleMap = map[string]string{
- "OWNER": "roles/bigquery.dataOwner",
- "WRITER": "roles/bigquery.dataEditor",
- "READER": "roles/bigquery.dataViewer",
-}
-
-type BigqueryDatasetIamUpdater struct {
- project string
- datasetId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewBigqueryDatasetIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- project, err := getProject(d, config)
- if err != nil {
- return nil, err
- }
-
- if err := d.Set("project", project); err != nil {
- return nil, iam_bigquery_dataset_fmt.Errorf("Error setting project: %s", err)
- }
-
- return &BigqueryDatasetIamUpdater{
- project: project,
- datasetId: d.Get("dataset_id").(string),
- d: d,
- Config: config,
- }, nil
-}
-
-func BigqueryDatasetIdParseFunc(d *iam_bigquery_dataset_schema.ResourceData, config *Config) error {
- fv, err := parseProjectFieldValue("datasets", d.Id(), "project", d, config, false)
- if err != nil {
- return err
- }
-
- if err := d.Set("project", fv.Project); err != nil {
- return iam_bigquery_dataset_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("dataset_id", fv.Name); err != nil {
- return iam_bigquery_dataset_fmt.Errorf("Error setting dataset_id: %s", err)
- }
-
- d.SetId(fv.RelativeLink())
- return nil
-}
-
-func (u *BigqueryDatasetIamUpdater) GetResourceIamPolicy() (*iam_bigquery_dataset_cloudresourcemanager.Policy, error) {
- url := iam_bigquery_dataset_fmt.Sprintf("%s%s", u.Config.BigQueryBasePath, u.GetResourceId())
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- res, err := sendRequest(u.Config, "GET", u.project, url, userAgent, nil)
- if err != nil {
- return nil, iam_bigquery_dataset_errwrap.Wrapf(iam_bigquery_dataset_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- policy, err := accessToPolicy(res["access"])
- if err != nil {
- return nil, err
- }
- return policy, nil
-}
-
-func (u *BigqueryDatasetIamUpdater) SetResourceIamPolicy(policy *iam_bigquery_dataset_cloudresourcemanager.Policy) error {
- url := iam_bigquery_dataset_fmt.Sprintf("%s%s", u.Config.BigQueryBasePath, u.GetResourceId())
-
- access, err := policyToAccess(policy)
- if err != nil {
- return err
- }
- obj := map[string]interface{}{
- "access": access,
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequest(u.Config, "PATCH", u.project, url, userAgent, obj)
- if err != nil {
- return iam_bigquery_dataset_fmt.Errorf("Error creating DatasetAccess: %s", err)
- }
-
- return nil
-}
-
-func accessToPolicy(access interface{}) (*iam_bigquery_dataset_cloudresourcemanager.Policy, error) {
- if access == nil {
- return nil, nil
- }
- roleToBinding := make(map[string]*iam_bigquery_dataset_cloudresourcemanager.Binding)
-
- accessArr := access.([]interface{})
- for _, v := range accessArr {
- memberRole := v.(map[string]interface{})
- rawRole, ok := memberRole["role"]
- if !ok {
-
- continue
- }
- role := rawRole.(string)
- if iamRole, ok := bigqueryAccessPrimitiveToRoleMap[role]; ok {
-
- role = iamRole
- }
- member, err := accessToIamMember(memberRole)
- if err != nil {
- return nil, err
- }
-
- binding, ok := roleToBinding[role]
- if !ok {
- binding = &iam_bigquery_dataset_cloudresourcemanager.Binding{Role: role, Members: []string{}}
- }
- binding.Members = append(binding.Members, member)
-
- roleToBinding[role] = binding
- }
- bindings := make([]*iam_bigquery_dataset_cloudresourcemanager.Binding, 0)
- for _, v := range roleToBinding {
- bindings = append(bindings, v)
- }
-
- return &iam_bigquery_dataset_cloudresourcemanager.Policy{Bindings: bindings}, nil
-}
-
-func policyToAccess(policy *iam_bigquery_dataset_cloudresourcemanager.Policy) ([]map[string]interface{}, error) {
- res := make([]map[string]interface{}, 0)
- if len(policy.AuditConfigs) != 0 {
- return nil, iam_bigquery_dataset_errors.New("Access policies not allowed on BigQuery Dataset IAM policies")
- }
- for _, binding := range policy.Bindings {
- if binding.Condition != nil {
- return nil, iam_bigquery_dataset_errors.New("IAM conditions not allowed on BigQuery Dataset IAM")
- }
- if fullRole, ok := bigqueryAccessPrimitiveToRoleMap[binding.Role]; ok {
- return nil, iam_bigquery_dataset_fmt.Errorf("BigQuery Dataset legacy role %s is not allowed when using google_bigquery_dataset_iam resources. Please use the full form: %s", binding.Role, fullRole)
- }
- for _, member := range binding.Members {
-
- if iam_bigquery_dataset_strings.HasPrefix(member, "deleted:") {
- continue
- }
- access := map[string]interface{}{
- "role": binding.Role,
- }
- memberType, member, err := iamMemberToAccess(member)
- if err != nil {
- return nil, err
- }
- access[memberType] = member
- res = append(res, access)
- }
- }
-
- return res, nil
-}
-
-func iamMemberToAccess(member string) (string, string, error) {
- if iam_bigquery_dataset_strings.HasPrefix(member, "deleted:") {
- return "", "", iam_bigquery_dataset_fmt.Errorf("BigQuery Dataset IAM member is deleted: %s", member)
- }
-
- pieces := iam_bigquery_dataset_strings.SplitN(member, ":", 2)
- if len(pieces) > 1 {
- switch pieces[0] {
- case "group":
- return "groupByEmail", pieces[1], nil
- case "domain":
- return "domain", pieces[1], nil
- case "user":
- return "userByEmail", pieces[1], nil
- case "serviceAccount":
- return "userByEmail", pieces[1], nil
- default:
- return "", "", iam_bigquery_dataset_fmt.Errorf("Failed to parse BigQuery Dataset IAM member type: %s", member)
- }
- }
- if member == "projectOwners" || member == "projectReaders" || member == "projectWriters" || member == "allAuthenticatedUsers" {
-
- return "specialGroup", member, nil
- }
- return "iamMember", member, nil
-}
-
-func accessToIamMember(access map[string]interface{}) (string, error) {
-
- if member, ok := access["groupByEmail"]; ok {
- return iam_bigquery_dataset_fmt.Sprintf("group:%s", member.(string)), nil
- }
- if member, ok := access["domain"]; ok {
- return iam_bigquery_dataset_fmt.Sprintf("domain:%s", member.(string)), nil
- }
- if member, ok := access["specialGroup"]; ok {
- return member.(string), nil
- }
- if member, ok := access["iamMember"]; ok {
- return member.(string), nil
- }
- if _, ok := access["view"]; ok {
-
- return "", iam_bigquery_dataset_fmt.Errorf("Failed to convert BigQuery Dataset access to IAM member. To use views with a dataset, please use dataset_access")
- }
- if member, ok := access["userByEmail"]; ok {
-
- if iam_bigquery_dataset_strings.Contains(member.(string), "gserviceaccount") {
- return iam_bigquery_dataset_fmt.Sprintf("serviceAccount:%s", member.(string)), nil
- }
- return iam_bigquery_dataset_fmt.Sprintf("user:%s", member.(string)), nil
- }
- return "", iam_bigquery_dataset_fmt.Errorf("Failed to identify IAM member from BigQuery Dataset access: %v", access)
-}
-
-func (u *BigqueryDatasetIamUpdater) GetResourceId() string {
- return iam_bigquery_dataset_fmt.Sprintf("projects/%s/datasets/%s", u.project, u.datasetId)
-}
-
-func (u *BigqueryDatasetIamUpdater) GetMutexKey() string {
- return iam_bigquery_dataset_fmt.Sprintf("%s", u.datasetId)
-}
-
-func (u *BigqueryDatasetIamUpdater) DescribeResource() string {
- return iam_bigquery_dataset_fmt.Sprintf("Bigquery Dataset %s/%s", u.project, u.datasetId)
-}
-
-var BigQueryTableIamSchema = map[string]*iam_bigquery_table_schema.Schema{
- "project": {
- Type: iam_bigquery_table_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "dataset_id": {
- Type: iam_bigquery_table_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "table_id": {
- Type: iam_bigquery_table_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type BigQueryTableIamUpdater struct {
- project string
- datasetId string
- tableId string
- d TerraformResourceData
- Config *Config
-}
-
-func BigQueryTableIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_bigquery_table_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- if v, ok := d.GetOk("dataset_id"); ok {
- values["dataset_id"] = v.(string)
- }
-
- if v, ok := d.GetOk("table_id"); ok {
- values["table_id"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/datasets/(?P[^/]+)/tables/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("table_id").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &BigQueryTableIamUpdater{
- project: values["project"],
- datasetId: values["dataset_id"],
- tableId: values["table_id"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_bigquery_table_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("dataset_id", u.datasetId); err != nil {
- return nil, iam_bigquery_table_fmt.Errorf("Error setting dataset_id: %s", err)
- }
- if err := d.Set("table_id", u.GetResourceId()); err != nil {
- return nil, iam_bigquery_table_fmt.Errorf("Error setting table_id: %s", err)
- }
-
- return u, nil
-}
-
-func BigQueryTableIdParseFunc(d *iam_bigquery_table_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/datasets/(?P[^/]+)/tables/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &BigQueryTableIamUpdater{
- project: values["project"],
- datasetId: values["dataset_id"],
- tableId: values["table_id"],
- d: d,
- Config: config,
- }
- if err := d.Set("table_id", u.GetResourceId()); err != nil {
- return iam_bigquery_table_fmt.Errorf("Error setting table_id: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *BigQueryTableIamUpdater) GetResourceIamPolicy() (*iam_bigquery_table_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyTableUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- obj = map[string]interface{}{
- "options": map[string]interface{}{
- "requestedPolicyVersion": 1,
- },
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_bigquery_table_errwrap.Wrapf(iam_bigquery_table_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_bigquery_table_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_bigquery_table_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *BigQueryTableIamUpdater) SetResourceIamPolicy(policy *iam_bigquery_table_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- json["version"] = 1
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyTableUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_bigquery_table_schema.TimeoutCreate))
- if err != nil {
- return iam_bigquery_table_errwrap.Wrapf(iam_bigquery_table_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *BigQueryTableIamUpdater) qualifyTableUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_bigquery_table_fmt.Sprintf("{{BigQueryBasePath}}%s:%s", iam_bigquery_table_fmt.Sprintf("projects/%s/datasets/%s/tables/%s", u.project, u.datasetId, u.tableId), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *BigQueryTableIamUpdater) GetResourceId() string {
- return iam_bigquery_table_fmt.Sprintf("projects/%s/datasets/%s/tables/%s", u.project, u.datasetId, u.tableId)
-}
-
-func (u *BigQueryTableIamUpdater) GetMutexKey() string {
- return iam_bigquery_table_fmt.Sprintf("iam-bigquery-table-%s", u.GetResourceId())
-}
-
-func (u *BigQueryTableIamUpdater) DescribeResource() string {
- return iam_bigquery_table_fmt.Sprintf("bigquery table %q", u.GetResourceId())
-}
-
-var IamBigtableInstanceSchema = map[string]*iam_bigtable_instance_schema.Schema{
- "instance": {
- Type: iam_bigtable_instance_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "project": {
- Type: iam_bigtable_instance_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
-}
-
-type BigtableInstanceIamUpdater struct {
- project string
- instance string
- d TerraformResourceData
- Config *Config
-}
-
-func NewBigtableInstanceUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- project, err := getProject(d, config)
- if err != nil {
- return nil, err
- }
-
- if err := d.Set("project", project); err != nil {
- return nil, iam_bigtable_instance_fmt.Errorf("Error setting project: %s", err)
- }
-
- return &BigtableInstanceIamUpdater{
- project: project,
- instance: d.Get("instance").(string),
- d: d,
- Config: config,
- }, nil
-}
-
-func BigtableInstanceIdParseFunc(d *iam_bigtable_instance_schema.ResourceData, config *Config) error {
- fv, err := parseProjectFieldValue("instances", d.Id(), "project", d, config, false)
- if err != nil {
- return err
- }
-
- if err := d.Set("project", fv.Project); err != nil {
- return iam_bigtable_instance_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("instance", fv.Name); err != nil {
- return iam_bigtable_instance_fmt.Errorf("Error setting instance: %s", err)
- }
-
- d.SetId(fv.RelativeLink())
- return nil
-}
-
-func (u *BigtableInstanceIamUpdater) GetResourceIamPolicy() (*iam_bigtable_instance_cloudresourcemanager.Policy, error) {
- req := &iam_bigtable_instance_bigtableadmin.GetIamPolicyRequest{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewBigTableProjectsInstancesClient(userAgent).GetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return nil, iam_bigtable_instance_errwrap.Wrapf(iam_bigtable_instance_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := bigtableToResourceManagerPolicy(p)
- if err != nil {
- return nil, iam_bigtable_instance_errwrap.Wrapf(iam_bigtable_instance_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *BigtableInstanceIamUpdater) SetResourceIamPolicy(policy *iam_bigtable_instance_cloudresourcemanager.Policy) error {
- bigtablePolicy, err := resourceManagerToBigtablePolicy(policy)
- if err != nil {
- return iam_bigtable_instance_errwrap.Wrapf(iam_bigtable_instance_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- req := &iam_bigtable_instance_bigtableadmin.SetIamPolicyRequest{Policy: bigtablePolicy}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewBigTableProjectsInstancesClient(userAgent).SetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return iam_bigtable_instance_errwrap.Wrapf(iam_bigtable_instance_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *BigtableInstanceIamUpdater) GetResourceId() string {
- return iam_bigtable_instance_fmt.Sprintf("projects/%s/instances/%s", u.project, u.instance)
-}
-
-func (u *BigtableInstanceIamUpdater) GetMutexKey() string {
- return iam_bigtable_instance_fmt.Sprintf("iam-bigtable-instance-%s-%s", u.project, u.instance)
-}
-
-func (u *BigtableInstanceIamUpdater) DescribeResource() string {
- return iam_bigtable_instance_fmt.Sprintf("Bigtable Instance %s/%s", u.project, u.instance)
-}
-
-func resourceManagerToBigtablePolicy(p *iam_bigtable_instance_cloudresourcemanager.Policy) (*iam_bigtable_instance_bigtableadmin.Policy, error) {
- out := &iam_bigtable_instance_bigtableadmin.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_bigtable_instance_errwrap.Wrapf("Cannot convert a bigtable policy to a cloudresourcemanager policy: {{err}}", err)
- }
- return out, nil
-}
-
-func bigtableToResourceManagerPolicy(p *iam_bigtable_instance_bigtableadmin.Policy) (*iam_bigtable_instance_cloudresourcemanager.Policy, error) {
- out := &iam_bigtable_instance_cloudresourcemanager.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_bigtable_instance_errwrap.Wrapf("Cannot convert a cloudresourcemanager policy to a bigtable policy: {{err}}", err)
- }
- return out, nil
-}
-
-var IamBigtableTableSchema = map[string]*iam_bigtable_table_schema.Schema{
- "instance": {
- Type: iam_bigtable_table_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "project": {
- Type: iam_bigtable_table_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
- "table": {
- Type: iam_bigtable_table_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type BigtableTableIamUpdater struct {
- project string
- instance string
- table string
- d TerraformResourceData
- Config *Config
-}
-
-func NewBigtableTableUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- project, err := getProject(d, config)
- if err != nil {
- return nil, err
- }
-
- if err := d.Set("project", project); err != nil {
- return nil, iam_bigtable_table_fmt.Errorf("Error setting project: %s", err)
- }
-
- return &BigtableTableIamUpdater{
- project: project,
- instance: d.Get("instance").(string),
- table: d.Get("table").(string),
- d: d,
- Config: config,
- }, nil
-}
-
-func BigtableTableIdParseFunc(d *iam_bigtable_table_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/instances/(?P[^/]+)/tables/(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- project, _ := getProject(d, config)
-
- for k, v := range m {
- values[k] = v
- }
-
- if err := d.Set("project", project); err != nil {
- return iam_bigtable_table_fmt.Errorf("Error setting project: %s", err)
- }
-
- if err := d.Set("instance", values["instance"]); err != nil {
- return iam_bigtable_table_fmt.Errorf("Error setting instance: %s", err)
- }
-
- if err := d.Set("table", values["table"]); err != nil {
- return iam_bigtable_table_fmt.Errorf("Error setting table: %s", err)
- }
-
- d.SetId(iam_bigtable_table_fmt.Sprintf("projects/%s/instances/%s/tables/%s", project, values["instance"], values["table"]))
- return nil
-}
-
-func (u *BigtableTableIamUpdater) GetResourceIamPolicy() (*iam_bigtable_table_cloudresourcemanager.Policy, error) {
- req := &iam_bigtable_table_bigtableadmin.GetIamPolicyRequest{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewBigTableProjectsInstancesTablesClient(userAgent).GetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return nil, iam_bigtable_table_errwrap.Wrapf(iam_bigtable_table_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := bigtableToResourceManagerPolicy(p)
- if err != nil {
- return nil, iam_bigtable_table_errwrap.Wrapf(iam_bigtable_table_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *BigtableTableIamUpdater) SetResourceIamPolicy(policy *iam_bigtable_table_cloudresourcemanager.Policy) error {
- bigtablePolicy, err := resourceManagerToBigtablePolicy(policy)
- if err != nil {
- return iam_bigtable_table_errwrap.Wrapf(iam_bigtable_table_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- req := &iam_bigtable_table_bigtableadmin.SetIamPolicyRequest{Policy: bigtablePolicy}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewBigTableProjectsInstancesTablesClient(userAgent).SetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return iam_bigtable_table_errwrap.Wrapf(iam_bigtable_table_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *BigtableTableIamUpdater) GetResourceId() string {
- return iam_bigtable_table_fmt.Sprintf("projects/%s/instances/%s/tables/%s", u.project, u.instance, u.table)
-}
-
-func (u *BigtableTableIamUpdater) GetMutexKey() string {
- return iam_bigtable_table_fmt.Sprintf("iam-bigtable-instance-%s-%s-%s", u.project, u.instance, u.table)
-}
-
-func (u *BigtableTableIamUpdater) DescribeResource() string {
- return iam_bigtable_table_fmt.Sprintf("Bigtable Table %s/%s-%s", u.project, u.instance, u.table)
-}
-
-var IamBillingAccountSchema = map[string]*iam_billing_account_schema.Schema{
- "billing_account_id": {
- Type: iam_billing_account_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type BillingAccountIamUpdater struct {
- billingAccountId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewBillingAccountIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- return &BillingAccountIamUpdater{
- billingAccountId: canonicalBillingAccountId(d.Get("billing_account_id").(string)),
- d: d,
- Config: config,
- }, nil
-}
-
-func BillingAccountIdParseFunc(d *iam_billing_account_schema.ResourceData, _ *Config) error {
- if err := d.Set("billing_account_id", d.Id()); err != nil {
- return iam_billing_account_fmt.Errorf("Error setting billing_account_id: %s", err)
- }
- return nil
-}
-
-func (u *BillingAccountIamUpdater) GetResourceIamPolicy() (*iam_billing_account_cloudresourcemanager.Policy, error) {
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- return getBillingAccountIamPolicyByBillingAccountName(u.billingAccountId, u.Config, userAgent)
-}
-
-func (u *BillingAccountIamUpdater) SetResourceIamPolicy(policy *iam_billing_account_cloudresourcemanager.Policy) error {
- billingPolicy, err := resourceManagerToBillingPolicy(policy)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewBillingClient(userAgent).BillingAccounts.SetIamPolicy("billingAccounts/"+u.billingAccountId, &iam_billing_account_cloudbilling.SetIamPolicyRequest{
- Policy: billingPolicy,
- }).Do()
-
- if err != nil {
- return iam_billing_account_errwrap.Wrapf(iam_billing_account_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *BillingAccountIamUpdater) GetResourceId() string {
- return u.billingAccountId
-}
-
-func (u *BillingAccountIamUpdater) GetMutexKey() string {
- return iam_billing_account_fmt.Sprintf("iam-billing-account-%s", u.billingAccountId)
-}
-
-func (u *BillingAccountIamUpdater) DescribeResource() string {
- return iam_billing_account_fmt.Sprintf("billingAccount %q", u.billingAccountId)
-}
-
-func canonicalBillingAccountId(resource string) string {
- return resource
-}
-
-func resourceManagerToBillingPolicy(p *iam_billing_account_cloudresourcemanager.Policy) (*iam_billing_account_cloudbilling.Policy, error) {
- out := &iam_billing_account_cloudbilling.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_billing_account_errwrap.Wrapf("Cannot convert a v1 policy to a billing policy: {{err}}", err)
- }
- return out, nil
-}
-
-func billingToResourceManagerPolicy(p *iam_billing_account_cloudbilling.Policy) (*iam_billing_account_cloudresourcemanager.Policy, error) {
- out := &iam_billing_account_cloudresourcemanager.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_billing_account_errwrap.Wrapf("Cannot convert a billing policy to a v1 policy: {{err}}", err)
- }
- return out, nil
-}
-
-func getBillingAccountIamPolicyByBillingAccountName(resource string, config *Config, userAgent string) (*iam_billing_account_cloudresourcemanager.Policy, error) {
- p, err := config.NewBillingClient(userAgent).BillingAccounts.GetIamPolicy("billingAccounts/" + resource).Do()
-
- if err != nil {
- return nil, iam_billing_account_errwrap.Wrapf(iam_billing_account_fmt.Sprintf("Error retrieving IAM policy for billing account %q: {{err}}", resource), err)
- }
-
- v1Policy, err := billingToResourceManagerPolicy(p)
- if err != nil {
- return nil, err
- }
-
- return v1Policy, nil
-}
-
-var BinaryAuthorizationAttestorIamSchema = map[string]*iam_binary_authorization_attestor_schema.Schema{
- "project": {
- Type: iam_binary_authorization_attestor_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "attestor": {
- Type: iam_binary_authorization_attestor_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type BinaryAuthorizationAttestorIamUpdater struct {
- project string
- attestor string
- d TerraformResourceData
- Config *Config
-}
-
-func BinaryAuthorizationAttestorIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_binary_authorization_attestor_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- if v, ok := d.GetOk("attestor"); ok {
- values["attestor"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/attestors/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("attestor").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &BinaryAuthorizationAttestorIamUpdater{
- project: values["project"],
- attestor: values["attestor"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_binary_authorization_attestor_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("attestor", u.GetResourceId()); err != nil {
- return nil, iam_binary_authorization_attestor_fmt.Errorf("Error setting attestor: %s", err)
- }
-
- return u, nil
-}
-
-func BinaryAuthorizationAttestorIdParseFunc(d *iam_binary_authorization_attestor_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/attestors/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &BinaryAuthorizationAttestorIamUpdater{
- project: values["project"],
- attestor: values["attestor"],
- d: d,
- Config: config,
- }
- if err := d.Set("attestor", u.GetResourceId()); err != nil {
- return iam_binary_authorization_attestor_fmt.Errorf("Error setting attestor: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *BinaryAuthorizationAttestorIamUpdater) GetResourceIamPolicy() (*iam_binary_authorization_attestor_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyAttestorUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_binary_authorization_attestor_errwrap.Wrapf(iam_binary_authorization_attestor_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_binary_authorization_attestor_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_binary_authorization_attestor_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *BinaryAuthorizationAttestorIamUpdater) SetResourceIamPolicy(policy *iam_binary_authorization_attestor_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyAttestorUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_binary_authorization_attestor_schema.TimeoutCreate))
- if err != nil {
- return iam_binary_authorization_attestor_errwrap.Wrapf(iam_binary_authorization_attestor_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *BinaryAuthorizationAttestorIamUpdater) qualifyAttestorUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_binary_authorization_attestor_fmt.Sprintf("{{BinaryAuthorizationBasePath}}%s:%s", iam_binary_authorization_attestor_fmt.Sprintf("projects/%s/attestors/%s", u.project, u.attestor), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *BinaryAuthorizationAttestorIamUpdater) GetResourceId() string {
- return iam_binary_authorization_attestor_fmt.Sprintf("projects/%s/attestors/%s", u.project, u.attestor)
-}
-
-func (u *BinaryAuthorizationAttestorIamUpdater) GetMutexKey() string {
- return iam_binary_authorization_attestor_fmt.Sprintf("iam-binaryauthorization-attestor-%s", u.GetResourceId())
-}
-
-func (u *BinaryAuthorizationAttestorIamUpdater) DescribeResource() string {
- return iam_binary_authorization_attestor_fmt.Sprintf("binaryauthorization attestor %q", u.GetResourceId())
-}
-
-var CloudRunServiceIamSchema = map[string]*iam_cloud_run_service_schema.Schema{
- "project": {
- Type: iam_cloud_run_service_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "location": {
- Type: iam_cloud_run_service_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "service": {
- Type: iam_cloud_run_service_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type CloudRunServiceIamUpdater struct {
- project string
- location string
- service string
- d TerraformResourceData
- Config *Config
-}
-
-func CloudRunServiceIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_cloud_run_service_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- location, _ := getLocation(d, config)
- if location != "" {
- if err := d.Set("location", location); err != nil {
- return nil, iam_cloud_run_service_fmt.Errorf("Error setting location: %s", err)
- }
- }
- values["location"] = location
- if v, ok := d.GetOk("service"); ok {
- values["service"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/services/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("service").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &CloudRunServiceIamUpdater{
- project: values["project"],
- location: values["location"],
- service: values["service"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_cloud_run_service_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("location", u.location); err != nil {
- return nil, iam_cloud_run_service_fmt.Errorf("Error setting location: %s", err)
- }
- if err := d.Set("service", u.GetResourceId()); err != nil {
- return nil, iam_cloud_run_service_fmt.Errorf("Error setting service: %s", err)
- }
-
- return u, nil
-}
-
-func CloudRunServiceIdParseFunc(d *iam_cloud_run_service_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- location, _ := getLocation(d, config)
- if location != "" {
- values["location"] = location
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/services/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &CloudRunServiceIamUpdater{
- project: values["project"],
- location: values["location"],
- service: values["service"],
- d: d,
- Config: config,
- }
- if err := d.Set("service", u.GetResourceId()); err != nil {
- return iam_cloud_run_service_fmt.Errorf("Error setting service: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *CloudRunServiceIamUpdater) GetResourceIamPolicy() (*iam_cloud_run_service_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyServiceUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj, isCloudRunCreationConflict)
- if err != nil {
- return nil, iam_cloud_run_service_errwrap.Wrapf(iam_cloud_run_service_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_cloud_run_service_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_cloud_run_service_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *CloudRunServiceIamUpdater) SetResourceIamPolicy(policy *iam_cloud_run_service_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyServiceUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_cloud_run_service_schema.TimeoutCreate), isCloudRunCreationConflict)
- if err != nil {
- return iam_cloud_run_service_errwrap.Wrapf(iam_cloud_run_service_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *CloudRunServiceIamUpdater) qualifyServiceUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_cloud_run_service_fmt.Sprintf("{{CloudRunBasePath}}%s:%s", iam_cloud_run_service_fmt.Sprintf("v1/projects/%s/locations/%s/services/%s", u.project, u.location, u.service), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *CloudRunServiceIamUpdater) GetResourceId() string {
- return iam_cloud_run_service_fmt.Sprintf("v1/projects/%s/locations/%s/services/%s", u.project, u.location, u.service)
-}
-
-func (u *CloudRunServiceIamUpdater) GetMutexKey() string {
- return iam_cloud_run_service_fmt.Sprintf("iam-cloudrun-service-%s", u.GetResourceId())
-}
-
-func (u *CloudRunServiceIamUpdater) DescribeResource() string {
- return iam_cloud_run_service_fmt.Sprintf("cloudrun service %q", u.GetResourceId())
-}
-
-var CloudFunctionsCloudFunctionIamSchema = map[string]*iam_cloudfunctions_function_schema.Schema{
- "project": {
- Type: iam_cloudfunctions_function_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_cloudfunctions_function_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "cloud_function": {
- Type: iam_cloudfunctions_function_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type CloudFunctionsCloudFunctionIamUpdater struct {
- project string
- region string
- cloudFunction string
- d TerraformResourceData
- Config *Config
-}
-
-func CloudFunctionsCloudFunctionIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_cloudfunctions_function_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- region, _ := getRegion(d, config)
- if region != "" {
- if err := d.Set("region", region); err != nil {
- return nil, iam_cloudfunctions_function_fmt.Errorf("Error setting region: %s", err)
- }
- }
- values["region"] = region
- if v, ok := d.GetOk("cloud_function"); ok {
- values["cloud_function"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/functions/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("cloud_function").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &CloudFunctionsCloudFunctionIamUpdater{
- project: values["project"],
- region: values["region"],
- cloudFunction: values["cloud_function"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_cloudfunctions_function_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", u.region); err != nil {
- return nil, iam_cloudfunctions_function_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("cloud_function", u.GetResourceId()); err != nil {
- return nil, iam_cloudfunctions_function_fmt.Errorf("Error setting cloud_function: %s", err)
- }
-
- return u, nil
-}
-
-func CloudFunctionsCloudFunctionIdParseFunc(d *iam_cloudfunctions_function_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- region, _ := getRegion(d, config)
- if region != "" {
- values["region"] = region
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/functions/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &CloudFunctionsCloudFunctionIamUpdater{
- project: values["project"],
- region: values["region"],
- cloudFunction: values["cloud_function"],
- d: d,
- Config: config,
- }
- if err := d.Set("cloud_function", u.GetResourceId()); err != nil {
- return iam_cloudfunctions_function_fmt.Errorf("Error setting cloud_function: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *CloudFunctionsCloudFunctionIamUpdater) GetResourceIamPolicy() (*iam_cloudfunctions_function_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyCloudFunctionUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_cloudfunctions_function_errwrap.Wrapf(iam_cloudfunctions_function_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_cloudfunctions_function_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_cloudfunctions_function_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *CloudFunctionsCloudFunctionIamUpdater) SetResourceIamPolicy(policy *iam_cloudfunctions_function_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyCloudFunctionUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_cloudfunctions_function_schema.TimeoutCreate))
- if err != nil {
- return iam_cloudfunctions_function_errwrap.Wrapf(iam_cloudfunctions_function_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *CloudFunctionsCloudFunctionIamUpdater) qualifyCloudFunctionUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_cloudfunctions_function_fmt.Sprintf("{{CloudFunctionsBasePath}}%s:%s", iam_cloudfunctions_function_fmt.Sprintf("projects/%s/locations/%s/functions/%s", u.project, u.region, u.cloudFunction), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *CloudFunctionsCloudFunctionIamUpdater) GetResourceId() string {
- return iam_cloudfunctions_function_fmt.Sprintf("projects/%s/locations/%s/functions/%s", u.project, u.region, u.cloudFunction)
-}
-
-func (u *CloudFunctionsCloudFunctionIamUpdater) GetMutexKey() string {
- return iam_cloudfunctions_function_fmt.Sprintf("iam-cloudfunctions-cloudfunction-%s", u.GetResourceId())
-}
-
-func (u *CloudFunctionsCloudFunctionIamUpdater) DescribeResource() string {
- return iam_cloudfunctions_function_fmt.Sprintf("cloudfunctions cloudfunction %q", u.GetResourceId())
-}
-
-var ComputeDiskIamSchema = map[string]*iam_compute_disk_schema.Schema{
- "project": {
- Type: iam_compute_disk_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "zone": {
- Type: iam_compute_disk_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "name": {
- Type: iam_compute_disk_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type ComputeDiskIamUpdater struct {
- project string
- zone string
- name string
- d TerraformResourceData
- Config *Config
-}
-
-func ComputeDiskIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_compute_disk_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- zone, _ := getZone(d, config)
- if zone != "" {
- if err := d.Set("zone", zone); err != nil {
- return nil, iam_compute_disk_fmt.Errorf("Error setting zone: %s", err)
- }
- }
- values["zone"] = zone
- if v, ok := d.GetOk("name"); ok {
- values["name"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/zones/(?P[^/]+)/disks/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("name").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeDiskIamUpdater{
- project: values["project"],
- zone: values["zone"],
- name: values["name"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_compute_disk_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("zone", u.zone); err != nil {
- return nil, iam_compute_disk_fmt.Errorf("Error setting zone: %s", err)
- }
- if err := d.Set("name", u.GetResourceId()); err != nil {
- return nil, iam_compute_disk_fmt.Errorf("Error setting name: %s", err)
- }
-
- return u, nil
-}
-
-func ComputeDiskIdParseFunc(d *iam_compute_disk_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- zone, _ := getZone(d, config)
- if zone != "" {
- values["zone"] = zone
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/zones/(?P[^/]+)/disks/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeDiskIamUpdater{
- project: values["project"],
- zone: values["zone"],
- name: values["name"],
- d: d,
- Config: config,
- }
- if err := d.Set("name", u.GetResourceId()); err != nil {
- return iam_compute_disk_fmt.Errorf("Error setting name: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *ComputeDiskIamUpdater) GetResourceIamPolicy() (*iam_compute_disk_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyDiskUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_compute_disk_errwrap.Wrapf(iam_compute_disk_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_compute_disk_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_compute_disk_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *ComputeDiskIamUpdater) SetResourceIamPolicy(policy *iam_compute_disk_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyDiskUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_compute_disk_schema.TimeoutCreate))
- if err != nil {
- return iam_compute_disk_errwrap.Wrapf(iam_compute_disk_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *ComputeDiskIamUpdater) qualifyDiskUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_compute_disk_fmt.Sprintf("{{ComputeBasePath}}%s/%s", iam_compute_disk_fmt.Sprintf("projects/%s/zones/%s/disks/%s", u.project, u.zone, u.name), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *ComputeDiskIamUpdater) GetResourceId() string {
- return iam_compute_disk_fmt.Sprintf("projects/%s/zones/%s/disks/%s", u.project, u.zone, u.name)
-}
-
-func (u *ComputeDiskIamUpdater) GetMutexKey() string {
- return iam_compute_disk_fmt.Sprintf("iam-compute-disk-%s", u.GetResourceId())
-}
-
-func (u *ComputeDiskIamUpdater) DescribeResource() string {
- return iam_compute_disk_fmt.Sprintf("compute disk %q", u.GetResourceId())
-}
-
-var ComputeImageIamSchema = map[string]*iam_compute_image_schema.Schema{
- "project": {
- Type: iam_compute_image_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "image": {
- Type: iam_compute_image_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type ComputeImageIamUpdater struct {
- project string
- image string
- d TerraformResourceData
- Config *Config
-}
-
-func ComputeImageIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_compute_image_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- if v, ok := d.GetOk("image"); ok {
- values["image"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/global/images/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("image").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeImageIamUpdater{
- project: values["project"],
- image: values["image"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_compute_image_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("image", u.GetResourceId()); err != nil {
- return nil, iam_compute_image_fmt.Errorf("Error setting image: %s", err)
- }
-
- return u, nil
-}
-
-func ComputeImageIdParseFunc(d *iam_compute_image_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/global/images/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeImageIamUpdater{
- project: values["project"],
- image: values["image"],
- d: d,
- Config: config,
- }
- if err := d.Set("image", u.GetResourceId()); err != nil {
- return iam_compute_image_fmt.Errorf("Error setting image: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *ComputeImageIamUpdater) GetResourceIamPolicy() (*iam_compute_image_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyImageUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- url, err = addQueryParams(url, map[string]string{"optionsRequestedPolicyVersion": iam_compute_image_fmt.Sprintf("%d", iamPolicyVersion)})
- if err != nil {
- return nil, err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_compute_image_errwrap.Wrapf(iam_compute_image_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_compute_image_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_compute_image_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *ComputeImageIamUpdater) SetResourceIamPolicy(policy *iam_compute_image_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyImageUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_compute_image_schema.TimeoutCreate))
- if err != nil {
- return iam_compute_image_errwrap.Wrapf(iam_compute_image_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *ComputeImageIamUpdater) qualifyImageUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_compute_image_fmt.Sprintf("{{ComputeBasePath}}%s/%s", iam_compute_image_fmt.Sprintf("projects/%s/global/images/%s", u.project, u.image), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *ComputeImageIamUpdater) GetResourceId() string {
- return iam_compute_image_fmt.Sprintf("projects/%s/global/images/%s", u.project, u.image)
-}
-
-func (u *ComputeImageIamUpdater) GetMutexKey() string {
- return iam_compute_image_fmt.Sprintf("iam-compute-image-%s", u.GetResourceId())
-}
-
-func (u *ComputeImageIamUpdater) DescribeResource() string {
- return iam_compute_image_fmt.Sprintf("compute image %q", u.GetResourceId())
-}
-
-var ComputeInstanceIamSchema = map[string]*iam_compute_instance_schema.Schema{
- "project": {
- Type: iam_compute_instance_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "zone": {
- Type: iam_compute_instance_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "instance_name": {
- Type: iam_compute_instance_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type ComputeInstanceIamUpdater struct {
- project string
- zone string
- instanceName string
- d TerraformResourceData
- Config *Config
-}
-
-func ComputeInstanceIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_compute_instance_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- zone, _ := getZone(d, config)
- if zone != "" {
- if err := d.Set("zone", zone); err != nil {
- return nil, iam_compute_instance_fmt.Errorf("Error setting zone: %s", err)
- }
- }
- values["zone"] = zone
- if v, ok := d.GetOk("instance_name"); ok {
- values["instance_name"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/zones/(?P[^/]+)/instances/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("instance_name").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeInstanceIamUpdater{
- project: values["project"],
- zone: values["zone"],
- instanceName: values["instance_name"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_compute_instance_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("zone", u.zone); err != nil {
- return nil, iam_compute_instance_fmt.Errorf("Error setting zone: %s", err)
- }
- if err := d.Set("instance_name", u.GetResourceId()); err != nil {
- return nil, iam_compute_instance_fmt.Errorf("Error setting instance_name: %s", err)
- }
-
- return u, nil
-}
-
-func ComputeInstanceIdParseFunc(d *iam_compute_instance_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- zone, _ := getZone(d, config)
- if zone != "" {
- values["zone"] = zone
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/zones/(?P[^/]+)/instances/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeInstanceIamUpdater{
- project: values["project"],
- zone: values["zone"],
- instanceName: values["instance_name"],
- d: d,
- Config: config,
- }
- if err := d.Set("instance_name", u.GetResourceId()); err != nil {
- return iam_compute_instance_fmt.Errorf("Error setting instance_name: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *ComputeInstanceIamUpdater) GetResourceIamPolicy() (*iam_compute_instance_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyInstanceUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- url, err = addQueryParams(url, map[string]string{"optionsRequestedPolicyVersion": iam_compute_instance_fmt.Sprintf("%d", iamPolicyVersion)})
- if err != nil {
- return nil, err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_compute_instance_errwrap.Wrapf(iam_compute_instance_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_compute_instance_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_compute_instance_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *ComputeInstanceIamUpdater) SetResourceIamPolicy(policy *iam_compute_instance_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyInstanceUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_compute_instance_schema.TimeoutCreate))
- if err != nil {
- return iam_compute_instance_errwrap.Wrapf(iam_compute_instance_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *ComputeInstanceIamUpdater) qualifyInstanceUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_compute_instance_fmt.Sprintf("{{ComputeBasePath}}%s/%s", iam_compute_instance_fmt.Sprintf("projects/%s/zones/%s/instances/%s", u.project, u.zone, u.instanceName), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *ComputeInstanceIamUpdater) GetResourceId() string {
- return iam_compute_instance_fmt.Sprintf("projects/%s/zones/%s/instances/%s", u.project, u.zone, u.instanceName)
-}
-
-func (u *ComputeInstanceIamUpdater) GetMutexKey() string {
- return iam_compute_instance_fmt.Sprintf("iam-compute-instance-%s", u.GetResourceId())
-}
-
-func (u *ComputeInstanceIamUpdater) DescribeResource() string {
- return iam_compute_instance_fmt.Sprintf("compute instance %q", u.GetResourceId())
-}
-
-var ComputeRegionDiskIamSchema = map[string]*iam_compute_region_disk_schema.Schema{
- "project": {
- Type: iam_compute_region_disk_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_compute_region_disk_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "name": {
- Type: iam_compute_region_disk_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type ComputeRegionDiskIamUpdater struct {
- project string
- region string
- name string
- d TerraformResourceData
- Config *Config
-}
-
-func ComputeRegionDiskIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_compute_region_disk_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- region, _ := getRegion(d, config)
- if region != "" {
- if err := d.Set("region", region); err != nil {
- return nil, iam_compute_region_disk_fmt.Errorf("Error setting region: %s", err)
- }
- }
- values["region"] = region
- if v, ok := d.GetOk("name"); ok {
- values["name"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/regions/(?P[^/]+)/disks/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("name").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeRegionDiskIamUpdater{
- project: values["project"],
- region: values["region"],
- name: values["name"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_compute_region_disk_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", u.region); err != nil {
- return nil, iam_compute_region_disk_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("name", u.GetResourceId()); err != nil {
- return nil, iam_compute_region_disk_fmt.Errorf("Error setting name: %s", err)
- }
-
- return u, nil
-}
-
-func ComputeRegionDiskIdParseFunc(d *iam_compute_region_disk_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- region, _ := getRegion(d, config)
- if region != "" {
- values["region"] = region
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/regions/(?P[^/]+)/disks/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeRegionDiskIamUpdater{
- project: values["project"],
- region: values["region"],
- name: values["name"],
- d: d,
- Config: config,
- }
- if err := d.Set("name", u.GetResourceId()); err != nil {
- return iam_compute_region_disk_fmt.Errorf("Error setting name: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *ComputeRegionDiskIamUpdater) GetResourceIamPolicy() (*iam_compute_region_disk_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyRegionDiskUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_compute_region_disk_errwrap.Wrapf(iam_compute_region_disk_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_compute_region_disk_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_compute_region_disk_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *ComputeRegionDiskIamUpdater) SetResourceIamPolicy(policy *iam_compute_region_disk_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyRegionDiskUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_compute_region_disk_schema.TimeoutCreate))
- if err != nil {
- return iam_compute_region_disk_errwrap.Wrapf(iam_compute_region_disk_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *ComputeRegionDiskIamUpdater) qualifyRegionDiskUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_compute_region_disk_fmt.Sprintf("{{ComputeBasePath}}%s/%s", iam_compute_region_disk_fmt.Sprintf("projects/%s/regions/%s/disks/%s", u.project, u.region, u.name), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *ComputeRegionDiskIamUpdater) GetResourceId() string {
- return iam_compute_region_disk_fmt.Sprintf("projects/%s/regions/%s/disks/%s", u.project, u.region, u.name)
-}
-
-func (u *ComputeRegionDiskIamUpdater) GetMutexKey() string {
- return iam_compute_region_disk_fmt.Sprintf("iam-compute-regiondisk-%s", u.GetResourceId())
-}
-
-func (u *ComputeRegionDiskIamUpdater) DescribeResource() string {
- return iam_compute_region_disk_fmt.Sprintf("compute regiondisk %q", u.GetResourceId())
-}
-
-var ComputeSubnetworkIamSchema = map[string]*iam_compute_subnetwork_schema.Schema{
- "project": {
- Type: iam_compute_subnetwork_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_compute_subnetwork_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "subnetwork": {
- Type: iam_compute_subnetwork_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type ComputeSubnetworkIamUpdater struct {
- project string
- region string
- subnetwork string
- d TerraformResourceData
- Config *Config
-}
-
-func ComputeSubnetworkIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_compute_subnetwork_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- region, _ := getRegion(d, config)
- if region != "" {
- if err := d.Set("region", region); err != nil {
- return nil, iam_compute_subnetwork_fmt.Errorf("Error setting region: %s", err)
- }
- }
- values["region"] = region
- if v, ok := d.GetOk("subnetwork"); ok {
- values["subnetwork"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/regions/(?P[^/]+)/subnetworks/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("subnetwork").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeSubnetworkIamUpdater{
- project: values["project"],
- region: values["region"],
- subnetwork: values["subnetwork"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_compute_subnetwork_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", u.region); err != nil {
- return nil, iam_compute_subnetwork_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("subnetwork", u.GetResourceId()); err != nil {
- return nil, iam_compute_subnetwork_fmt.Errorf("Error setting subnetwork: %s", err)
- }
-
- return u, nil
-}
-
-func ComputeSubnetworkIdParseFunc(d *iam_compute_subnetwork_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- region, _ := getRegion(d, config)
- if region != "" {
- values["region"] = region
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/regions/(?P[^/]+)/subnetworks/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ComputeSubnetworkIamUpdater{
- project: values["project"],
- region: values["region"],
- subnetwork: values["subnetwork"],
- d: d,
- Config: config,
- }
- if err := d.Set("subnetwork", u.GetResourceId()); err != nil {
- return iam_compute_subnetwork_fmt.Errorf("Error setting subnetwork: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *ComputeSubnetworkIamUpdater) GetResourceIamPolicy() (*iam_compute_subnetwork_cloudresourcemanager.Policy, error) {
- url, err := u.qualifySubnetworkUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- url, err = addQueryParams(url, map[string]string{"optionsRequestedPolicyVersion": iam_compute_subnetwork_fmt.Sprintf("%d", iamPolicyVersion)})
- if err != nil {
- return nil, err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_compute_subnetwork_errwrap.Wrapf(iam_compute_subnetwork_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_compute_subnetwork_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_compute_subnetwork_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *ComputeSubnetworkIamUpdater) SetResourceIamPolicy(policy *iam_compute_subnetwork_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifySubnetworkUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_compute_subnetwork_schema.TimeoutCreate))
- if err != nil {
- return iam_compute_subnetwork_errwrap.Wrapf(iam_compute_subnetwork_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *ComputeSubnetworkIamUpdater) qualifySubnetworkUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_compute_subnetwork_fmt.Sprintf("{{ComputeBasePath}}%s/%s", iam_compute_subnetwork_fmt.Sprintf("projects/%s/regions/%s/subnetworks/%s", u.project, u.region, u.subnetwork), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *ComputeSubnetworkIamUpdater) GetResourceId() string {
- return iam_compute_subnetwork_fmt.Sprintf("projects/%s/regions/%s/subnetworks/%s", u.project, u.region, u.subnetwork)
-}
-
-func (u *ComputeSubnetworkIamUpdater) GetMutexKey() string {
- return iam_compute_subnetwork_fmt.Sprintf("iam-compute-subnetwork-%s", u.GetResourceId())
-}
-
-func (u *ComputeSubnetworkIamUpdater) DescribeResource() string {
- return iam_compute_subnetwork_fmt.Sprintf("compute subnetwork %q", u.GetResourceId())
-}
-
-var DataCatalogEntryGroupIamSchema = map[string]*iam_data_catalog_entry_group_schema.Schema{
- "project": {
- Type: iam_data_catalog_entry_group_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_data_catalog_entry_group_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "entry_group": {
- Type: iam_data_catalog_entry_group_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type DataCatalogEntryGroupIamUpdater struct {
- project string
- region string
- entryGroup string
- d TerraformResourceData
- Config *Config
-}
-
-func DataCatalogEntryGroupIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_data_catalog_entry_group_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- region, _ := getRegion(d, config)
- if region != "" {
- if err := d.Set("region", region); err != nil {
- return nil, iam_data_catalog_entry_group_fmt.Errorf("Error setting region: %s", err)
- }
- }
- values["region"] = region
- if v, ok := d.GetOk("entry_group"); ok {
- values["entry_group"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/entryGroups/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("entry_group").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &DataCatalogEntryGroupIamUpdater{
- project: values["project"],
- region: values["region"],
- entryGroup: values["entry_group"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_data_catalog_entry_group_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", u.region); err != nil {
- return nil, iam_data_catalog_entry_group_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("entry_group", u.GetResourceId()); err != nil {
- return nil, iam_data_catalog_entry_group_fmt.Errorf("Error setting entry_group: %s", err)
- }
-
- return u, nil
-}
-
-func DataCatalogEntryGroupIdParseFunc(d *iam_data_catalog_entry_group_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- region, _ := getRegion(d, config)
- if region != "" {
- values["region"] = region
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/entryGroups/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &DataCatalogEntryGroupIamUpdater{
- project: values["project"],
- region: values["region"],
- entryGroup: values["entry_group"],
- d: d,
- Config: config,
- }
- if err := d.Set("entry_group", u.GetResourceId()); err != nil {
- return iam_data_catalog_entry_group_fmt.Errorf("Error setting entry_group: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *DataCatalogEntryGroupIamUpdater) GetResourceIamPolicy() (*iam_data_catalog_entry_group_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyEntryGroupUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_data_catalog_entry_group_errwrap.Wrapf(iam_data_catalog_entry_group_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_data_catalog_entry_group_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_data_catalog_entry_group_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *DataCatalogEntryGroupIamUpdater) SetResourceIamPolicy(policy *iam_data_catalog_entry_group_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyEntryGroupUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_data_catalog_entry_group_schema.TimeoutCreate))
- if err != nil {
- return iam_data_catalog_entry_group_errwrap.Wrapf(iam_data_catalog_entry_group_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *DataCatalogEntryGroupIamUpdater) qualifyEntryGroupUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_data_catalog_entry_group_fmt.Sprintf("{{DataCatalogBasePath}}%s:%s", iam_data_catalog_entry_group_fmt.Sprintf("projects/%s/locations/%s/entryGroups/%s", u.project, u.region, u.entryGroup), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *DataCatalogEntryGroupIamUpdater) GetResourceId() string {
- return iam_data_catalog_entry_group_fmt.Sprintf("projects/%s/locations/%s/entryGroups/%s", u.project, u.region, u.entryGroup)
-}
-
-func (u *DataCatalogEntryGroupIamUpdater) GetMutexKey() string {
- return iam_data_catalog_entry_group_fmt.Sprintf("iam-datacatalog-entrygroup-%s", u.GetResourceId())
-}
-
-func (u *DataCatalogEntryGroupIamUpdater) DescribeResource() string {
- return iam_data_catalog_entry_group_fmt.Sprintf("datacatalog entrygroup %q", u.GetResourceId())
-}
-
-var DataCatalogTagTemplateIamSchema = map[string]*iam_data_catalog_tag_template_schema.Schema{
- "project": {
- Type: iam_data_catalog_tag_template_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_data_catalog_tag_template_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "tag_template": {
- Type: iam_data_catalog_tag_template_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type DataCatalogTagTemplateIamUpdater struct {
- project string
- region string
- tagTemplate string
- d TerraformResourceData
- Config *Config
-}
-
-func DataCatalogTagTemplateIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_data_catalog_tag_template_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- region, _ := getRegion(d, config)
- if region != "" {
- if err := d.Set("region", region); err != nil {
- return nil, iam_data_catalog_tag_template_fmt.Errorf("Error setting region: %s", err)
- }
- }
- values["region"] = region
- if v, ok := d.GetOk("tag_template"); ok {
- values["tag_template"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/tagTemplates/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("tag_template").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &DataCatalogTagTemplateIamUpdater{
- project: values["project"],
- region: values["region"],
- tagTemplate: values["tag_template"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_data_catalog_tag_template_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", u.region); err != nil {
- return nil, iam_data_catalog_tag_template_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("tag_template", u.GetResourceId()); err != nil {
- return nil, iam_data_catalog_tag_template_fmt.Errorf("Error setting tag_template: %s", err)
- }
-
- return u, nil
-}
-
-func DataCatalogTagTemplateIdParseFunc(d *iam_data_catalog_tag_template_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- region, _ := getRegion(d, config)
- if region != "" {
- values["region"] = region
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/locations/(?P[^/]+)/tagTemplates/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &DataCatalogTagTemplateIamUpdater{
- project: values["project"],
- region: values["region"],
- tagTemplate: values["tag_template"],
- d: d,
- Config: config,
- }
- if err := d.Set("tag_template", u.GetResourceId()); err != nil {
- return iam_data_catalog_tag_template_fmt.Errorf("Error setting tag_template: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *DataCatalogTagTemplateIamUpdater) GetResourceIamPolicy() (*iam_data_catalog_tag_template_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyTagTemplateUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_data_catalog_tag_template_errwrap.Wrapf(iam_data_catalog_tag_template_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_data_catalog_tag_template_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_data_catalog_tag_template_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *DataCatalogTagTemplateIamUpdater) SetResourceIamPolicy(policy *iam_data_catalog_tag_template_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyTagTemplateUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_data_catalog_tag_template_schema.TimeoutCreate))
- if err != nil {
- return iam_data_catalog_tag_template_errwrap.Wrapf(iam_data_catalog_tag_template_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *DataCatalogTagTemplateIamUpdater) qualifyTagTemplateUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_data_catalog_tag_template_fmt.Sprintf("{{DataCatalogBasePath}}%s:%s", iam_data_catalog_tag_template_fmt.Sprintf("projects/%s/locations/%s/tagTemplates/%s", u.project, u.region, u.tagTemplate), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *DataCatalogTagTemplateIamUpdater) GetResourceId() string {
- return iam_data_catalog_tag_template_fmt.Sprintf("projects/%s/locations/%s/tagTemplates/%s", u.project, u.region, u.tagTemplate)
-}
-
-func (u *DataCatalogTagTemplateIamUpdater) GetMutexKey() string {
- return iam_data_catalog_tag_template_fmt.Sprintf("iam-datacatalog-tagtemplate-%s", u.GetResourceId())
-}
-
-func (u *DataCatalogTagTemplateIamUpdater) DescribeResource() string {
- return iam_data_catalog_tag_template_fmt.Sprintf("datacatalog tagtemplate %q", u.GetResourceId())
-}
-
-var IamDataprocClusterSchema = map[string]*iam_dataproc_cluster_schema.Schema{
- "cluster": {
- Type: iam_dataproc_cluster_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "project": {
- Type: iam_dataproc_cluster_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_dataproc_cluster_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
-}
-
-type DataprocClusterIamUpdater struct {
- project string
- region string
- cluster string
- d TerraformResourceData
- Config *Config
-}
-
-func NewDataprocClusterUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- project, err := getProject(d, config)
- if err != nil {
- return nil, err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return nil, err
- }
-
- if err := d.Set("project", project); err != nil {
- return nil, iam_dataproc_cluster_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return nil, iam_dataproc_cluster_fmt.Errorf("Error setting region: %s", err)
- }
-
- return &DataprocClusterIamUpdater{
- project: project,
- region: region,
- cluster: d.Get("cluster").(string),
- d: d,
- Config: config,
- }, nil
-}
-
-func DataprocClusterIdParseFunc(d *iam_dataproc_cluster_schema.ResourceData, config *Config) error {
- fv, err := parseRegionalFieldValue("clusters", d.Id(), "project", "region", "zone", d, config, true)
- if err != nil {
- return err
- }
-
- if err := d.Set("project", fv.Project); err != nil {
- return iam_dataproc_cluster_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", fv.Region); err != nil {
- return iam_dataproc_cluster_fmt.Errorf("Error setting region: %s", err)
- }
- if err := d.Set("cluster", fv.Name); err != nil {
- return iam_dataproc_cluster_fmt.Errorf("Error setting cluster: %s", err)
- }
-
- d.SetId(fv.RelativeLink())
- return nil
-}
-
-func (u *DataprocClusterIamUpdater) GetResourceIamPolicy() (*iam_dataproc_cluster_cloudresourcemanager.Policy, error) {
- req := &iam_dataproc_cluster_dataproc.GetIamPolicyRequest{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewDataprocClient(userAgent).Projects.Regions.Clusters.GetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return nil, iam_dataproc_cluster_errwrap.Wrapf(iam_dataproc_cluster_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := dataprocToResourceManagerPolicy(p)
- if err != nil {
- return nil, iam_dataproc_cluster_errwrap.Wrapf(iam_dataproc_cluster_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *DataprocClusterIamUpdater) SetResourceIamPolicy(policy *iam_dataproc_cluster_cloudresourcemanager.Policy) error {
- dataprocPolicy, err := resourceManagerToDataprocPolicy(policy)
- if err != nil {
- return iam_dataproc_cluster_errwrap.Wrapf(iam_dataproc_cluster_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- req := &iam_dataproc_cluster_dataproc.SetIamPolicyRequest{Policy: dataprocPolicy}
- _, err = u.Config.NewDataprocClient(userAgent).Projects.Regions.Clusters.SetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return iam_dataproc_cluster_errwrap.Wrapf(iam_dataproc_cluster_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *DataprocClusterIamUpdater) GetResourceId() string {
- return iam_dataproc_cluster_fmt.Sprintf("projects/%s/regions/%s/clusters/%s", u.project, u.region, u.cluster)
-}
-
-func (u *DataprocClusterIamUpdater) GetMutexKey() string {
- return iam_dataproc_cluster_fmt.Sprintf("iam-dataproc-cluster-%s-%s-%s", u.project, u.region, u.cluster)
-}
-
-func (u *DataprocClusterIamUpdater) DescribeResource() string {
- return iam_dataproc_cluster_fmt.Sprintf("Dataproc Cluster %s/%s/%s", u.project, u.region, u.cluster)
-}
-
-var IamDataprocJobSchema = map[string]*iam_dataproc_job_schema.Schema{
- "job_id": {
- Type: iam_dataproc_job_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "project": {
- Type: iam_dataproc_job_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
- "region": {
- Type: iam_dataproc_job_schema.TypeString,
- Optional: true,
- Computed: true,
- ForceNew: true,
- },
-}
-
-type DataprocJobIamUpdater struct {
- project string
- region string
- jobId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewDataprocJobUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- project, err := getProject(d, config)
- if err != nil {
- return nil, err
- }
-
- region, err := getRegion(d, config)
- if err != nil {
- return nil, err
- }
-
- if err := d.Set("project", project); err != nil {
- return nil, iam_dataproc_job_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", region); err != nil {
- return nil, iam_dataproc_job_fmt.Errorf("Error setting region: %s", err)
- }
-
- return &DataprocJobIamUpdater{
- project: project,
- region: region,
- jobId: d.Get("job_id").(string),
- d: d,
- Config: config,
- }, nil
-}
-
-func DataprocJobIdParseFunc(d *iam_dataproc_job_schema.ResourceData, config *Config) error {
- fv, err := parseRegionalFieldValue("jobs", d.Id(), "project", "region", "zone", d, config, true)
- if err != nil {
- return err
- }
-
- if err := d.Set("job_id", fv.Name); err != nil {
- return iam_dataproc_job_fmt.Errorf("Error setting job_id: %s", err)
- }
- if err := d.Set("project", fv.Project); err != nil {
- return iam_dataproc_job_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("region", fv.Region); err != nil {
- return iam_dataproc_job_fmt.Errorf("Error setting region: %s", err)
- }
-
- d.SetId(fv.RelativeLink())
- return nil
-}
-
-func (u *DataprocJobIamUpdater) GetResourceIamPolicy() (*iam_dataproc_job_cloudresourcemanager.Policy, error) {
- req := &iam_dataproc_job_dataproc.GetIamPolicyRequest{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewDataprocClient(userAgent).Projects.Regions.Jobs.GetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return nil, iam_dataproc_job_errwrap.Wrapf(iam_dataproc_job_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := dataprocToResourceManagerPolicy(p)
- if err != nil {
- return nil, iam_dataproc_job_errwrap.Wrapf(iam_dataproc_job_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *DataprocJobIamUpdater) SetResourceIamPolicy(policy *iam_dataproc_job_cloudresourcemanager.Policy) error {
- dataprocPolicy, err := resourceManagerToDataprocPolicy(policy)
- if err != nil {
- return iam_dataproc_job_errwrap.Wrapf(iam_dataproc_job_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- req := &iam_dataproc_job_dataproc.SetIamPolicyRequest{Policy: dataprocPolicy}
- _, err = u.Config.NewDataprocClient(userAgent).Projects.Regions.Jobs.SetIamPolicy(u.GetResourceId(), req).Do()
- if err != nil {
- return iam_dataproc_job_errwrap.Wrapf(iam_dataproc_job_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *DataprocJobIamUpdater) GetResourceId() string {
- return iam_dataproc_job_fmt.Sprintf("projects/%s/regions/%s/jobs/%s", u.project, u.region, u.jobId)
-}
-
-func (u *DataprocJobIamUpdater) GetMutexKey() string {
- return iam_dataproc_job_fmt.Sprintf("iam-dataproc-job-%s-%s-%s", u.project, u.region, u.jobId)
-}
-
-func (u *DataprocJobIamUpdater) DescribeResource() string {
- return iam_dataproc_job_fmt.Sprintf("Dataproc Job %s/%s/%s", u.project, u.region, u.jobId)
-}
-
-func resourceManagerToDataprocPolicy(p *iam_dataproc_job_cloudresourcemanager.Policy) (*iam_dataproc_job_dataproc.Policy, error) {
- out := &iam_dataproc_job_dataproc.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_dataproc_job_errwrap.Wrapf("Cannot convert a dataproc policy to a cloudresourcemanager policy: {{err}}", err)
- }
- return out, nil
-}
-
-func dataprocToResourceManagerPolicy(p *iam_dataproc_job_dataproc.Policy) (*iam_dataproc_job_cloudresourcemanager.Policy, error) {
- out := &iam_dataproc_job_cloudresourcemanager.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_dataproc_job_errwrap.Wrapf("Cannot convert a cloudresourcemanager policy to a dataproc policy: {{err}}", err)
- }
- return out, nil
-}
-
-var ServiceManagementServiceIamSchema = map[string]*iam_endpoints_service_schema.Schema{
- "service_name": {
- Type: iam_endpoints_service_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type ServiceManagementServiceIamUpdater struct {
- serviceName string
- d TerraformResourceData
- Config *Config
-}
-
-func ServiceManagementServiceIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- if v, ok := d.GetOk("service_name"); ok {
- values["serviceName"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"services/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("service_name").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ServiceManagementServiceIamUpdater{
- serviceName: values["serviceName"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("service_name", u.GetResourceId()); err != nil {
- return nil, iam_endpoints_service_fmt.Errorf("Error setting service_name: %s", err)
- }
-
- return u, nil
-}
-
-func ServiceManagementServiceIdParseFunc(d *iam_endpoints_service_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- m, err := getImportIdQualifiers([]string{"services/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &ServiceManagementServiceIamUpdater{
- serviceName: values["serviceName"],
- d: d,
- Config: config,
- }
- if err := d.Set("service_name", u.GetResourceId()); err != nil {
- return iam_endpoints_service_fmt.Errorf("Error setting service_name: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *ServiceManagementServiceIamUpdater) GetResourceIamPolicy() (*iam_endpoints_service_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyServiceUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", "", url, userAgent, obj)
- if err != nil {
- return nil, iam_endpoints_service_errwrap.Wrapf(iam_endpoints_service_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_endpoints_service_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_endpoints_service_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *ServiceManagementServiceIamUpdater) SetResourceIamPolicy(policy *iam_endpoints_service_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyServiceUrl("setIamPolicy")
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", "", url, userAgent, obj, u.d.Timeout(iam_endpoints_service_schema.TimeoutCreate))
- if err != nil {
- return iam_endpoints_service_errwrap.Wrapf(iam_endpoints_service_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *ServiceManagementServiceIamUpdater) qualifyServiceUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_endpoints_service_fmt.Sprintf("{{ServiceManagementBasePath}}%s:%s", iam_endpoints_service_fmt.Sprintf("services/%s", u.serviceName), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *ServiceManagementServiceIamUpdater) GetResourceId() string {
- return iam_endpoints_service_fmt.Sprintf("services/%s", u.serviceName)
-}
-
-func (u *ServiceManagementServiceIamUpdater) GetMutexKey() string {
- return iam_endpoints_service_fmt.Sprintf("iam-servicemanagement-service-%s", u.GetResourceId())
-}
-
-func (u *ServiceManagementServiceIamUpdater) DescribeResource() string {
- return iam_endpoints_service_fmt.Sprintf("servicemanagement service %q", u.GetResourceId())
-}
-
-var IamFolderSchema = map[string]*iam_folder_schema.Schema{
- "folder": {
- Type: iam_folder_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type FolderIamUpdater struct {
- folderId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewFolderIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- return &FolderIamUpdater{
- folderId: canonicalFolderId(d.Get("folder").(string)),
- d: d,
- Config: config,
- }, nil
-}
-
-func FolderIdParseFunc(d *iam_folder_schema.ResourceData, _ *Config) error {
- if !iam_folder_strings.HasPrefix(d.Id(), "folders/") {
- d.SetId(iam_folder_fmt.Sprintf("folders/%s", d.Id()))
- }
- if err := d.Set("folder", d.Id()); err != nil {
- return iam_folder_fmt.Errorf("Error setting folder: %s", err)
- }
- return nil
-}
-
-func (u *FolderIamUpdater) GetResourceIamPolicy() (*iam_folder_cloudresourcemanager.Policy, error) {
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- return getFolderIamPolicyByFolderName(u.folderId, userAgent, u.Config)
-}
-
-func (u *FolderIamUpdater) SetResourceIamPolicy(policy *iam_folder_cloudresourcemanager.Policy) error {
- v2Policy, err := v1PolicyToV2(policy)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewResourceManagerV2Client(userAgent).Folders.SetIamPolicy(u.folderId, &iam_folder_cloudresourcemanagerresourceManagerV2.SetIamPolicyRequest{
- Policy: v2Policy,
- UpdateMask: "bindings,etag,auditConfigs",
- }).Do()
-
- if err != nil {
- return iam_folder_errwrap.Wrapf(iam_folder_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *FolderIamUpdater) GetResourceId() string {
- return u.folderId
-}
-
-func (u *FolderIamUpdater) GetMutexKey() string {
- return iam_folder_fmt.Sprintf("iam-folder-%s", u.folderId)
-}
-
-func (u *FolderIamUpdater) DescribeResource() string {
- return iam_folder_fmt.Sprintf("folder %q", u.folderId)
-}
-
-func canonicalFolderId(folder string) string {
- if iam_folder_strings.HasPrefix(folder, "folders/") {
- return folder
- }
-
- return "folders/" + folder
-}
-
-func v1PolicyToV2(in *iam_folder_cloudresourcemanager.Policy) (*iam_folder_cloudresourcemanagerresourceManagerV2.Policy, error) {
- out := &iam_folder_cloudresourcemanagerresourceManagerV2.Policy{}
- err := Convert(in, out)
- if err != nil {
- return nil, iam_folder_errwrap.Wrapf("Cannot convert a v1 policy to a v2 policy: {{err}}", err)
- }
- return out, nil
-}
-
-func v2PolicyToV1(in *iam_folder_cloudresourcemanagerresourceManagerV2.Policy) (*iam_folder_cloudresourcemanager.Policy, error) {
- out := &iam_folder_cloudresourcemanager.Policy{}
- err := Convert(in, out)
- if err != nil {
- return nil, iam_folder_errwrap.Wrapf("Cannot convert a v2 policy to a v1 policy: {{err}}", err)
- }
- return out, nil
-}
-
-func getFolderIamPolicyByFolderName(folderName, userAgent string, config *Config) (*iam_folder_cloudresourcemanager.Policy, error) {
- p, err := config.NewResourceManagerV2Client(userAgent).Folders.GetIamPolicy(folderName,
- &iam_folder_cloudresourcemanagerresourceManagerV2.GetIamPolicyRequest{
- Options: &iam_folder_cloudresourcemanagerresourceManagerV2.GetPolicyOptions{
- RequestedPolicyVersion: iamPolicyVersion,
- },
- }).Do()
- if err != nil {
- return nil, iam_folder_errwrap.Wrapf(iam_folder_fmt.Sprintf("Error retrieving IAM policy for folder %q: {{err}}", folderName), err)
- }
-
- v1Policy, err := v2PolicyToV1(p)
- if err != nil {
- return nil, err
- }
-
- return v1Policy, nil
-}
-
-var HealthcareConsentStoreIamSchema = map[string]*iam_healthcare_consent_store_schema.Schema{
- "dataset": {
- Type: iam_healthcare_consent_store_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "consent_store_id": {
- Type: iam_healthcare_consent_store_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type HealthcareConsentStoreIamUpdater struct {
- dataset string
- consentStoreId string
- d TerraformResourceData
- Config *Config
-}
-
-func HealthcareConsentStoreIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- if v, ok := d.GetOk("dataset"); ok {
- values["dataset"] = v.(string)
- }
-
- if v, ok := d.GetOk("consent_store_id"); ok {
- values["consent_store_id"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"(?P.+)/consentStores/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("consent_store_id").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &HealthcareConsentStoreIamUpdater{
- dataset: values["dataset"],
- consentStoreId: values["consent_store_id"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("dataset", u.dataset); err != nil {
- return nil, iam_healthcare_consent_store_fmt.Errorf("Error setting dataset: %s", err)
- }
- if err := d.Set("consent_store_id", u.GetResourceId()); err != nil {
- return nil, iam_healthcare_consent_store_fmt.Errorf("Error setting consent_store_id: %s", err)
- }
-
- return u, nil
-}
-
-func HealthcareConsentStoreIdParseFunc(d *iam_healthcare_consent_store_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- m, err := getImportIdQualifiers([]string{"(?P.+)/consentStores/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &HealthcareConsentStoreIamUpdater{
- dataset: values["dataset"],
- consentStoreId: values["consent_store_id"],
- d: d,
- Config: config,
- }
- if err := d.Set("consent_store_id", u.GetResourceId()); err != nil {
- return iam_healthcare_consent_store_fmt.Errorf("Error setting consent_store_id: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *HealthcareConsentStoreIamUpdater) GetResourceIamPolicy() (*iam_healthcare_consent_store_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyConsentStoreUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- var obj map[string]interface{}
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "GET", "", url, userAgent, obj)
- if err != nil {
- return nil, iam_healthcare_consent_store_errwrap.Wrapf(iam_healthcare_consent_store_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_healthcare_consent_store_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_healthcare_consent_store_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *HealthcareConsentStoreIamUpdater) SetResourceIamPolicy(policy *iam_healthcare_consent_store_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyConsentStoreUrl("setIamPolicy")
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", "", url, userAgent, obj, u.d.Timeout(iam_healthcare_consent_store_schema.TimeoutCreate))
- if err != nil {
- return iam_healthcare_consent_store_errwrap.Wrapf(iam_healthcare_consent_store_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *HealthcareConsentStoreIamUpdater) qualifyConsentStoreUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_healthcare_consent_store_fmt.Sprintf("{{HealthcareBasePath}}%s:%s", iam_healthcare_consent_store_fmt.Sprintf("%s/consentStores/%s", u.dataset, u.consentStoreId), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *HealthcareConsentStoreIamUpdater) GetResourceId() string {
- return iam_healthcare_consent_store_fmt.Sprintf("%s/consentStores/%s", u.dataset, u.consentStoreId)
-}
-
-func (u *HealthcareConsentStoreIamUpdater) GetMutexKey() string {
- return iam_healthcare_consent_store_fmt.Sprintf("iam-healthcare-consentstore-%s", u.GetResourceId())
-}
-
-func (u *HealthcareConsentStoreIamUpdater) DescribeResource() string {
- return iam_healthcare_consent_store_fmt.Sprintf("healthcare consentstore %q", u.GetResourceId())
-}
-
-var IamHealthcareDatasetSchema = map[string]*iam_healthcare_dataset_schema.Schema{
- "dataset_id": {
- Type: iam_healthcare_dataset_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type HealthcareDatasetIamUpdater struct {
- resourceId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewHealthcareDatasetIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- dataset := d.Get("dataset_id").(string)
- datasetId, err := parseHealthcareDatasetId(dataset, config)
-
- if err != nil {
- return nil, iam_healthcare_dataset_errwrap.Wrapf(iam_healthcare_dataset_fmt.Sprintf("Error parsing resource ID for %s: {{err}}", dataset), err)
- }
-
- return &HealthcareDatasetIamUpdater{
- resourceId: datasetId.datasetId(),
- d: d,
- Config: config,
- }, nil
-}
-
-func DatasetIdParseFunc(d *iam_healthcare_dataset_schema.ResourceData, config *Config) error {
- datasetId, err := parseHealthcareDatasetId(d.Id(), config)
- if err != nil {
- return err
- }
-
- if err := d.Set("dataset_id", datasetId.datasetId()); err != nil {
- return iam_healthcare_dataset_fmt.Errorf("Error setting dataset_id: %s", err)
- }
- d.SetId(datasetId.datasetId())
- return nil
-}
-
-func (u *HealthcareDatasetIamUpdater) GetResourceIamPolicy() (*iam_healthcare_dataset_cloudresourcemanager.Policy, error) {
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.GetIamPolicy(u.resourceId).Do()
-
- if err != nil {
- return nil, iam_healthcare_dataset_errwrap.Wrapf(iam_healthcare_dataset_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := healthcareToResourceManagerPolicy(p)
-
- if err != nil {
- return nil, iam_healthcare_dataset_errwrap.Wrapf(iam_healthcare_dataset_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *HealthcareDatasetIamUpdater) SetResourceIamPolicy(policy *iam_healthcare_dataset_cloudresourcemanager.Policy) error {
- healthcarePolicy, err := resourceManagerToHealthcarePolicy(policy)
-
- if err != nil {
- return iam_healthcare_dataset_errwrap.Wrapf(iam_healthcare_dataset_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.SetIamPolicy(u.resourceId, &iam_healthcare_dataset_healthcarehealthcare.SetIamPolicyRequest{
- Policy: healthcarePolicy,
- }).Do()
-
- if err != nil {
- return iam_healthcare_dataset_errwrap.Wrapf(iam_healthcare_dataset_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *HealthcareDatasetIamUpdater) GetResourceId() string {
- return u.resourceId
-}
-
-func (u *HealthcareDatasetIamUpdater) GetMutexKey() string {
- return u.resourceId
-}
-
-func (u *HealthcareDatasetIamUpdater) DescribeResource() string {
- return iam_healthcare_dataset_fmt.Sprintf("Healthcare Dataset %q", u.resourceId)
-}
-
-func resourceManagerToHealthcarePolicy(p *iam_healthcare_dataset_cloudresourcemanager.Policy) (*iam_healthcare_dataset_healthcarehealthcare.Policy, error) {
- out := &iam_healthcare_dataset_healthcarehealthcare.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_healthcare_dataset_errwrap.Wrapf("Cannot convert a v1 policy to a healthcare policy: {{err}}", err)
- }
- return out, nil
-}
-
-func healthcareToResourceManagerPolicy(p *iam_healthcare_dataset_healthcarehealthcare.Policy) (*iam_healthcare_dataset_cloudresourcemanager.Policy, error) {
- out := &iam_healthcare_dataset_cloudresourcemanager.Policy{}
- err := Convert(p, out)
- if err != nil {
- return nil, iam_healthcare_dataset_errwrap.Wrapf("Cannot convert a healthcare policy to a v1 policy: {{err}}", err)
- }
- return out, nil
-}
-
-var IamHealthcareDicomStoreSchema = map[string]*iam_healthcare_dicom_store_schema.Schema{
- "dicom_store_id": {
- Type: iam_healthcare_dicom_store_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type HealthcareDicomStoreIamUpdater struct {
- resourceId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewHealthcareDicomStoreIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- dicomStore := d.Get("dicom_store_id").(string)
- dicomStoreId, err := parseHealthcareDicomStoreId(dicomStore, config)
-
- if err != nil {
- return nil, iam_healthcare_dicom_store_errwrap.Wrapf(iam_healthcare_dicom_store_fmt.Sprintf("Error parsing resource ID for %s: {{err}}", dicomStore), err)
- }
-
- return &HealthcareDicomStoreIamUpdater{
- resourceId: dicomStoreId.dicomStoreId(),
- d: d,
- Config: config,
- }, nil
-}
-
-func DicomStoreIdParseFunc(d *iam_healthcare_dicom_store_schema.ResourceData, config *Config) error {
- dicomStoreId, err := parseHealthcareDicomStoreId(d.Id(), config)
- if err != nil {
- return err
- }
- if err := d.Set("dicom_store_id", dicomStoreId.dicomStoreId()); err != nil {
- return iam_healthcare_dicom_store_fmt.Errorf("Error setting dicom_store_id: %s", err)
- }
- d.SetId(dicomStoreId.dicomStoreId())
- return nil
-}
-
-func (u *HealthcareDicomStoreIamUpdater) GetResourceIamPolicy() (*iam_healthcare_dicom_store_cloudresourcemanager.Policy, error) {
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.DicomStores.GetIamPolicy(u.resourceId).Do()
-
- if err != nil {
- return nil, iam_healthcare_dicom_store_errwrap.Wrapf(iam_healthcare_dicom_store_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := healthcareToResourceManagerPolicy(p)
-
- if err != nil {
- return nil, iam_healthcare_dicom_store_errwrap.Wrapf(iam_healthcare_dicom_store_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *HealthcareDicomStoreIamUpdater) SetResourceIamPolicy(policy *iam_healthcare_dicom_store_cloudresourcemanager.Policy) error {
- healthcarePolicy, err := resourceManagerToHealthcarePolicy(policy)
-
- if err != nil {
- return iam_healthcare_dicom_store_errwrap.Wrapf(iam_healthcare_dicom_store_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.DicomStores.SetIamPolicy(u.resourceId, &iam_healthcare_dicom_store_healthcarehealthcare.SetIamPolicyRequest{
- Policy: healthcarePolicy,
- }).Do()
-
- if err != nil {
- return iam_healthcare_dicom_store_errwrap.Wrapf(iam_healthcare_dicom_store_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *HealthcareDicomStoreIamUpdater) GetResourceId() string {
- return u.resourceId
-}
-
-func (u *HealthcareDicomStoreIamUpdater) GetMutexKey() string {
- return u.resourceId
-}
-
-func (u *HealthcareDicomStoreIamUpdater) DescribeResource() string {
- return iam_healthcare_dicom_store_fmt.Sprintf("Healthcare DicomStore %q", u.resourceId)
-}
-
-var IamHealthcareFhirStoreSchema = map[string]*iam_healthcare_fhir_store_schema.Schema{
- "fhir_store_id": {
- Type: iam_healthcare_fhir_store_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type HealthcareFhirStoreIamUpdater struct {
- resourceId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewHealthcareFhirStoreIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- fhirStore := d.Get("fhir_store_id").(string)
- fhirStoreId, err := parseHealthcareFhirStoreId(fhirStore, config)
-
- if err != nil {
- return nil, iam_healthcare_fhir_store_errwrap.Wrapf(iam_healthcare_fhir_store_fmt.Sprintf("Error parsing resource ID for %s: {{err}}", fhirStore), err)
- }
-
- return &HealthcareFhirStoreIamUpdater{
- resourceId: fhirStoreId.fhirStoreId(),
- d: d,
- Config: config,
- }, nil
-}
-
-func FhirStoreIdParseFunc(d *iam_healthcare_fhir_store_schema.ResourceData, config *Config) error {
- fhirStoreId, err := parseHealthcareFhirStoreId(d.Id(), config)
- if err != nil {
- return err
- }
- if err := d.Set("fhir_store_id", fhirStoreId.fhirStoreId()); err != nil {
- return iam_healthcare_fhir_store_fmt.Errorf("Error setting fhir_store_id: %s", err)
- }
- d.SetId(fhirStoreId.fhirStoreId())
- return nil
-}
-
-func (u *HealthcareFhirStoreIamUpdater) GetResourceIamPolicy() (*iam_healthcare_fhir_store_cloudresourcemanager.Policy, error) {
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.FhirStores.GetIamPolicy(u.resourceId).Do()
-
- if err != nil {
- return nil, iam_healthcare_fhir_store_errwrap.Wrapf(iam_healthcare_fhir_store_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := healthcareToResourceManagerPolicy(p)
-
- if err != nil {
- return nil, iam_healthcare_fhir_store_errwrap.Wrapf(iam_healthcare_fhir_store_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *HealthcareFhirStoreIamUpdater) SetResourceIamPolicy(policy *iam_healthcare_fhir_store_cloudresourcemanager.Policy) error {
- healthcarePolicy, err := resourceManagerToHealthcarePolicy(policy)
-
- if err != nil {
- return iam_healthcare_fhir_store_errwrap.Wrapf(iam_healthcare_fhir_store_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.FhirStores.SetIamPolicy(u.resourceId, &iam_healthcare_fhir_store_healthcarehealthcare.SetIamPolicyRequest{
- Policy: healthcarePolicy,
- }).Do()
-
- if err != nil {
- return iam_healthcare_fhir_store_errwrap.Wrapf(iam_healthcare_fhir_store_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *HealthcareFhirStoreIamUpdater) GetResourceId() string {
- return u.resourceId
-}
-
-func (u *HealthcareFhirStoreIamUpdater) GetMutexKey() string {
- return u.resourceId
-}
-
-func (u *HealthcareFhirStoreIamUpdater) DescribeResource() string {
- return iam_healthcare_fhir_store_fmt.Sprintf("Healthcare FhirStore %q", u.resourceId)
-}
-
-var IamHealthcareHl7V2StoreSchema = map[string]*iam_healthcare_hl7_v2_store_schema.Schema{
- "hl7_v2_store_id": {
- Type: iam_healthcare_hl7_v2_store_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
-}
-
-type HealthcareHl7V2StoreIamUpdater struct {
- resourceId string
- d TerraformResourceData
- Config *Config
-}
-
-func NewHealthcareHl7V2StoreIamUpdater(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- hl7V2Store := d.Get("hl7_v2_store_id").(string)
- hl7V2StoreId, err := parseHealthcareHl7V2StoreId(hl7V2Store, config)
-
- if err != nil {
- return nil, iam_healthcare_hl7_v2_store_errwrap.Wrapf(iam_healthcare_hl7_v2_store_fmt.Sprintf("Error parsing resource ID for %s: {{err}}", hl7V2Store), err)
- }
-
- return &HealthcareHl7V2StoreIamUpdater{
- resourceId: hl7V2StoreId.hl7V2StoreId(),
- d: d,
- Config: config,
- }, nil
-}
-
-func Hl7V2StoreIdParseFunc(d *iam_healthcare_hl7_v2_store_schema.ResourceData, config *Config) error {
- hl7V2StoreId, err := parseHealthcareHl7V2StoreId(d.Id(), config)
- if err != nil {
- return err
- }
- if err := d.Set("hl7_v2_store_id", hl7V2StoreId.hl7V2StoreId()); err != nil {
- return iam_healthcare_hl7_v2_store_fmt.Errorf("Error setting hl7_v2_store_id: %s", err)
- }
- d.SetId(hl7V2StoreId.hl7V2StoreId())
- return nil
-}
-
-func (u *HealthcareHl7V2StoreIamUpdater) GetResourceIamPolicy() (*iam_healthcare_hl7_v2_store_cloudresourcemanager.Policy, error) {
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- p, err := u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.Hl7V2Stores.GetIamPolicy(u.resourceId).Do()
-
- if err != nil {
- return nil, iam_healthcare_hl7_v2_store_errwrap.Wrapf(iam_healthcare_hl7_v2_store_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- cloudResourcePolicy, err := healthcareToResourceManagerPolicy(p)
-
- if err != nil {
- return nil, iam_healthcare_hl7_v2_store_errwrap.Wrapf(iam_healthcare_hl7_v2_store_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return cloudResourcePolicy, nil
-}
-
-func (u *HealthcareHl7V2StoreIamUpdater) SetResourceIamPolicy(policy *iam_healthcare_hl7_v2_store_cloudresourcemanager.Policy) error {
- healthcarePolicy, err := resourceManagerToHealthcarePolicy(policy)
-
- if err != nil {
- return iam_healthcare_hl7_v2_store_errwrap.Wrapf(iam_healthcare_hl7_v2_store_fmt.Sprintf("Invalid IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = u.Config.NewHealthcareClient(userAgent).Projects.Locations.Datasets.Hl7V2Stores.SetIamPolicy(u.resourceId, &iam_healthcare_hl7_v2_store_healthcarehealthcare.SetIamPolicyRequest{
- Policy: healthcarePolicy,
- }).Do()
-
- if err != nil {
- return iam_healthcare_hl7_v2_store_errwrap.Wrapf(iam_healthcare_hl7_v2_store_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *HealthcareHl7V2StoreIamUpdater) GetResourceId() string {
- return u.resourceId
-}
-
-func (u *HealthcareHl7V2StoreIamUpdater) GetMutexKey() string {
- return u.resourceId
-}
-
-func (u *HealthcareHl7V2StoreIamUpdater) DescribeResource() string {
- return iam_healthcare_hl7_v2_store_fmt.Sprintf("Healthcare Hl7V2Store %q", u.resourceId)
-}
-
-var IapAppEngineServiceIamSchema = map[string]*iam_iap_app_engine_service_schema.Schema{
- "project": {
- Type: iam_iap_app_engine_service_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "app_id": {
- Type: iam_iap_app_engine_service_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "service": {
- Type: iam_iap_app_engine_service_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type IapAppEngineServiceIamUpdater struct {
- project string
- appId string
- service string
- d TerraformResourceData
- Config *Config
-}
-
-func IapAppEngineServiceIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_iap_app_engine_service_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- if v, ok := d.GetOk("app_id"); ok {
- values["appId"] = v.(string)
- }
-
- if v, ok := d.GetOk("service"); ok {
- values["service"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_web/appengine-(?P[^/]+)/services/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("service").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &IapAppEngineServiceIamUpdater{
- project: values["project"],
- appId: values["appId"],
- service: values["service"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_iap_app_engine_service_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("app_id", u.appId); err != nil {
- return nil, iam_iap_app_engine_service_fmt.Errorf("Error setting app_id: %s", err)
- }
- if err := d.Set("service", u.GetResourceId()); err != nil {
- return nil, iam_iap_app_engine_service_fmt.Errorf("Error setting service: %s", err)
- }
-
- return u, nil
-}
-
-func IapAppEngineServiceIdParseFunc(d *iam_iap_app_engine_service_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_web/appengine-(?P[^/]+)/services/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &IapAppEngineServiceIamUpdater{
- project: values["project"],
- appId: values["appId"],
- service: values["service"],
- d: d,
- Config: config,
- }
- if err := d.Set("service", u.GetResourceId()); err != nil {
- return iam_iap_app_engine_service_fmt.Errorf("Error setting service: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *IapAppEngineServiceIamUpdater) GetResourceIamPolicy() (*iam_iap_app_engine_service_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyAppEngineServiceUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- obj = map[string]interface{}{
- "options": map[string]interface{}{
- "requestedPolicyVersion": iamPolicyVersion,
- },
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_iap_app_engine_service_errwrap.Wrapf(iam_iap_app_engine_service_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_iap_app_engine_service_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_iap_app_engine_service_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *IapAppEngineServiceIamUpdater) SetResourceIamPolicy(policy *iam_iap_app_engine_service_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyAppEngineServiceUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_iap_app_engine_service_schema.TimeoutCreate))
- if err != nil {
- return iam_iap_app_engine_service_errwrap.Wrapf(iam_iap_app_engine_service_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *IapAppEngineServiceIamUpdater) qualifyAppEngineServiceUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_iap_app_engine_service_fmt.Sprintf("{{IapBasePath}}%s:%s", iam_iap_app_engine_service_fmt.Sprintf("projects/%s/iap_web/appengine-%s/services/%s", u.project, u.appId, u.service), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *IapAppEngineServiceIamUpdater) GetResourceId() string {
- return iam_iap_app_engine_service_fmt.Sprintf("projects/%s/iap_web/appengine-%s/services/%s", u.project, u.appId, u.service)
-}
-
-func (u *IapAppEngineServiceIamUpdater) GetMutexKey() string {
- return iam_iap_app_engine_service_fmt.Sprintf("iam-iap-appengineservice-%s", u.GetResourceId())
-}
-
-func (u *IapAppEngineServiceIamUpdater) DescribeResource() string {
- return iam_iap_app_engine_service_fmt.Sprintf("iap appengineservice %q", u.GetResourceId())
-}
-
-var IapAppEngineVersionIamSchema = map[string]*iam_iap_app_engine_version_schema.Schema{
- "project": {
- Type: iam_iap_app_engine_version_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "app_id": {
- Type: iam_iap_app_engine_version_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "service": {
- Type: iam_iap_app_engine_version_schema.TypeString,
- Required: true,
- ForceNew: true,
- },
- "version_id": {
- Type: iam_iap_app_engine_version_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type IapAppEngineVersionIamUpdater struct {
- project string
- appId string
- service string
- versionId string
- d TerraformResourceData
- Config *Config
-}
-
-func IapAppEngineVersionIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_iap_app_engine_version_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- if v, ok := d.GetOk("app_id"); ok {
- values["appId"] = v.(string)
- }
-
- if v, ok := d.GetOk("service"); ok {
- values["service"] = v.(string)
- }
-
- if v, ok := d.GetOk("version_id"); ok {
- values["versionId"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_web/appengine-(?P[^/]+)/services/(?P[^/]+)/versions/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Get("version_id").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &IapAppEngineVersionIamUpdater{
- project: values["project"],
- appId: values["appId"],
- service: values["service"],
- versionId: values["versionId"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_iap_app_engine_version_fmt.Errorf("Error setting project: %s", err)
- }
- if err := d.Set("app_id", u.appId); err != nil {
- return nil, iam_iap_app_engine_version_fmt.Errorf("Error setting app_id: %s", err)
- }
- if err := d.Set("service", u.service); err != nil {
- return nil, iam_iap_app_engine_version_fmt.Errorf("Error setting service: %s", err)
- }
- if err := d.Set("version_id", u.GetResourceId()); err != nil {
- return nil, iam_iap_app_engine_version_fmt.Errorf("Error setting version_id: %s", err)
- }
-
- return u, nil
-}
-
-func IapAppEngineVersionIdParseFunc(d *iam_iap_app_engine_version_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_web/appengine-(?P[^/]+)/services/(?P[^/]+)/versions/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)/(?P[^/]+)/(?P[^/]+)", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &IapAppEngineVersionIamUpdater{
- project: values["project"],
- appId: values["appId"],
- service: values["service"],
- versionId: values["versionId"],
- d: d,
- Config: config,
- }
- if err := d.Set("version_id", u.GetResourceId()); err != nil {
- return iam_iap_app_engine_version_fmt.Errorf("Error setting version_id: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *IapAppEngineVersionIamUpdater) GetResourceIamPolicy() (*iam_iap_app_engine_version_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyAppEngineVersionUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- obj = map[string]interface{}{
- "options": map[string]interface{}{
- "requestedPolicyVersion": iamPolicyVersion,
- },
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_iap_app_engine_version_errwrap.Wrapf(iam_iap_app_engine_version_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_iap_app_engine_version_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_iap_app_engine_version_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *IapAppEngineVersionIamUpdater) SetResourceIamPolicy(policy *iam_iap_app_engine_version_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyAppEngineVersionUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_iap_app_engine_version_schema.TimeoutCreate))
- if err != nil {
- return iam_iap_app_engine_version_errwrap.Wrapf(iam_iap_app_engine_version_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *IapAppEngineVersionIamUpdater) qualifyAppEngineVersionUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_iap_app_engine_version_fmt.Sprintf("{{IapBasePath}}%s:%s", iam_iap_app_engine_version_fmt.Sprintf("projects/%s/iap_web/appengine-%s/services/%s/versions/%s", u.project, u.appId, u.service, u.versionId), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *IapAppEngineVersionIamUpdater) GetResourceId() string {
- return iam_iap_app_engine_version_fmt.Sprintf("projects/%s/iap_web/appengine-%s/services/%s/versions/%s", u.project, u.appId, u.service, u.versionId)
-}
-
-func (u *IapAppEngineVersionIamUpdater) GetMutexKey() string {
- return iam_iap_app_engine_version_fmt.Sprintf("iam-iap-appengineversion-%s", u.GetResourceId())
-}
-
-func (u *IapAppEngineVersionIamUpdater) DescribeResource() string {
- return iam_iap_app_engine_version_fmt.Sprintf("iap appengineversion %q", u.GetResourceId())
-}
-
-var IapTunnelIamSchema = map[string]*iam_iap_tunnel_schema.Schema{
- "project": {
- Type: iam_iap_tunnel_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type IapTunnelIamUpdater struct {
- project string
- d TerraformResourceData
- Config *Config
-}
-
-func IapTunnelIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_iap_tunnel_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_tunnel", "(?P[^/]+)"}, d, config, d.Get("project").(string))
- if err != nil {
- return nil, err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &IapTunnelIamUpdater{
- project: values["project"],
- d: d,
- Config: config,
- }
-
- if err := d.Set("project", u.project); err != nil {
- return nil, iam_iap_tunnel_fmt.Errorf("Error setting project: %s", err)
- }
-
- return u, nil
-}
-
-func IapTunnelIdParseFunc(d *iam_iap_tunnel_schema.ResourceData, config *Config) error {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- values["project"] = project
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_tunnel", "(?P[^/]+)"}, d, config, d.Id())
- if err != nil {
- return err
- }
-
- for k, v := range m {
- values[k] = v
- }
-
- u := &IapTunnelIamUpdater{
- project: values["project"],
- d: d,
- Config: config,
- }
- if err := d.Set("project", u.project); err != nil {
- return iam_iap_tunnel_fmt.Errorf("Error setting project: %s", err)
- }
- d.SetId(u.GetResourceId())
- return nil
-}
-
-func (u *IapTunnelIamUpdater) GetResourceIamPolicy() (*iam_iap_tunnel_cloudresourcemanager.Policy, error) {
- url, err := u.qualifyTunnelUrl("getIamPolicy")
- if err != nil {
- return nil, err
- }
-
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return nil, err
- }
- var obj map[string]interface{}
- obj = map[string]interface{}{
- "options": map[string]interface{}{
- "requestedPolicyVersion": iamPolicyVersion,
- },
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return nil, err
- }
-
- policy, err := sendRequest(u.Config, "POST", project, url, userAgent, obj)
- if err != nil {
- return nil, iam_iap_tunnel_errwrap.Wrapf(iam_iap_tunnel_fmt.Sprintf("Error retrieving IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- out := &iam_iap_tunnel_cloudresourcemanager.Policy{}
- err = Convert(policy, out)
- if err != nil {
- return nil, iam_iap_tunnel_errwrap.Wrapf("Cannot convert a policy to a resource manager policy: {{err}}", err)
- }
-
- return out, nil
-}
-
-func (u *IapTunnelIamUpdater) SetResourceIamPolicy(policy *iam_iap_tunnel_cloudresourcemanager.Policy) error {
- json, err := ConvertToMap(policy)
- if err != nil {
- return err
- }
-
- obj := make(map[string]interface{})
- obj["policy"] = json
-
- url, err := u.qualifyTunnelUrl("setIamPolicy")
- if err != nil {
- return err
- }
- project, err := getProject(u.d, u.Config)
- if err != nil {
- return err
- }
-
- userAgent, err := generateUserAgentString(u.d, u.Config.userAgent)
- if err != nil {
- return err
- }
-
- _, err = sendRequestWithTimeout(u.Config, "POST", project, url, userAgent, obj, u.d.Timeout(iam_iap_tunnel_schema.TimeoutCreate))
- if err != nil {
- return iam_iap_tunnel_errwrap.Wrapf(iam_iap_tunnel_fmt.Sprintf("Error setting IAM policy for %s: {{err}}", u.DescribeResource()), err)
- }
-
- return nil
-}
-
-func (u *IapTunnelIamUpdater) qualifyTunnelUrl(methodIdentifier string) (string, error) {
- urlTemplate := iam_iap_tunnel_fmt.Sprintf("{{IapBasePath}}%s:%s", iam_iap_tunnel_fmt.Sprintf("projects/%s/iap_tunnel", u.project), methodIdentifier)
- url, err := replaceVars(u.d, u.Config, urlTemplate)
- if err != nil {
- return "", err
- }
- return url, nil
-}
-
-func (u *IapTunnelIamUpdater) GetResourceId() string {
- return iam_iap_tunnel_fmt.Sprintf("projects/%s/iap_tunnel", u.project)
-}
-
-func (u *IapTunnelIamUpdater) GetMutexKey() string {
- return iam_iap_tunnel_fmt.Sprintf("iam-iap-tunnel-%s", u.GetResourceId())
-}
-
-func (u *IapTunnelIamUpdater) DescribeResource() string {
- return iam_iap_tunnel_fmt.Sprintf("iap tunnel %q", u.GetResourceId())
-}
-
-var IapTunnelInstanceIamSchema = map[string]*iam_iap_tunnel_instance_schema.Schema{
- "project": {
- Type: iam_iap_tunnel_instance_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "zone": {
- Type: iam_iap_tunnel_instance_schema.TypeString,
- Computed: true,
- Optional: true,
- ForceNew: true,
- },
- "instance": {
- Type: iam_iap_tunnel_instance_schema.TypeString,
- Required: true,
- ForceNew: true,
- DiffSuppressFunc: compareSelfLinkOrResourceName,
- },
-}
-
-type IapTunnelInstanceIamUpdater struct {
- project string
- zone string
- instance string
- d TerraformResourceData
- Config *Config
-}
-
-func IapTunnelInstanceIamUpdaterProducer(d TerraformResourceData, config *Config) (ResourceIamUpdater, error) {
- values := make(map[string]string)
-
- project, _ := getProject(d, config)
- if project != "" {
- if err := d.Set("project", project); err != nil {
- return nil, iam_iap_tunnel_instance_fmt.Errorf("Error setting project: %s", err)
- }
- }
- values["project"] = project
- zone, _ := getZone(d, config)
- if zone != "" {
- if err := d.Set("zone", zone); err != nil {
- return nil, iam_iap_tunnel_instance_fmt.Errorf("Error setting zone: %s", err)
- }
- }
- values["zone"] = zone
- if v, ok := d.GetOk("instance"); ok {
- values["instance"] = v.(string)
- }
-
- m, err := getImportIdQualifiers([]string{"projects/(?P[^/]+)/iap_tunnel/zones/(?P[^/]+)/instances/(?P[^/]+)", "projects/(?P[^/]+)/zones/(?P[^/]+)/instances/(?P