From 882cdc361da22676a89af4cd7b24b544b226b6ec Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 15:13:06 +0200 Subject: [PATCH 01/17] Remove the need for cmd/pulumi-gen-pulumiservice We don't need to maintain our own gen code, we can use the pulumi binary for that. This makes it important that we use the right version of the pulumi binary, so we use the Makefile to ensure the version of pulumi used matches the version of pulumi we depend on in `provider/go.mod`. We use a similar pattern in other native providers. --- Makefile | 61 +- provider/cmd/pulumi-gen-pulumiservice/main.go | 206 -- provider/go.mod | 94 - provider/go.sum | 2309 ----------------- 4 files changed, 43 insertions(+), 2627 deletions(-) delete mode 100644 provider/cmd/pulumi-gen-pulumiservice/main.go diff --git a/Makefile b/Makefile index 99464da4..067782a9 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,6 @@ NODE_MODULE_NAME := @pulumi/pulumi-service NUGET_PKG_NAME := Pulumi.PulumiService PROVIDER := pulumi-resource-${PACK} -CODEGEN := pulumi-gen-${PACK} VERSION ?= $(shell pulumictl get version) PROVIDER_PATH := provider VERSION_PATH := ${PROVIDER_PATH}/pkg/version.Version @@ -18,13 +17,21 @@ GOPATH := $(shell go env GOPATH) WORKING_DIR := $(shell pwd) TESTPARALLELISM := 4 +# The pulumi binary to use during generation +PULUMI := .pulumi/bin/pulumi + +export PULUMI_IGNORE_AMBIENT_PLUGINS = true + ensure:: cd provider && go mod tidy cd sdk && go mod tidy cd examples && go mod tidy gen:: - (cd provider && go build -o $(WORKING_DIR)/bin/${CODEGEN} -ldflags "-X ${PROJECT}/${VERSION_PATH}=${VERSION}" ${PROJECT}/${PROVIDER_PATH}/cmd/$(CODEGEN)) + +build_sdks: dotnet_sdk go_sdk nodejs_sdk python_sdk java_sdk + +gen_sdk_prerequisites: $(PULUMI) provider:: (cd provider && VERSION=${VERSION} go generate cmd/${PROVIDER}/main.go) @@ -36,32 +43,32 @@ provider_debug:: test_provider:: cd provider/pkg && go test -short -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM} ./... -dotnet_sdk:: DOTNET_VERSION := $(shell pulumictl get version --language dotnet) -dotnet_sdk:: +dotnet_sdk: DOTNET_VERSION := $(shell pulumictl get version --language dotnet) +dotnet_sdk: gen_sdk_prerequisites rm -rf sdk/dotnet - $(WORKING_DIR)/bin/$(CODEGEN) -version=${DOTNET_VERSION} dotnet $(SCHEMA_FILE) $(CURDIR) + $(PULUMI) package gen-sdk $(SCHEMA_FILE) --language dotnet cd ${PACKDIR}/dotnet/&& \ echo "${DOTNET_VERSION}" >version.txt && \ dotnet build /p:Version=${DOTNET_VERSION} -go_sdk:: +go_sdk: gen_sdk_prerequisites rm -rf sdk/go - $(WORKING_DIR)/bin/$(CODEGEN) -version=${VERSION} go $(SCHEMA_FILE) $(CURDIR) + $(PULUMI) package gen-sdk $(SCHEMA_FILE) --language go -nodejs_sdk:: VERSION := $(shell pulumictl get version --language javascript) -nodejs_sdk:: +nodejs_sdk: VERSION := $(shell pulumictl get version --language javascript) +nodejs_sdk: gen_sdk_prerequisites rm -rf sdk/nodejs - $(WORKING_DIR)/bin/$(CODEGEN) -version=${VERSION} nodejs $(SCHEMA_FILE) $(CURDIR) + $(PULUMI) package gen-sdk $(SCHEMA_FILE) --language nodejs cd ${PACKDIR}/nodejs/ && \ yarn install && \ yarn run tsc && \ cp ../../README.md ../../LICENSE package.json yarn.lock ./bin/ && \ sed -i.bak -e 's/\$${VERSION}/$(VERSION)/g' ./bin/package.json -python_sdk:: PYPI_VERSION := $(shell pulumictl get version --language python) -python_sdk:: +python_sdk: PYPI_VERSION := $(shell pulumictl get version --language python) +python_sdk: gen_sdk_prerequisites rm -rf sdk/python - $(WORKING_DIR)/bin/$(CODEGEN) -version=${VERSION} python $(SCHEMA_FILE) $(CURDIR) + $(PULUMI) package gen-sdk $(SCHEMA_FILE) --language python cp README.md ${PACKDIR}/python/ cd ${PACKDIR}/python/ && \ python3 setup.py clean --all 2>/dev/null && \ @@ -70,12 +77,12 @@ python_sdk:: rm ./bin/setup.py.bak && \ cd ./bin && python3 setup.py build sdist -java_sdk:: RESOURCE_FOLDER := src/main/resources/com/pulumi/pulumiservice -java_sdk:: +java_sdk: RESOURCE_FOLDER := src/main/resources/com/pulumi/pulumiservice +java_sdk: gen_sdk_prerequisites rm -rf sdk/java/{.gradle,build,src} - $(WORKING_DIR)/bin/$(CODEGEN) -version=${VERSION} java $(SCHEMA_FILE) $(CURDIR) + $(PULUMI) package gen-sdk $(SCHEMA_FILE) --language java cd sdk/java && \ - mkdir -p $(RESOURCE_FOLDER) && \ + mkdir -p $(RESOURCE_FOLDER) && \ echo "$(VERSION)" > $(RESOURCE_FOLDER)/version.txt && \ echo '{"resource": true,"name": "pulumiservice","version": "$(VERSION)"}' > $(RESOURCE_FOLDER)/plugin.json && \ PULUMI_JAVA_SDK_VERSION=0.10.0 ./gradlew --console=plain build && \ @@ -96,7 +103,7 @@ lint:: install:: install_nodejs_sdk install_dotnet_sdk cp $(WORKING_DIR)/bin/${PROVIDER} ${GOPATH}/bin -GO_TEST := go test -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM} +GO_TEST := go test -v -count=1 -cover -timeout 2h -parallel ${TESTPARALLELISM} install_dotnet_sdk:: rm -rf $(WORKING_DIR)/nuget/$(NUGET_PKG_NAME).*.nupkg @@ -115,3 +122,21 @@ install_nodejs_sdk:: install_java_sdk:: cd sdk/java && ./gradlew publishToMavenLocal + + +# Keep the version of the pulumi binary used for code generation in sync with the version +# of the dependency used by github.com/pulumi/pulumi-pulumiservice/provider + +$(PULUMI): HOME := $(WORKING_DIR) +$(PULUMI): provider/go.mod + @ PULUMI_VERSION="$$(cd provider && go list -m github.com/pulumi/pulumi/pkg/v3 | awk '{print $$2}')"; \ + if [ -x $(PULUMI) ]; then \ + CURRENT_VERSION="$$($(PULUMI) version)"; \ + if [ "$${CURRENT_VERSION}" != "$${PULUMI_VERSION}" ]; then \ + echo "Upgrading $(PULUMI) from $${CURRENT_VERSION} to $${PULUMI_VERSION}"; \ + rm $(PULUMI); \ + fi; \ + fi; \ + if ! [ -x $(PULUMI) ]; then \ + curl -fsSL https://get.pulumi.com | sh -s -- --version "$${PULUMI_VERSION#v}"; \ + fi diff --git a/provider/cmd/pulumi-gen-pulumiservice/main.go b/provider/cmd/pulumi-gen-pulumiservice/main.go deleted file mode 100644 index 4af39d2b..00000000 --- a/provider/cmd/pulumi-gen-pulumiservice/main.go +++ /dev/null @@ -1,206 +0,0 @@ -// Copyright 2016-2020, Pulumi Corporation. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package main - -import ( - "encoding/json" - "flag" - "fmt" - "io/ioutil" - "os" - "path/filepath" - - javagen "github.com/pulumi/pulumi-java/pkg/codegen/java" - providerVersion "github.com/pulumi/pulumi-pulumiservice/provider/pkg/version" - dotnetgen "github.com/pulumi/pulumi/pkg/v3/codegen/dotnet" - gogen "github.com/pulumi/pulumi/pkg/v3/codegen/go" - nodejsgen "github.com/pulumi/pulumi/pkg/v3/codegen/nodejs" - pythongen "github.com/pulumi/pulumi/pkg/v3/codegen/python" - "github.com/pulumi/pulumi/pkg/v3/codegen/schema" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" -) - -// TemplateDir is the path to the base directory for code generator templates. -var TemplateDir string - -// BaseDir is the path to the base pulumi-kubernetes directory. -var BaseDir string - -// Language is the SDK language. -type Language string - -const ( - DotNet Language = "dotnet" - Go Language = "go" - NodeJS Language = "nodejs" - Python Language = "python" - Java Language = "java" -) - -func main() { - flag.Usage = func() { - const usageFormat = "Usage: %s " - _, err := fmt.Fprintf(flag.CommandLine.Output(), usageFormat, os.Args[0]) - contract.IgnoreError(err) - flag.PrintDefaults() - } - - var version string - flag.StringVar(&version, "version", providerVersion.Version, "the provider version to record in the generated code") - - flag.Parse() - args := flag.Args() - if len(args) < 3 { - flag.Usage() - return - } - - language, inputFile := Language(args[0]), args[1] - - BaseDir = args[2] - TemplateDir = filepath.Join(BaseDir, "provider", "pkg", "gen") - outdir := filepath.Join(BaseDir, "sdk", string(language)) - - switch language { - case NodeJS: - templateDir := filepath.Join(TemplateDir, "nodejs-templates") - writeNodeJSClient(readSchema(inputFile, version), outdir, templateDir) - case Python: - templateDir := filepath.Join(TemplateDir, "python-templates") - writePythonClient(readSchema(inputFile, version), outdir, templateDir) - case DotNet: - templateDir := filepath.Join(TemplateDir, "dotnet-templates") - writeDotnetClient(readSchema(inputFile, version), outdir, templateDir) - case Go: - templateDir := filepath.Join(TemplateDir, "_go-templates") - writeGoClient(readSchema(inputFile, version), outdir, templateDir) - case Java: - writeJavaClient(readSchema(inputFile, version), outdir) - default: - panic(fmt.Sprintf("Unrecognized language '%s'", language)) - } -} - -func readSchema(schemaPath string, version string) *schema.Package { - // Read in, decode, and import the schema. - schemaBytes, err := ioutil.ReadFile(schemaPath) - if err != nil { - panic(err) - } - - var pkgSpec schema.PackageSpec - if err = json.Unmarshal(schemaBytes, &pkgSpec); err != nil { - panic(err) - } - pkgSpec.Version = version - - pkg, err := schema.ImportSpec(pkgSpec, nil) - if err != nil { - panic(err) - } - return pkg -} - -func writeNodeJSClient(pkg *schema.Package, outdir, templateDir string) { - _, err := nodejsgen.LanguageResources(pkg) - if err != nil { - panic(err) - } - - overlays := map[string][]byte{} - files, err := nodejsgen.GeneratePackage("pulumigen", pkg, overlays, nil) - if err != nil { - panic(err) - } - - mustWriteFiles(outdir, files) -} - -func writePythonClient(pkg *schema.Package, outdir string, templateDir string) { - _, err := pythongen.LanguageResources("pulumigen", pkg) - if err != nil { - panic(err) - } - - overlays := map[string][]byte{} - - files, err := pythongen.GeneratePackage("pulumigen", pkg, overlays) - if err != nil { - panic(err) - } - - mustWriteFiles(outdir, files) -} - -func writeDotnetClient(pkg *schema.Package, outdir, templateDir string) { - _, err := dotnetgen.LanguageResources("pulumigen", pkg) - if err != nil { - panic(err) - } - - overlays := map[string][]byte{} - - files, err := dotnetgen.GeneratePackage("pulumigen", pkg, overlays) - if err != nil { - panic(err) - } - - for filename, contents := range files { - path := filepath.Join(outdir, filename) - - if err = os.MkdirAll(filepath.Dir(path), 0755); err != nil { - panic(err) - } - err := ioutil.WriteFile(path, contents, 0644) - if err != nil { - panic(err) - } - } -} - -func writeGoClient(pkg *schema.Package, outdir string, templateDir string) { - files, err := gogen.GeneratePackage("pulumigen", pkg) - if err != nil { - panic(err) - } - - mustWriteFiles(outdir, files) -} - -func writeJavaClient(pkg *schema.Package, outdir string) { - files, err := javagen.GeneratePackage("pulumi-java-gen", pkg, nil) - if err != nil { - panic(err) - } - mustWriteFiles(outdir, files) -} - -func mustWriteFiles(rootDir string, files map[string][]byte) { - for filename, contents := range files { - mustWriteFile(rootDir, filename, contents) - } -} - -func mustWriteFile(rootDir, filename string, contents []byte) { - outPath := filepath.Join(rootDir, filename) - - if err := os.MkdirAll(filepath.Dir(outPath), 0755); err != nil { - panic(err) - } - err := ioutil.WriteFile(outPath, contents, 0644) - if err != nil { - panic(err) - } -} diff --git a/provider/go.mod b/provider/go.mod index f8a1ab89..7f3384ad 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -3,7 +3,6 @@ module github.com/pulumi/pulumi-pulumiservice/provider go 1.21.0 require ( - github.com/pulumi/pulumi-java/pkg v0.10.0 github.com/pulumi/pulumi/pkg/v3 v3.112.0 github.com/pulumi/pulumi/sdk/v3 v3.112.0 github.com/stretchr/testify v1.9.0 @@ -13,48 +12,15 @@ require ( ) require ( - cloud.google.com/go v0.110.10 // 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/kms v1.15.5 // indirect - cloud.google.com/go/logging v1.8.1 // indirect - cloud.google.com/go/longrunning v0.5.4 // indirect - cloud.google.com/go/storage v1.35.1 // indirect dario.cat/mergo v1.0.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 // indirect - github.com/BurntSushi/toml v1.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/ProtonMail/go-crypto v1.0.0 // indirect github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da // indirect github.com/agext/levenshtein v1.2.3 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect - github.com/armon/go-metrics v0.4.0 // indirect - github.com/armon/go-radix v1.0.0 // indirect github.com/atotto/clipboard v0.1.4 // indirect - github.com/aws/aws-sdk-go v1.49.0 // indirect - github.com/aws/aws-sdk-go-v2 v1.24.0 // indirect - github.com/aws/aws-sdk-go-v2/config v1.26.1 // indirect - github.com/aws/aws-sdk-go-v2/credentials v1.16.12 // indirect - github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 // indirect - github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 // indirect - github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 // indirect - github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 // indirect - github.com/aws/aws-sdk-go-v2/service/kms v1.27.5 // indirect - github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 // indirect - github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 // indirect - github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 // indirect - github.com/aws/smithy-go v1.19.0 // indirect github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/blang/semver v3.5.1+incompatible // indirect - github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/charmbracelet/bubbles v0.16.1 // indirect github.com/charmbracelet/bubbletea v0.24.2 // indirect github.com/charmbracelet/lipgloss v0.7.1 // indirect @@ -63,84 +29,40 @@ require ( github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 // indirect github.com/cyphar/filepath-securejoin v0.2.4 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/deckarep/golang-set/v2 v2.5.0 // indirect github.com/djherbis/times v1.5.0 // indirect github.com/edsrzf/mmap-go v1.1.0 // indirect github.com/emirpasic/gods v1.18.1 // indirect - github.com/fatih/color v1.15.0 // indirect - github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 // indirect github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect github.com/go-git/go-billy/v5 v5.5.0 // indirect github.com/go-git/go-git/v5 v5.12.0 // indirect - github.com/gofrs/uuid v4.2.0+incompatible // indirect github.com/gogo/protobuf v1.3.2 // indirect - github.com/golang-jwt/jwt/v5 v5.1.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/golang/snappy v0.0.4 // indirect - github.com/google/go-querystring v1.1.0 // indirect - github.com/google/s2a-go v0.1.7 // indirect github.com/google/uuid v1.4.0 // indirect - github.com/google/wire v0.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.0 // indirect github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect - github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.2.2 // indirect - github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.4.6 // indirect - github.com/hashicorp/go-retryablehttp v0.7.1 // indirect - github.com/hashicorp/go-rootcerts v1.0.2 // indirect - github.com/hashicorp/go-secure-stdlib/mlock v0.1.2 // indirect - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6 // indirect - github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect - github.com/hashicorp/go-sockaddr v1.0.2 // indirect - github.com/hashicorp/go-uuid v1.0.3 // indirect - github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/hashicorp/hcl v1.0.0 // indirect github.com/hashicorp/hcl/v2 v2.17.0 // indirect - github.com/hashicorp/vault/api v1.8.2 // indirect - github.com/hashicorp/vault/sdk v0.6.1 // indirect - github.com/hashicorp/yamux v0.1.1 // indirect - github.com/iancoleman/strcase v0.2.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 // indirect - github.com/jmespath/go-jmespath v0.4.0 // indirect - github.com/json-iterator/go v1.1.12 // indirect github.com/kevinburke/ssh_config v1.2.0 // indirect - github.com/kylelemons/godebug v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect - github.com/mattn/go-colorable v0.1.13 // indirect github.com/mattn/go-isatty v0.0.19 // indirect github.com/mattn/go-localereader v0.0.1 // indirect github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-ps v1.0.0 // indirect - github.com/mitchellh/go-testing-interface v1.14.1 // indirect github.com/mitchellh/go-wordwrap v1.0.1 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect - github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect - github.com/modern-go/reflect2 v1.0.2 // indirect github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 // indirect github.com/muesli/cancelreader v0.2.2 // indirect github.com/muesli/reflow v0.3.0 // indirect github.com/muesli/termenv v0.15.2 // indirect github.com/natefinch/atomic v1.0.1 // indirect - github.com/oklog/run v1.1.0 // indirect github.com/opentracing/basictracer-go v1.1.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pgavlin/fx v0.1.6 // indirect github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 // indirect - github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pjbgf/sha1cd v0.3.0 // indirect - github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pkg/term v1.1.0 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -148,14 +70,12 @@ require ( github.com/pulumi/esc v0.6.2 // indirect github.com/rivo/uniseg v0.4.4 // indirect github.com/rogpeppe/go-internal v1.11.0 // indirect - github.com/ryanuber/go-glob v1.0.0 // indirect github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 // indirect github.com/segmentio/asm v1.1.3 // indirect github.com/segmentio/encoding v0.3.5 // indirect github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 // indirect github.com/skeema/knownhosts v1.2.2 // indirect - github.com/spf13/afero v1.9.5 // indirect github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/texttheater/golang-levenshtein v1.0.1 // indirect @@ -163,31 +83,17 @@ require ( github.com/uber/jaeger-client-go v2.30.0+incompatible // indirect github.com/uber/jaeger-lib v2.4.1+incompatible // 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/zclconf/go-cty v1.13.2 // indirect - go.opencensus.io v0.24.0 // indirect go.uber.org/atomic v1.9.0 // indirect - gocloud.dev v0.36.0 // indirect - gocloud.dev/secrets/hashivault v0.27.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.22.0 // indirect - golang.org/x/oauth2 v0.14.0 // indirect golang.org/x/sync v0.5.0 // indirect golang.org/x/sys v0.18.0 // indirect golang.org/x/term v0.18.0 // indirect golang.org/x/text v0.14.0 // indirect - golang.org/x/time v0.4.0 // indirect golang.org/x/tools v0.15.0 // indirect - golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect - google.golang.org/api v0.151.0 // indirect - google.golang.org/appengine v1.6.8 // indirect - google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f // indirect - gopkg.in/square/go-jose.v2 v2.6.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/frand v1.4.2 // indirect diff --git a/provider/go.sum b/provider/go.sum index 821ee2ed..dc7a16fc 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -1,649 +1,61 @@ -bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8= -bazil.org/fuse v0.0.0-20200407214033-5883e5a4b512/go.mod h1:FbcW6z/2VytnFDhZfumh8Ss8zxHE6qpMP5sHTRe0EaM= -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= -cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= -cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= -cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= -cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= -cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= -cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= -cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= -cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= -cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= -cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= -cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= -cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= -cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= -cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= -cloud.google.com/go v0.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.1/go.mod h1:fs4QogzfH5n2pBXBP9vRiU+eCny7lD2vmFZy79Iuw1U= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= -cloud.google.com/go v0.102.0/go.mod h1:oWcCzKlqJ5zgHQt9YsaeTY9KzIvjyy0ArmiBUgpQ+nc= -cloud.google.com/go v0.102.1/go.mod h1:XZ77E9qnTEnrgEOvr4xzfdX5TRo7fB4T2F4O6+34hIU= -cloud.google.com/go v0.103.0/go.mod h1:vwLx1nqLrzLX/fpwSMOXmFIqBOyHsvHbnAdbGSJ+mKk= -cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= -cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= -cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= -cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= -cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= -cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= -cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= -cloud.google.com/go/compute v1.6.0/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/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= -cloud.google.com/go/iam v0.1.0/go.mod h1:vcUNEa0pEm0qRVpmWepWaFMIAI8/hjB9mO8rNCJtF6c= -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/kms v1.4.0/go.mod h1:fajBHndQ+6ubNw6Ss2sSd+SWvjL26RNo/dr7uxsnnOA= -cloud.google.com/go/kms v1.15.5 h1:pj1sRfut2eRbD9pFRjNnPNg/CzJPuQAzUujMIM1vVeM= -cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= -cloud.google.com/go/logging v1.8.1 h1:26skQWPeYhvIasWKm48+Eq7oUqdcdbwsCVwz5Ys0FvU= -cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= -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/monitoring v1.1.0/go.mod h1:L81pzz7HKn14QCMaCs6NTQkdBnE87TElyanS95vIcl4= -cloud.google.com/go/monitoring v1.5.0/go.mod h1:/o9y8NYX5j91JjD/JvGLYbi86kL11OjyJXq2XziLJu4= -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.24.0/go.mod h1:rWv09Te1SsRpRGPiWOMDKraMQTJyJps4MkUCoMGUgqw= -cloud.google.com/go/secretmanager v1.5.0/go.mod h1:5C9kM+RwSpkURNovKySkNvGQLUaOgyoR5W0RUx2SyHQ= -cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= -cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= -cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= -cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= -cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= -cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= -cloud.google.com/go/storage v1.22.1/go.mod h1:S8N1cAStu7BOeFfE8KAQzmyyLkK8p/vmRq6kuBTW58Y= -cloud.google.com/go/storage v1.23.0/go.mod h1:vOEEDNFnciUMhBeT6hsJIn3ieU5cFRmzeLgDvXzfIXc= -cloud.google.com/go/storage v1.24.0/go.mod h1:3xrJEFMXBsQLgxwThyjuD3aYlroL0TMRec1ypGUQ0KE= -cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB//w= -cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= -cloud.google.com/go/trace v1.0.0/go.mod h1:4iErSByzxkyHWzzlAj63/Gmjz0NH1ASqhJguHpGcr6A= -cloud.google.com/go/trace v1.2.0/go.mod h1:Wc8y/uYyOhPy12KEnXG9XGrvfMz5F5SrYecQlbW1rwM= -code.cloudfoundry.org/clock v0.0.0-20180518195852-02e53af36e6c/go.mod h1:QD9Lzhd/ux6eNQVUDVRJX/RKTigpewimNYBi7ivZKY8= -contrib.go.opencensus.io/exporter/aws v0.0.0-20200617204711-c478e41e60e9/go.mod h1:uu1P0UCM/6RbsMrgPa98ll8ZcHM858i/AD06a9aLRCA= -contrib.go.opencensus.io/exporter/stackdriver v0.13.13/go.mod h1:5pSSGY0Bhuk7waTHuDf4aQ8D2DrhgETRo9fy6k3Xlzc= -contrib.go.opencensus.io/integrations/ocsql v0.1.7/go.mod h1:8DsSdjz3F+APR+0z0WkU1aRorQCFfRxvqjUUPMbF3fE= 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/AdaLogics/go-fuzz-headers v0.0.0-20210715213245-6c3934b029d8/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg= -github.com/Azure/azure-amqp-common-go/v3 v3.2.3/go.mod h1:7rPmbSfszeovxGfc5fSAXE4ehlXQZHpMja2OtxC2Tas= -github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v63.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v65.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v66.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go/sdk/azcore v0.19.0/go.mod h1:h6H6c8enJmmocHUbLiiGY6sx7f9i+X3m1CHdd5c6Rdw= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.0.0/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.1.1/go.mod h1:uGG2W01BaETf0Ozp+QxxKJdMBNRWPdstHG0Fmdwn1/U= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0 h1:fb8kj/Dh4CSwgsOzHeZY4Xh68cFVbzXx+ONXGMY//4w= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.9.0/go.mod h1:uReU2sSxZExRPBAg3qKzmAucSi51+SP1OhohieR821Q= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v0.11.0/go.mod h1:HcM1YX14R7CJcghJGOYCgdezslRSVzqwLf/q+4Y2r/0= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.0.0/go.mod h1:+6sju8gk8FRmSajX3Oz4G5Gm7P+mbqE9FVaXXFYTkCM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0 h1:BMAjVKJM0U/CYF27gA0ZMmXGkOcvfFtD0oHVZ1TIPRI= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.4.0/go.mod h1:1fXstnBMas5kzG+S3q8UoJcmyU6nUeunJcMDHcRYHhs= -github.com/Azure/azure-sdk-for-go/sdk/internal v0.7.0/go.mod h1:yqy467j36fJxcRV2TzfVZ1pCb5vxm4BtZPUdYWe/Xo8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.0.0/go.mod h1:eWRD7oawr1Mu1sLCawqVc0CUiF43ia3qQMxLscsKQ9w= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0 h1:d81/ng9rET2YqdVkVwkb6EXeRrLJIwyGnJcAlAWKwhs= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.5.0/go.mod h1:s4kgfzA0covAXNicZHDMN58jExvcng2mC/DepXiF1EI= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= -github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= -github.com/Azure/azure-sdk-for-go/sdk/messaging/azservicebus v1.0.2/go.mod h1:LH9XQnMr2ZYxQdVdCrzLO9mxeDyrDFa6wbSI3x5zCZk= -github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.4.1/go.mod h1:eZ4g6GUvXiGulfIbbhh1Xr4XwUYaYaWMqzGD/284wCA= -github.com/Azure/go-amqp v0.17.0/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= -github.com/Azure/go-amqp v0.17.5/go.mod h1:9YJ3RhxRT1gquYnzpZO1vcYMMpAdJT+QEg6fwmw9Zlg= -github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210608223527-2377c96fe795/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= -github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= -github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= -github.com/Azure/go-autorest/autorest v0.11.1/go.mod h1:JFgpikqFJ/MleTTxwepExTKnFUKKszPS8UavbQYUMuw= -github.com/Azure/go-autorest/autorest v0.11.18/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= -github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= -github.com/Azure/go-autorest/autorest v0.11.25/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= -github.com/Azure/go-autorest/autorest v0.11.27/go.mod h1:7l8ybrIdUmGqZMTD0sRtAr8NvbHjfofbf8RSP2q7w7U= -github.com/Azure/go-autorest/autorest v0.11.28/go.mod h1:MrkzG3Y3AH668QyF9KRk5neJnGgmhQ6krbhR8Q5eMvA= -github.com/Azure/go-autorest/autorest/adal v0.9.0/go.mod h1:/c022QCutn2P7uY+/oQWWNcK9YU+MH96NgK+jErpbcg= -github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= -github.com/Azure/go-autorest/autorest/adal v0.9.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.20/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= -github.com/Azure/go-autorest/autorest/adal v0.9.21/go.mod h1:zua7mBUaCc5YnSLKYgGJR/w5ePdMDA6H56upLsHzA9U= -github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= -github.com/Azure/go-autorest/autorest/azure/cli v0.4.6/go.mod h1:piCfgPho7BiIDdEQ1+g4VmKyD5y+p/XtSNqE6Hc4QD0= -github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= -github.com/Azure/go-autorest/autorest/mocks v0.4.0/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= -github.com/Azure/go-autorest/autorest/mocks v0.4.2/go.mod h1:Vy7OitM9Kei0i1Oj+LvyAWMXJHeKH1MVlzFugfVrmyU= -github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= -github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= -github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= -github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= -github.com/AzureAD/microsoft-authentication-library-for-go v0.4.0/go.mod h1:Vt9sXTKwMyGcOxSmLDMnGPgqsUg7m8pe215qMLrDXw4= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0 h1:hVeq+yCyUi+MsoO/CU95yqCIcdzra5ovzk8Q2BBpV2M= -github.com/AzureAD/microsoft-authentication-library-for-go v1.2.0/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/BurntSushi/toml v1.2.1 h1:9F2/+DoOYIOksmaJFPw1tGFy1eDnIJXg+UHjuD8lTak= -github.com/BurntSushi/toml v1.2.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ= -github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= -github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= -github.com/GoogleCloudPlatform/cloudsql-proxy v1.31.2/go.mod h1:qR6jVnZTKDCW3j+fC9mOEPHm++1nKDMkqbbkD6KNsfo= github.com/HdrHistogram/hdrhistogram-go v1.1.2 h1:5IcZpTvzydCQeHzK4Ef/D5rrSqwxob0t8PQPMybUNFM= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= -github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= -github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= -github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= -github.com/Microsoft/go-winio v0.4.14/go.mod h1:qXqCSQ3Xa7+6tgxaGTIe4Kpcdsi+P8jBhyzoq1bpyYA= -github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= -github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= -github.com/Microsoft/go-winio v0.5.1/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= 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.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= -github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= -github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= -github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= -github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= -github.com/Microsoft/hcsshim v0.8.20/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.21/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= -github.com/Microsoft/hcsshim v0.8.23/go.mod h1:4zegtUJth7lAvFyc6cH2gGQ5B3OFQim01nnU2M8jKDg= -github.com/Microsoft/hcsshim v0.9.2/go.mod h1:7pLA8lDk46WKDWlVsENo92gC0XFa8rbKfyFRBqxEbCc= -github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= -github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= -github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= -github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= -github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/ProtonMail/go-crypto v1.0.0 h1:LRuvITjQWX+WIfr930YHG2HNfjR1uOfyf5vE0kC2U78= github.com/ProtonMail/go-crypto v1.0.0/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= -github.com/PuerkitoBio/purell v1.0.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0= -github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE= -github.com/Shopify/logrus-bugsnag v0.0.0-20171204204709-577dee27f20d/go.mod h1:HI8ITrYtUY+O+ZhtlqUnD8+KwNPOyugEhfP9fdUIaEQ= -github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo= -github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI= -github.com/VividCortex/gohistogram v1.0.0/go.mod h1:Pf5mBqqDxYaXu3hDrrU+w6nw50o/4+TcAqDqk/vUH7g= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da h1:KjTM2ks9d14ZYCvmHS9iAKVt9AyzRSqNU1qabPih5BY= github.com/aead/chacha20 v0.0.0-20180709150244-8b13a72661da/go.mod h1:eHEWzANqSiWQsof+nXEI9bUVUyV6F53Fp89EuCh2EAA= -github.com/afex/hystrix-go v0.0.0-20180502004556-fa1af6a1f4f5/go.mod h1:SkGFH1ia65gfNATL8TAiHDNxPzPdmEL5uirI2Uyuz6c= github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137/go.mod h1:OMCwj8VM1Kc9e19TLln2VL61YJF0x1XFtfdL4JdbSyE= -github.com/alexflint/go-filemutex v0.0.0-20171022225611-72bdc8eae2ae/go.mod h1:CgnQgUtFrFz9mxFNtED3jI5tLDjKlOM+oUF/sTk6ps0= -github.com/alexflint/go-filemutex v1.1.0/go.mod h1:7P4iRhttt/nUvUOrYIhcpMzv2G6CY9UnI16Z+UJqRyk= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= -github.com/apache/thrift v0.13.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apparentlymart/go-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-metrics v0.3.3/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.3.9/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= -github.com/armon/go-metrics v0.4.0 h1:yCQqn7dwca4ITXb+CbubHmedzaQYHhNhrEXLYUeEe8Q= -github.com/armon/go-metrics v0.4.0/go.mod h1:E6amYzXo6aW1tqzoZGT755KkbgrJsSdpwZ+3JqfkOG4= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= -github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A= -github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= -github.com/asaskevich/govalidator v0.0.0-20200907205600-7a23bdc65eef/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= -github.com/asaskevich/govalidator v0.0.0-20210307081110-f21760c49a8d/go.mod h1:WaHUgvxTVq04UNunO+XhnAqY/wQc+bxr74GqbsZ/Jqw= github.com/atotto/clipboard v0.1.4 h1:EH0zSVneZPSuFR11BlR9YppQTVDbh5+16AmcJi4g1z4= github.com/atotto/clipboard v0.1.4/go.mod h1:ZY9tmq7sm5xIbd9bOK4onWV4S6X0u6GY7Vn0Yu86PYI= -github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU= -github.com/aws/aws-sdk-go v1.15.11/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.15.27/go.mod h1:mFuSZ37Z9YOHbQEwBWztmVzqXrEkub65tZoCYDt7FT0= -github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= -github.com/aws/aws-sdk-go v1.38.35/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= -github.com/aws/aws-sdk-go v1.43.11/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.43.31/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.45/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.44.68/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= -github.com/aws/aws-sdk-go v1.49.0 h1:g9BkW1fo9GqKfwg2+zCD+TW/D36Ux+vtfJ8guF4AYmY= -github.com/aws/aws-sdk-go v1.49.0/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= -github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g= -github.com/aws/aws-sdk-go-v2 v1.16.8/go.mod h1:6CpKuLXg2w7If3ABZCl/qZ6rEgwtjZTn4eAf4RcEyuw= -github.com/aws/aws-sdk-go-v2 v1.24.0 h1:890+mqQ+hTpNuw0gGP6/4akolQkSToDJgHfQE7AwGuk= -github.com/aws/aws-sdk-go-v2 v1.24.0/go.mod h1:LNh45Br1YAkEKaAqvmE1m8FUx6a5b/V0oAKV7of29b4= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.3/go.mod h1:gNsR5CaXKmQSSzrmGxmwmct/r+ZBfbxorAuXYsj/M5Y= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4 h1:OCs21ST2LrepDfD3lwlQiOqIGp6JiEUqG84GzTDoyJs= -github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.5.4/go.mod h1:usURWEKSNNAcAZuzRn/9ZYPT8aZQkR7xcCtunK/LkJo= -github.com/aws/aws-sdk-go-v2/config v1.15.15/go.mod h1:A1Lzyy/o21I5/s2FbyX5AevQfSVXpvvIDCoVFD0BC4E= -github.com/aws/aws-sdk-go-v2/config v1.26.1 h1:z6DqMxclFGL3Zfo+4Q0rLnAZ6yVkzCRxhRMsiRQnD1o= -github.com/aws/aws-sdk-go-v2/config v1.26.1/go.mod h1:ZB+CuKHRbb5v5F0oJtGdhFTelmrxd4iWO1lf0rQwSAg= -github.com/aws/aws-sdk-go-v2/credentials v1.12.10/go.mod h1:g5eIM5XRs/OzIIK81QMBl+dAuDyoLN0VYaLP+tBqEOk= -github.com/aws/aws-sdk-go-v2/credentials v1.16.12 h1:v/WgB8NxprNvr5inKIiVVrXPuuTegM+K8nncFkr1usU= -github.com/aws/aws-sdk-go-v2/credentials v1.16.12/go.mod h1:X21k0FjEJe+/pauud82HYiQbEr9jRKY3kXEIQ4hXeTQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.12.9/go.mod h1:KDCCm4ONIdHtUloDcFvK2+vshZvx4Zmj7UMDfusuz5s= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10 h1:w98BT5w+ao1/r5sUuiH6JkVzjowOKeOJRHERyy1vh58= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.14.10/go.mod h1:K2WGI7vUvkIv1HoNbfBA1bvIZ+9kL3YVmWxeKuLQsiw= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.21/go.mod h1:iIYPrQ2rYfZiB/iADYlhj9HHZ9TTi6PqKQPAqygohbE= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.7 h1:FnLf60PtjXp8ZOzQfhJVsqF0OtYKQZWQfqOLshh8YXg= -github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.15.7/go.mod h1:tDVvl8hyU6E9B8TrnNrZQEVkQlB8hjJwcgpPhgtlnNg= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.15/go.mod h1:pWrr2OoHlT7M/Pd2y4HV3gJyPb3qj5qMmnPkKSNPYK4= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9 h1:v+HbZaCGmOwnTTVS86Fleq0vPzOd7tnJGbFhP0stNLs= -github.com/aws/aws-sdk-go-v2/internal/configsources v1.2.9/go.mod h1:Xjqy+Nyj7VDLBtCMkQYOw1QYfAEZCVLrfI0ezve8wd4= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.9/go.mod h1:08tUpeSGN33QKSO7fwxXczNfiwCpbj+GxK6XKwqWVv0= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9 h1:N94sVhRACtXyVcjXxrwK1SKFIJrA9pOJ5yu2eSHnmls= -github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.5.9/go.mod h1:hqamLz7g1/4EJP+GH5NBhcUMLjW+gKLQabgyz6/7WAU= -github.com/aws/aws-sdk-go-v2/internal/ini v1.3.16/go.mod h1:CYmI+7x03jjJih8kBEEFKRQc40UjUokT0k7GbvrhhTc= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2 h1:GrSw8s0Gs/5zZ0SX+gX4zQjRnRsMJDJ2sLur1gRBhEM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.7.2/go.mod h1:6fQQgfuGmw8Al/3M2IgIllycxV7ZW7WCdVSqfBeUiCY= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.0.6/go.mod h1:O7Oc4peGZDEKlddivslfYFvAbgzvl/GH3J8j3JIGBXc= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9 h1:ugD6qzjYtB7zM5PN/ZIeaAIyefPaD82G8+SJopgvUpw= -github.com/aws/aws-sdk-go-v2/internal/v4a v1.2.9/go.mod h1:YD0aYBWCrPENpHolhKw2XDlTIWae2GKXT1T4o6N6hiM= -github.com/aws/aws-sdk-go-v2/service/iam v1.19.0 h1:9vCynoqC+dgxZKrsjvAniyIopsv3RZFsZ6wkQ+yxtj8= -github.com/aws/aws-sdk-go-v2/service/iam v1.19.0/go.mod h1:OyAuvpFeSVNppcSsp1hFOVQcaTRc1LE24YIR7pMbbAA= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.9.3/go.mod h1:gkb2qADY+OHaGLKNTYxMaQNacfeyQpZ4csDTQMeFmcw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4 h1:/b31bi3YVNlkzkBrm9LfpaKoaYZUxIAj4sHfOTmLfqw= -github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.10.4/go.mod h1:2aGXHFmbInwgP9ZfpmdIfOELL79zhdNYNmReK8qDfdQ= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.1.10/go.mod h1:Qks+dxK3O+Z2deAhNo6cJ8ls1bam3tUGUAcgxQP1c70= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9 h1:/90OR2XbSYfXucBMJ4U14wrjlfleq/0SB6dZDPncgmo= -github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.2.9/go.mod h1:dN/Of9/fNZet7UrQQ6kTDo/VSwKPIq94vjlU16bRARc= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.9/go.mod h1:yQowTpvdZkFVuHrLBXmczat4W+WJKg/PafBZnGBLga0= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9 h1:Nf2sHxjMJR8CSImIVCONRi4g0Su3J+TSTbS7G0pUeMU= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.10.9/go.mod h1:idky4TER38YIjr2cADF1/ugFMKvZV7p//pVeV5LZbF0= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.13.9/go.mod h1:Rc5+wn2k8gFSi3V1Ch4mhxOzjMh+bYSXVFfVaqowQOY= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9 h1:iEAeF6YC3l4FzlJPP9H3Ko1TXpdjdqWffxXjp8SY6uk= -github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.16.9/go.mod h1:kjsXoK23q9Z/tLBrckZLLyvjhZoS+AGrzqzUfEClvMM= -github.com/aws/aws-sdk-go-v2/service/kms v1.18.1/go.mod h1:4PZMUkc9rXHWGVB5J9vKaZy3D7Nai79ORworQ3ASMiM= -github.com/aws/aws-sdk-go-v2/service/kms v1.27.5 h1:7lKTr8zJ2nVaVgyII+7hUayTi7xWedMuANiNVXiD2S8= -github.com/aws/aws-sdk-go-v2/service/kms v1.27.5/go.mod h1:D9FVDkZjkZnnFHymJ3fPVz0zOUlNSd0xcIIVmmrAac8= -github.com/aws/aws-sdk-go-v2/service/s3 v1.27.2/go.mod h1:u+566cosFI+d+motIz3USXEh6sN8Nq4GrNXSg2RXVMo= -github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5 h1:Keso8lIOS+IzI2MkPZyK6G0LYcK3My2LQ+T5bxghEAY= -github.com/aws/aws-sdk-go-v2/service/s3 v1.47.5/go.mod h1:vADO6Jn+Rq4nDtfwNjhgR84qkZwiC6FqCaXdw/kYwjA= -github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.15.14/go.mod h1:xakbH8KMsQQKqzX87uyyzTHshc/0/Df8bsTneTS5pFU= -github.com/aws/aws-sdk-go-v2/service/sns v1.17.10/go.mod h1:uITsRNVMeCB3MkWpXxXw0eDz8pW4TYLzj+eyQtbhSxM= -github.com/aws/aws-sdk-go-v2/service/sqs v1.19.1/go.mod h1:A94o564Gj+Yn+7QO1eLFeI7UVv3riy/YBFOfICVqFvU= -github.com/aws/aws-sdk-go-v2/service/ssm v1.27.6/go.mod h1:fiFzQgj4xNOg4/wqmAiPvzgDMXPD+cUEplX/CYn+0j0= -github.com/aws/aws-sdk-go-v2/service/sso v1.11.13/go.mod h1:d7ptRksDDgvXaUvxyHZ9SYh+iMDymm94JbVcgvSYSzU= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.5 h1:ldSFWz9tEHAwHNmjx2Cvy1MjP5/L9kNoR0skc6wyOOM= -github.com/aws/aws-sdk-go-v2/service/sso v1.18.5/go.mod h1:CaFfXLYL376jgbP7VKC96uFcU8Rlavak0UlAwk1Dlhc= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5 h1:2k9KmFawS63euAkY4/ixVNsYYwrwnd5fIvgEKkfZFNM= -github.com/aws/aws-sdk-go-v2/service/ssooidc v1.21.5/go.mod h1:W+nd4wWDVkSUIox9bacmkBP5NMFQeTJ/xqNabpzSR38= -github.com/aws/aws-sdk-go-v2/service/sts v1.16.10/go.mod h1:cftkHYN6tCDNfkSasAmclSfl4l7cySoay8vz7p/ce0E= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.5 h1:5UYvv8JUvllZsRnfrcMQ+hJ9jNICmcgKPAO1CER25Wg= -github.com/aws/aws-sdk-go-v2/service/sts v1.26.5/go.mod h1:XX5gh4CB7wAs4KhcF46G6C8a2i7eupU19dcAAE+EydU= -github.com/aws/smithy-go v1.12.0/go.mod h1:Tg+OJXh4MB2R/uN61Ko2f6hTZwB/ZYGOtib8J3gBHzA= -github.com/aws/smithy-go v1.19.0 h1:KWFKQV80DpP3vJrrA9sVAHQ5gc2z8i4EzrLhLlWXcBM= -github.com/aws/smithy-go v1.19.0/go.mod h1:NukqUGpCZIILqqiV0NIjeFh24kd/FAa4beRb6nbIUPE= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= -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-20160804104726-4c0e84591b9a/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= -github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= -github.com/bits-and-blooms/bitset v1.2.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= -github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= -github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= -github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= -github.com/bshuster-repo/logrus-logstash-hook v0.4.1/go.mod h1:zsTqEiSzDgAa/8GZR7E1qaXrhYNDKBYy5/dWPTIflbk= -github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= -github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= -github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= -github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= -github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= -github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= -github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= -github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= -github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/cenkalti/backoff/v4 v4.1.3/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/census-instrumentation/opencensus-proto v0.3.0/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/charmbracelet/bubbles v0.16.1 h1:6uzpAAaT9ZqKssntbvZMlksWHruQLNxg49H5WdeuYSY= github.com/charmbracelet/bubbles v0.16.1/go.mod h1:2QCp9LFlEsBQMvIYERr7Ww2H2bA7xen1idUDIzm/+Xc= github.com/charmbracelet/bubbletea v0.24.2 h1:uaQIKx9Ai6Gdh5zpTbGiWpytMU+CfsPp06RaW2cx/SY= github.com/charmbracelet/bubbletea v0.24.2/go.mod h1:XdrNrV4J8GiyshTtx3DNuYkR1FDaJmO3l2nejekbsgg= github.com/charmbracelet/lipgloss v0.7.1 h1:17WMwi7N1b1rVWOjMT+rCh7sQkvDU75B2hbZpc5Kc1E= github.com/charmbracelet/lipgloss v0.7.1/go.mod h1:yG0k3giv8Qj8edTCbbg6AlQ5e8KNWpFujkNawKNhE2c= -github.com/checkpoint-restore/go-criu/v4 v4.1.0/go.mod h1:xUQBLp4RLc5zJtWY++yjOoMoB5lihDt7fai+75m+rGw= -github.com/checkpoint-restore/go-criu/v5 v5.0.0/go.mod h1:cfwC0EG7HMUenopBsUf9d89JlCLQIfgVcNsNN0t6T2M= -github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= github.com/cheggaaa/pb v1.0.29 h1:FckUN5ngEk2LpvuG0fw1GEFx6LtyY2pWI/Z2QgCnEYo= github.com/cheggaaa/pb v1.0.29/go.mod h1:W40334L7FMC5JKWldsTWbdGjLo0RxUKK73K+TuPxX30= -github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= -github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= -github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= -github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= -github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= -github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= -github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= -github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.6.2/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= -github.com/cilium/ebpf v0.7.0/go.mod h1:/oI2+1shJiTGAMgl6/RgJr36Eo1jzrRcAWbcXO2usCA= -github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= -github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= -github.com/clbanning/x2j v0.0.0-20191024224557-825249438eec/go.mod h1:jMjuTZXRI4dUb/I5gc9Hdhagfvm9+RyrPryS/auMzxE= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cloudflare/circl v1.3.7 h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU= github.com/cloudflare/circl v1.3.7/go.mod h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= -github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211001041855-01bcc9b48dfe/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cncf/xds/go v0.0.0-20220314180256-7f1daf1720fc/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= -github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= -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/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI= -github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= -github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= -github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= -github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= -github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= -github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= -github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= -github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= -github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= -github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= -github.com/containerd/cgroups v1.0.3/go.mod h1:/ofk34relqNjSGyqPrmEULrO4Sc8LJhvJmWbUCUKqj8= -github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= -github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= -github.com/containerd/console v1.0.1/go.mod h1:XUsP6YE/mKtz6bxc+I8UiKKTP04qjQL4qcS3XoQ5xkw= -github.com/containerd/console v1.0.2/go.mod h1:ytZPjGgY2oeTkAONYafi2kSj0aYggsf8acV1PGKCbzQ= -github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81 h1:q2hJAaP1k2wIvVRd/hEHD7lacgqrCPS+k8g1MndzfWY= github.com/containerd/console v1.0.4-0.20230313162750-1ae8d489ac81/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= -github.com/containerd/containerd v1.2.10/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0-beta.2.0.20190828155532-0293cbd26c69/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.4.9/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= -github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= -github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= -github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= -github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= -github.com/containerd/containerd v1.5.7/go.mod h1:gyvv6+ugqY25TiXxcZC3L5yOeYgEw0QMhscqVp1AR9c= -github.com/containerd/containerd v1.5.8/go.mod h1:YdFSv5bTFLpG2HIYmfqDpSYYTDX+mc5qtSuYx1YUb/s= -github.com/containerd/containerd v1.6.1/go.mod h1:1nJz5xCZPusx6jJU8Frfct988y0NpumIq9ODB0kLtoE= -github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= -github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= -github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= -github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= -github.com/containerd/continuity v0.2.2/go.mod h1:pWygW9u7LtS1o4N/Tn0FoCFDIXZ7rxcMX7HX1Dmibvk= -github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= -github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= -github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= -github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= -github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= -github.com/containerd/go-cni v1.1.0/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-cni v1.1.3/go.mod h1:Rflh2EJ/++BA2/vY5ao3K6WJRR/bZKsX123aPk+kUtA= -github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= -github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= -github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= -github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= -github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= -github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= -github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= -github.com/containerd/imgcrypt v1.1.3/go.mod h1:/TPA1GIDXMzbj01yd8pIbQiLdQxed5ue1wb8bP7PQu4= -github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= -github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= -github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= -github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20190828172938-92c8520ef9f8/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= -github.com/containerd/ttrpc v0.0.0-20191028202541-4f1b8fe65a5c/go.mod h1:LPm1u0xBw8r8NOKoOdNMeVHSawSsltak+Ihv+etqsE8= -github.com/containerd/ttrpc v1.0.1/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= -github.com/containerd/ttrpc v1.1.0/go.mod h1:XX4ZTnoOId4HklF4edwc4DcqskFZuvXB1Evzy5KFQpQ= -github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= -github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= -github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= -github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= -github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= -github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= -github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= -github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= -github.com/containernetworking/cni v1.0.1/go.mod h1:AKuhXbN5EzmD4yTNtfSsX3tPcmtrBI6QcRV0NiNt15Y= -github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= -github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= -github.com/containernetworking/plugins v1.0.1/go.mod h1:QHCfGpaTwYTbbH+nZXKVTxNBDZcxSOplJT5ico8/FLE= -github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= -github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= -github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/containers/ocicrypt v1.1.2/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= -github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= -github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= -github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= -github.com/coreos/go-iptables v0.6.0/go.mod h1:Qe8Bv2Xik5FyTXwgIbLAnv2sWSBmvWdFETJConOQ//Q= -github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= -github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd v0.0.0-20161114122254-48702e0da86b/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20180511133405-39ca1b05acc7/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= -github.com/coreos/go-systemd/v22 v22.0.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.1.0/go.mod h1:xO0FLkIi5MaZafQlIrOotqXZ90ih+1atmu1JpKERPPk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/coreos/pkg v0.0.0-20160727233714-3ac0863d7acf/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= -github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= -github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= -github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/creack/pty v1.1.11/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= github.com/cyphar/filepath-securejoin v0.2.4 h1:Ugdm7cg7i6ZK6x3xDF1oEu1nfkyfH53EtKeQYTC3kyg= github.com/cyphar/filepath-securejoin v0.2.4/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= -github.com/d2g/dhcp4 v0.0.0-20170904100407-a1d1b6c41b1c/go.mod h1:Ct2BUK8SB0YC1SMSibvLzxjeJLnrYEVLULFNiHY9YfQ= -github.com/d2g/dhcp4client v1.0.0/go.mod h1:j0hNfjhrt2SxUOw55nL0ATM/z4Yt3t2Kd1mW34z5W5s= -github.com/d2g/dhcp4server v0.0.0-20181031114812-7d4a0a7f59a5/go.mod h1:Eo87+Kg/IX2hfWJfwxMzLyuSZyxSoAug2nGa1G2QAi8= -github.com/d2g/hardwareaddr v0.0.0-20190221164911-e7d9fbe030e4/go.mod h1:bMl4RjIciD2oAxI7DmWRx6gbeqrkoLqv3MV0vzNad+I= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/deckarep/golang-set/v2 v2.5.0 h1:hn6cEZtQ0h3J8kFrHR/NrzyOoTnjgW1+FmNJzQ7y/sA= -github.com/deckarep/golang-set/v2 v2.5.0/go.mod h1:VAky9rY/yGXJOLEDv3OMci+7wtDpOF4IN+y82NBOac4= -github.com/denisenkom/go-mssqldb v0.12.2/go.mod h1:lnIw1mZukFRZDJYQ0Pb833QS2IaC3l5HkEfra2LJ+sk= -github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= -github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0= -github.com/devigned/tab v0.1.1/go.mod h1:XG9mPq0dFghrYvoBF3xdRrJzSTX1b7IQrvaL9mzjeJY= -github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= -github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/dgryski/go-sip13 v0.0.0-20200911182023-62edffca9245/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= -github.com/digitalocean/godo v1.78.0/go.mod h1:GBmu8MkjZmNARE7IXRPmkbbnocNN8+uBm0xbEVw2LCs= -github.com/digitalocean/godo v1.81.0/go.mod h1:BPCqvwbjbGqxuUnIKB4EvS/AX7IDnNmt5fwvIkWo+ew= -github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= github.com/djherbis/times v1.5.0 h1:79myA211VwPhFTqUk8xehWrsEO+zcIZj0zT8mXPVARU= github.com/djherbis/times v1.5.0/go.mod h1:5q7FDLvbNg1L/KaBmPcWlVR9NmoKo3+ucqUA3ijQhA0= -github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= -github.com/dnaeon/go-vcr v1.1.0/go.mod h1:M7tiix8f0r6mKKJ3Yq/kqU1OYf3MnfmBWVbPx/yU9ko= -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 v0.0.0-20191017083524-a8ff7f821017/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= -github.com/docker/distribution v0.0.0-20190905152932-14b96e55d84c/go.mod h1:0+TTO4EOBfRPhZXAeF1Vu+W3hHZ8eLp8PgKVZlcvtFY= -github.com/docker/distribution v2.7.1-0.20190205005809-0d3efadf0154+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= -github.com/docker/docker v1.4.2-0.20190924003213-a8608b5b67c7/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.14+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker v20.10.17+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= -github.com/docker/docker-credential-helpers v0.6.3/go.mod h1:WRaJzqw3CTB9bk10avuGsjVBZsD05qeibJ1/TYlvc0Y= -github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-events v0.0.0-20170721190031-9461782956ad/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= -github.com/docker/go-metrics v0.0.0-20180209012529-399ea8c73916/go.mod h1:/u0gXw0Gay3ceNrsHubL3BtdOL2fHf93USgMTe0W5dI= -github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= -github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/docker/libtrust v0.0.0-20150114040149-fa567046d9b1/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE= -github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM= -github.com/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/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs= -github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= -github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= -github.com/edsrzf/mmap-go v1.0.0/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= github.com/edsrzf/mmap-go v1.1.0 h1:6EUwBLQ/Mcr1EYLE4Tn1VdW1A4ckqCQWZBw8Hr0kjpQ= github.com/edsrzf/mmap-go v1.1.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= -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/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= -github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ= -github.com/envoyproxy/go-control-plane v0.6.9/go.mod h1:SBwIajubJHhxtWwsL9s8ss4safvEdbitLhGGK48rN6g= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.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.1/go.mod h1:AY7fTTXNdv/aJ2O5jwpxAPOWUZ7hQAEvzN5Pf27BkQQ= -github.com/envoyproxy/go-control-plane v0.10.2-0.20220325020618-49ff273808a1/go.mod h1:KJwIaB5Mv44NWtYuAOFCVOjcI94vtpEz2JU/D2v6IjE= -github.com/envoyproxy/go-control-plane v0.10.3/go.mod h1:fJJn/j26vwOu972OllsvAgJJM//w9BV6Fxbg2LuVd34= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/envoyproxy/protoc-gen-validate v0.6.7/go.mod h1:dyJXwwfPK2VSqiB9Klm1J6romD608Ba7Hij42vrOBCo= -github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch v4.12.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= -github.com/evanphx/json-patch/v5 v5.5.0/go.mod h1:G79N1coSVB93tBe7j6PhzjmR3/2VvlbKOFpnXhI9Bw4= -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/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= -github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= -github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.2/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/form3tech-oss/jwt-go v3.2.3+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= -github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= -github.com/franela/goblin v0.0.0-20200105215937-c9ffbefa60db/go.mod h1:7dvUGVsVBjqR7JHJk0brhHOZYGmfBYOrK0ZhYMEtBr4= -github.com/franela/goreq v0.0.0-20171204163338-bcd34c9993f8/go.mod h1:ZhphrRTfi2rbfLwlschooIH4+wKKDR4Pdxhh+TRoA20= -github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= -github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= -github.com/frankban/quicktest v1.13.0 h1:yNZif1OkDfNoDfb9zZa9aXIpejNR4F23Wely0c+Qdqk= -github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= -github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= -github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= -github.com/fullsailor/pkcs7 v0.0.0-20190404230743-d7302db945fa/go.mod h1:KnogPXtdwXqoenmZCw6S+25EAm2MkxbG0deNDu4cbSA= -github.com/garyburd/redigo v0.0.0-20150301180006-535138d7bcd7/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY= -github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813 h1:Uc+IZ7gYqAf/rSGFplbWBSHaGolEQlNLgMgSE3ccnIQ= -github.com/gedex/inflector v0.0.0-20170307190818-16278e9db813/go.mod h1:P+oSoE9yhSRvsmYyZsshflcR6ePWYLql6UU1amW13IM= -github.com/getkin/kin-openapi v0.76.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= -github.com/getsentry/raven-go v0.2.0/go.mod h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ= -github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= -github.com/gin-gonic/gin v1.6.3/go.mod h1:75u5sXoLsGZoRN5Sgbi1eraJ4GU3++wFwWzhwvtwp4M= -github.com/gin-gonic/gin v1.7.7/go.mod h1:axIBovoeJpVj8S3BwE0uPMTeReE4+AfFtqpqaZ1qq1U= github.com/gliderlabs/ssh v0.3.7 h1:iV3Bqi942d9huXnzEF2Mt+CY9gLu8DNM4Obd+8bODRE= github.com/gliderlabs/ssh v0.3.7/go.mod h1:zpHEXBstFnQYtGnB8k8kQLol82umzn/2/snG7alWVD8= -github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI= github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic= github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU= @@ -652,637 +64,67 @@ github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399 h1:eMj github.com/go-git/go-git-fixtures/v4 v4.3.2-0.20231010084843-55a94097c399/go.mod h1:1OCfN199q1Jm3HZlxleg+Dw/mwps2Wbk9frAWm+4FII= github.com/go-git/go-git/v5 v5.12.0 h1:7Md+ndsjrzZxbddRDZjF14qK+NN56sy6wkqaVrjZtys= github.com/go-git/go-git/v5 v5.12.0/go.mod h1:FTM9VKtnI2m65hNI/TenDDDnUf2Q9FHnXYjuz9i5OEY= -github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= -github.com/go-ini/ini v1.25.4/go.mod h1:ByCAeIL28uOIIG0E3PJtZPDL8WnHpFKFOtgjp+3Ies8= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.10.0/go.mod h1:xUsJbQ/Fp4kEt7AFgCuvyX4a71u8h9jB8tj/ORgOZ7o= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-kit/log v0.2.1/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= -github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= -github.com/go-logr/logr v0.1.0/go.mod h1:ixOQHD9gLJUVQQ2ZOR7zLEifBX6tGkNJF4QyIY7sIas= -github.com/go-logr/logr v0.2.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v0.4.0/go.mod h1:z6/tIYblkpsD+a4lm/fGIIU9mZ+XfAiaFtq7xTgseGU= -github.com/go-logr/logr v1.2.0/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.1/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -github.com/go-logr/stdr v1.2.0/go.mod h1:YkVgnZu1ZjjL7xTxrfm/LLZBfkhTqSR1ydtm6jTKKwI= -github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= -github.com/go-openapi/analysis v0.21.2/go.mod h1:HZwRk4RRisyG8vx2Oe6aqeSQcoxRp47Xkp3+K6q+LdY= -github.com/go-openapi/errors v0.19.8/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.19.9/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/errors v0.20.2/go.mod h1:cM//ZKUKyO06HSwqAelJ5NsEMMcpa6VpXe8DOa1Mi1M= -github.com/go-openapi/jsonpointer v0.0.0-20160704185906-46af16f9f7b1/go.mod h1:+35s3my2LFTysnkMfxsJBAMHj/DoqoB9knIWoYG/Vk0= -github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= -github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= -github.com/go-openapi/jsonreference v0.0.0-20160704190145-13c6e3589ad9/go.mod h1:W3Z9FmVs9qj+KR4zFKmDPGiLdk1D9Rlm7cyMvf57TTg= -github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= -github.com/go-openapi/jsonreference v0.19.3/go.mod h1:rjx6GuL8TTa9VaixXglHmQmIL98+wF9xc8zWvFonSJ8= -github.com/go-openapi/jsonreference v0.19.5/go.mod h1:RdybgQwPxbL4UEjuAruzK1x3nE69AqPYEJeo/TWfEeg= -github.com/go-openapi/jsonreference v0.19.6/go.mod h1:diGHMEHg2IqXZGKxqyvWdfWU/aim5Dprw5bqpKkTvns= -github.com/go-openapi/loads v0.21.1/go.mod h1:/DtAMXXneXFjbQMGEtbamCZb+4x7eGwkvZCvBmwUG+g= -github.com/go-openapi/runtime v0.23.1/go.mod h1:AKurw9fNre+h3ELZfk6ILsfvPN+bvvlaU/M9q/r9hpk= -github.com/go-openapi/spec v0.0.0-20160808142527-6aced65f8501/go.mod h1:J8+jY1nAiCcj+friV/PDoE1/3eeccG9LYBs0tYvLOWc= -github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= -github.com/go-openapi/spec v0.20.4/go.mod h1:faYFR1CvsJZ0mNsmsphTMSoRrNV3TEDoAM7FOEWeq8I= -github.com/go-openapi/strfmt v0.21.0/go.mod h1:ZRQ409bWMj+SOgXofQAGTIo2Ebu72Gs+WaRADcS5iNg= -github.com/go-openapi/strfmt v0.21.1/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/strfmt v0.21.2/go.mod h1:I/XVKeLc5+MM5oPNN7P6urMOpuLXEcNrCX/rPGuWb0k= -github.com/go-openapi/swag v0.0.0-20160704191624-1d0bd113de87/go.mod h1:DXUve3Dpr1UfpPtxFw+EFuQ41HhCWZfha5jSVRG7C7I= -github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/swag v0.19.14/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.19.15/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/swag v0.21.1/go.mod h1:QYRuS/SOXUCsnplDa677K7+DxSOj6IPNl/eQntq43wQ= -github.com/go-openapi/validate v0.21.0/go.mod h1:rjnrwK57VJ7A8xqfpAOEKRH8yQSGUriMu5/zuPSQ1hg= -github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= -github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= -github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= -github.com/go-playground/validator/v10 v10.2.0/go.mod h1:uOYAAleCW8F/7oMFd6aG0GOhaH6EGOAJShg8Id5JGkI= -github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= -github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= -github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= -github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= -github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -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-zookeeper/zk v1.0.2/go.mod h1:nOB03cncLtlp4t+UAkGSV+9beXP/akpekBwL+UX1Qcw= -github.com/gobuffalo/attrs v0.0.0-20190224210810-a9411de4debd/go.mod h1:4duuawTqi2wkkpB4ePgWMaai6/Kc6WEz83bhFwpHzj0= -github.com/gobuffalo/depgen v0.0.0-20190329151759-d478694a28d3/go.mod h1:3STtPUQYuzV0gBVOY3vy6CfMm/ljR4pABfrTeHNLHUY= -github.com/gobuffalo/depgen v0.1.0/go.mod h1:+ifsuy7fhi15RWncXQQKjWS9JPkdah5sZvtHc2RXGlg= -github.com/gobuffalo/envy v1.6.15/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/envy v1.7.0/go.mod h1:n7DRkBerg/aorDM8kbduw5dN3oXGswK5liaSCx4T5NI= -github.com/gobuffalo/flect v0.1.0/go.mod h1:d2ehjJqGOH/Kjqcoz+F7jHTBbmDb38yXA598Hb50EGs= -github.com/gobuffalo/flect v0.1.1/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/flect v0.1.3/go.mod h1:8JCgGVbRjJhVgD6399mQr4fx5rRfGKVzFjbj6RE/9UI= -github.com/gobuffalo/genny v0.0.0-20190329151137-27723ad26ef9/go.mod h1:rWs4Z12d1Zbf19rlsn0nurr75KqhYp52EAGGxTbBhNk= -github.com/gobuffalo/genny v0.0.0-20190403191548-3ca520ef0d9e/go.mod h1:80lIj3kVJWwOrXWWMRzzdhW3DsrdjILVil/SFKBzF28= -github.com/gobuffalo/genny v0.1.0/go.mod h1:XidbUqzak3lHdS//TPu2OgiFB+51Ur5f7CSnXZ/JDvo= -github.com/gobuffalo/genny v0.1.1/go.mod h1:5TExbEyY48pfunL4QSXxlDOmdsD44RRq4mVZ0Ex28Xk= -github.com/gobuffalo/gitgen v0.0.0-20190315122116-cc086187d211/go.mod h1:vEHJk/E9DmhejeLeNt7UVvlSGv3ziL+djtTr3yyzcOw= -github.com/gobuffalo/gogen v0.0.0-20190315121717-8f38393713f5/go.mod h1:V9QVDIxsgKNZs6L2IYiGR8datgMhB577vzTDqypH360= -github.com/gobuffalo/gogen v0.1.0/go.mod h1:8NTelM5qd8RZ15VjQTFkAW6qOMx5wBbW4dSCS3BY8gg= -github.com/gobuffalo/gogen v0.1.1/go.mod h1:y8iBtmHmGc4qa3urIyo1shvOD8JftTtfcKi+71xfDNE= -github.com/gobuffalo/logger v0.0.0-20190315122211-86e12af44bc2/go.mod h1:QdxcLw541hSGtBnhUc4gaNIXRjiDppFGaDqzbrBd3v8= -github.com/gobuffalo/mapi v1.0.1/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/mapi v1.0.2/go.mod h1:4VAGh89y6rVOvm5A8fKFxYG+wIW6LO1FMTG9hnKStFc= -github.com/gobuffalo/packd v0.0.0-20190315124812-a385830c7fc0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packd v0.1.0/go.mod h1:M2Juc+hhDXf/PnmBANFCqx4DM3wRbgDvnVWeG2RIxq4= -github.com/gobuffalo/packr/v2 v2.0.9/go.mod h1:emmyGweYTm6Kdper+iywB6YK5YzuKchGtJQZ0Odn4pQ= -github.com/gobuffalo/packr/v2 v2.2.0/go.mod h1:CaAwI0GPIAv+5wKLtv8Afwl+Cm78K/I/VCm/3ptBN+0= -github.com/gobuffalo/syncx v0.0.0-20190224160051-33c29581e754/go.mod h1:HhnNqWY95UYwwW3uSASeV7vtgYkT2t16hJgV3AEPUpw= -github.com/gobwas/httphead v0.0.0-20180130184737-2c6c146eadee/go.mod h1:L0fX3K22YWvt/FAX9NnzrNzcI4wNYi9Yku4O0LKYflo= -github.com/gobwas/pool v0.2.0/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= -github.com/gobwas/ws v1.0.2/go.mod h1:szmBTxLgaFppYjEmNtny/v3w89xOydFnnZMcgRRu/EM= -github.com/goccy/go-yaml v1.9.5/go.mod h1:U/jl18uSupI5rdI2jmuCswEA2htH9eXfferR3KfscvA= -github.com/godbus/dbus v0.0.0-20151105175453-c7fdd8b5cd55/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20180201030542-885f9cc04c9c/go.mod h1:/YcGZj5zSblfDWMMoOzV4fas9FZnQYTkDnsGvmh2Grw= -github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4= -github.com/godbus/dbus/v5 v5.0.3/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/godbus/dbus/v5 v5.0.6/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gofrs/uuid v3.3.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= github.com/gofrs/uuid v4.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= -github.com/gogo/googleapis v1.1.0/go.mod h1:gf4bu3Q80BeJ6H1S1vYPm8/ELATdvryBaNFGgqEef3s= -github.com/gogo/googleapis v1.2.0/go.mod h1:Njal3psf3qN6dwBtQfUmBZh2ybovJ0tlu3o/AC7HYjU= -github.com/gogo/googleapis v1.4.0/go.mod h1:5YRNX2z1oM5gXdAkurHa942MDgEJyk02w4OecKY87+c= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= -github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= -github.com/gogo/protobuf v1.3.0/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang-jwt/jwt v3.2.1+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -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.4.2/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0= -github.com/golang-jwt/jwt/v5 v5.1.0 h1:UGKbA/IPjtS6zLcdB7i5TyACMgSbOTiR8qzXgw8HWQU= -github.com/golang-jwt/jwt/v5 v5.1.0/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= -github.com/golang-sql/civil v0.0.0-20190719163853-cb61b32ac6fe/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= -github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/glog v1.0.0/go.mod h1:EWib/APOK0SL3dFbYqvxE3UYd8E6s1ouQ7iEp/0LWV4= github.com/golang/glog v1.1.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.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.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= -github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/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/gnostic v0.5.7-v3refs/go.mod h1:73MKFl6jIHelAJNaBGFzt3SPtZULs9dYrGFt8OiIsHQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -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.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-containerregistry v0.5.1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= -github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -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/go-replayers/grpcreplay v1.1.0 h1:S5+I3zYyZ+GQz68OfbURDdt/+cSMqCK1wrvNx7WBzTE= -github.com/google/go-replayers/grpcreplay v1.1.0/go.mod h1:qzAvJ8/wi57zq7gWqaE6AwLM6miiXUQwP1S+I9icmhk= -github.com/google/go-replayers/httpreplay v1.1.1/go.mod h1:gN9GeLIs7l6NUoVaSSnv2RiqK1NiwAmD0MrKeC9IIks= -github.com/google/go-replayers/httpreplay v1.2.0 h1:VM1wEyyjaoU53BwrOnaf9VhAyQQEEioJvFYxYcLRKzk= -github.com/google/go-replayers/httpreplay v1.2.0/go.mod h1:WahEFFZZ7a1P4VM1qEeHy+tME4bwyqPcwWbNlUI1Mcg= -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/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible h1:xmapqc1AyLoB+ddYT6r04bD9lIjlOqGaREovi0SzFaE= -github.com/google/martian v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= -github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= -github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/martian/v3 v3.3.2 h1:IqNFLAmvJOgVlpdEBiQbDc2EwKW77amAycfTuWKdfvw= -github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= -github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= -github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= -github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-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-20220318212150-b2ab0324ddda/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20220608213341-c488b8fa1db3/go.mod h1:gSuNB+gJaOiQKLEZ+q+PK9Mq3SOzhRcw2GsGS/FhYDk= -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/subcommands v1.0.1/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= -github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.2.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/wire v0.5.0 h1:I7ELFeVBr3yfPIcc8+MWvrjk+3VjbcSzoXm3JVa+jD8= -github.com/google/wire v0.5.0/go.mod h1:ngWDr9Qvq3yZA10YrxfyGELY/AFWGVpy9c1LTRi1EoU= -github.com/googleapis/enterprise-certificate-proxy v0.0.0-20220520183353-fd19c99a87aa/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.1.0/go.mod h1:17drOmN3MwGY7t0e+Ei9b45FFGA3fBs3x36SsCg1hq8= -github.com/googleapis/enterprise-certificate-proxy v0.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.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= -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/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= -github.com/gophercloud/gophercloud v0.25.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= -github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= -github.com/gorilla/context v1.1.1/go.mod h1:kBGZzfjB9CEq2AlWe17Uuf7NDRt0dE0s8S51q0aT7Yg= -github.com/gorilla/handlers v0.0.0-20150720190736-60c7bfde3e33/go.mod h1:Qkdc/uu4tH4g6mTK6auzZ766c4CA0Ng8+o/OAirnOIQ= -github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= -github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI= -github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= -github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ= -github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= -github.com/grafana/regexp v0.0.0-20220304095617-2e8d9baf4ac2/go.mod h1:M5qHK+eWfAv8VR/265dIuEpL3fNfeC21tXXp9itM24A= -github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.0.1-0.20190118093823-f849b5445de4/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs= -github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.9.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.10.2/go.mod h1:chrfS3YoLAlKTRE5cFWvCbt8uGAjshktT4PveTUpsFQ= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645 h1:MJG/KsmcqMwFAkh8mTnAwhyKoB+sTAnY4CACC110tbU= github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw= -github.com/hanwen/go-fuse v1.0.0/go.mod h1:unqXarDXqzAk0rt98O2tVndEPIpUgLD9+rwFisZH3Ok= -github.com/hanwen/go-fuse/v2 v2.1.0/go.mod h1:oRyA5eK+pvJyv5otpO/DgccS8y/RvYMaO00GgRLGryc= -github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q= -github.com/hashicorp/consul/api v1.3.0/go.mod h1:MmDNSzIMUjNpY/mQ398R4bk2FnqQLoPndWW5VkKPlCE= -github.com/hashicorp/consul/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= -github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= -github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.3.0/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/cronexpr v1.1.1/go.mod h1:P4wA0KBl9C5q2hABiMO7cp6jcIg96CDh1Efb3g1PWA4= -github.com/hashicorp/errwrap v0.0.0-20141028054710-7554cd9344ce/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.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-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.12.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.14.1/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.2.2 h1:ihRI7YFwcZdiSD7SIenIhHfQH3OuDvWerAUBZbeQS3M= -github.com/hashicorp/go-hclog v1.2.2/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.2.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= -github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-kms-wrapping/entropy v0.1.0/go.mod h1:d1g9WGtAunDNpek8jUIEJnBlbgKS1N2Q61QkHiZyR1g= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v0.0.0-20161216184304-ed905158d874/go.mod h1:JMRHfdO9jKNzS/+BTlxCjKNQHg/jZAft8U7LloJvN7I= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-multierror v1.1.1 h1:H5DkEtf6CXdFp0N0Em5UCwQpXMWke8IA0+lD48awMYo= github.com/hashicorp/go-multierror v1.1.1/go.mod h1:iw975J/qwKPdAO1clOe2L8331t/9/fmwbPZ6JB6eMoM= -github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= -github.com/hashicorp/go-plugin v1.4.4/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= -github.com/hashicorp/go-plugin v1.4.6 h1:MDV3UrKQBM3du3G7MApDGvOsMYy3JQJ4exhSoKBAeVA= -github.com/hashicorp/go-plugin v1.4.6/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= -github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-retryablehttp v0.7.1 h1:sUiuQAnLlbvmExtFQs72iFW/HXeUn8Z1aJLQ4LJJbTQ= -github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= -github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= -github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= -github.com/hashicorp/go-secure-stdlib/mlock v0.1.1/go.mod h1:zq93CJChV6L9QTfGKtfBxKqD7BqqXx5O04A/ns2p5+I= -github.com/hashicorp/go-secure-stdlib/mlock v0.1.2 h1:p4AKXPPS24tO8Wc8i1gLvSKdmkiSY5xuju57czJ/IJQ= -github.com/hashicorp/go-secure-stdlib/mlock v0.1.2/go.mod h1:zq93CJChV6L9QTfGKtfBxKqD7BqqXx5O04A/ns2p5+I= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.1/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6 h1:om4Al8Oy7kCm/B86rLCLah4Dt5Aa0Fr5rYBG60OzwHQ= -github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= -github.com/hashicorp/go-secure-stdlib/password v0.1.1/go.mod h1:9hH302QllNwu1o2TGYtSk8I8kTAN0ca1EHpwhm5Mmzo= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= -github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= -github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.1/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -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.2/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.2.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 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= -github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl/v2 v2.17.0 h1:z1XvSUyXd1HP10U4lrLg5e0JMVz6CPaJvAgxM0KNZVY= github.com/hashicorp/hcl/v2 v2.17.0/go.mod h1:gJyW2PTShkJqQBKpAmPO3yxMxIuoXkOF2TpqXzrQyx4= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/memberlist v0.3.1/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/nomad/api v0.0.0-20220629141207-c2428e1673ec/go.mod h1:jP79oXjopTyH6E8LF0CEMq67STgrlmBRIyijA0tuR5o= -github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/vault/api v1.7.2/go.mod h1:xbfA+1AvxFseDzxxdWaL0uO99n1+tndus4GCrtouy0M= -github.com/hashicorp/vault/api v1.8.2 h1:C7OL9YtOtwQbTKI9ogB0A1wffRbCN+rH/LLCHO3d8HM= -github.com/hashicorp/vault/api v1.8.2/go.mod h1:ML8aYzBIhY5m1MD1B2Q0JV89cC85YVH4t5kBaZiyVaE= -github.com/hashicorp/vault/sdk v0.5.1/go.mod h1:DoGraE9kKGNcVgPmTuX357Fm6WAx1Okvde8Vp3dPDoU= -github.com/hashicorp/vault/sdk v0.5.3/go.mod h1:DoGraE9kKGNcVgPmTuX357Fm6WAx1Okvde8Vp3dPDoU= -github.com/hashicorp/vault/sdk v0.6.1 h1:sjZC1z4j5Rh2GXYbkxn5BLK05S1p7+MhW4AgdUmgRUA= -github.com/hashicorp/vault/sdk v0.6.1/go.mod h1:Ck4JuAC6usTphfrrRJCRH+7/N7O2ozZzkm/fzQFt4uM= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/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/hetznercloud/hcloud-go v1.33.1/go.mod h1:XX/TQub3ge0yWR2yHWmnDVIrB+MQbda1pHxkUmDlUME= -github.com/hetznercloud/hcloud-go v1.35.0/go.mod h1:mepQwR6va27S3UQthaEPGS86jtzSY9xWL1e9dyxXpgA= -github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/hudl/fargo v1.3.0/go.mod h1:y3CKSmjA+wD2gak7sUSXTAoopbhU08POFhmITJgmKTg= -github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= -github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= -github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= -github.com/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.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= -github.com/influxdata/influxdb1-client v0.0.0-20191209144304-8bf82d3c094d/go.mod h1:qj24IKcXYK6Iy9ceXlo3Tc+vtHo9lIhSX5JddghvEPo= -github.com/intel/goresctrl v0.2.0/go.mod h1:+CZdzouYFn5EsxgqAQTEzMfwKwuc0fVdMrT9FCCAVRQ= -github.com/ionos-cloud/sdk-go/v6 v6.1.0/go.mod h1:Ox3W0iiEz0GHnfY9e5LmAxwklsxguuNFEUSu0gVRTME= -github.com/j-keck/arping v0.0.0-20160618110441-2cf9dc699c56/go.mod h1:ymszkNOg6tORTn+6F6j+Jc8TOr5osrynvN6ivFWZ2GA= -github.com/j-keck/arping v1.0.2/go.mod h1:aJbELhR92bSk7tp79AWM/ftfc90EfEi2bQJrbBFOsPw= -github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= -github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= -github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= -github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= -github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= -github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= -github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= -github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= -github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= -github.com/jackc/pgconn v1.12.1/go.mod h1:ZkhRC59Llhrq3oSfrikvwQ5NaxYExr6twkdkMLaKono= -github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= -github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= -github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= -github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= -github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= -github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= -github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= -github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= -github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= -github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgproto3/v2 v2.3.0/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= -github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b/go.mod h1:vsD4gTJCa9TptPL8sPkXrLZ+hDuNrZCnj29CQpr4X1E= -github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= -github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= -github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= -github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= -github.com/jackc/pgtype v1.11.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= -github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= -github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= -github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= -github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= -github.com/jackc/pgx/v4 v4.16.1/go.mod h1:SIhx0D5hoADaiXZVyv+3gSm3LCIIINTVO0PficsvWGQ= -github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= -github.com/jackc/puddle v1.2.1/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= 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/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= -github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= -github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20160803190731-bd40a432e4c7/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= -github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joefitzgerald/rainbow-reporter v0.1.0/go.mod h1:481CNgqmVHQZzdIbN52CupLJyoVwB10FQ/IQlF1pdL8= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= -github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= -github.com/josharian/intern v1.0.0/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.8/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= -github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= -github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/karrick/godirwalk v1.8.0/go.mod h1:H5KPZjojv4lE+QYImBI8xVtrBRgYrIVsaRPx4tDPEn4= -github.com/karrick/godirwalk v1.10.3/go.mod h1:RoGL9dQei4vP9ilrpETWE8CLOZ1kiN0LhBygSwrAsHA= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kevinburke/ssh_config v1.2.0/go.mod h1:CT57kijsi8u/K/BOFA39wgDQJ9CxiF4nAY/ojJ6r6mM= -github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q= github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= -github.com/klauspost/compress v1.10.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.15.1/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= -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.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= 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/pty v1.1.5/go.mod h1:9r2w37qlBe7rQ6e1fg1S/9xpWHSnaqNdHD3WcMdbPDA= -github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= -github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= -github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= -github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= -github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= -github.com/lib/pq v1.1.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.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= -github.com/lightstep/lightstep-tracer-go v0.18.1/go.mod h1:jlF1pusYV4pidLvZ+XD0UBX0ZE6WURAspgAczcDHrL4= -github.com/linode/linodego v1.4.0/go.mod h1:PVsRxSlOiJyvG4/scTszpmZDTdgS+to3X6eS8pRrWI8= -github.com/linode/linodego v1.8.0/go.mod h1:heqhl91D8QTPVm2k9qZHP78zzbOdTFLXE9NJc3bcc50= -github.com/linuxkit/virtsock v0.0.0-20201010232012-f8cee7dfc7a3/go.mod h1:3r6x7q95whyfWQpmGZTu3gk3v2YkMi05HEzl7Tf7YEo= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= -github.com/lyft/protoc-gen-star v0.6.0/go.mod h1:TGAoBVkt8w7MPG72TrKIu85MIdXwDuzJYeZuUPFPNwA= -github.com/lyft/protoc-gen-validate v0.0.13/go.mod h1:XbGvPuh87YZc5TdIa2/I4pLk0QoUACkjt2znoq26NVQ= -github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= -github.com/mailru/easyjson v0.0.0-20160728113105-d5b7844b561a/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.7.0/go.mod h1:KAzv3t3aY1NaHWoQz1+4F1ccyAH66Jk7yos7ldAVICs= -github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/markbates/oncer v0.0.0-20181203154359-bf2de49a0be2/go.mod h1:Ld9puTsIW75CHf65OeIOkyKbteujpZVXDpWK6YGZbxE= -github.com/markbates/safe v1.0.1/go.mod h1:nAqgmRi7cY2nqMc92/bSEeQA+R4OheNU2T1kNSCBdG0= -github.com/marstr/guid v1.1.0/go.mod h1:74gB1z2wpxxInTG6yaqA7KrtM0NZ+RbrcqDvYHefzho= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.9/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.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= 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.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-localereader v0.0.1 h1:ygSAOl7ZXTx4RdPYinUpg6W99U8jWvWi9Ye2JC/oIi4= github.com/mattn/go-localereader v0.0.1/go.mod h1:8fBrzywKY7BI3czFoHkuzRoWE9C+EiG4R1k4Cjx5p88= -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.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.6/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= -github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= -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/maxbrunsfeld/counterfeiter/v6 v6.2.2/go.mod h1:eD9eIE7cdwcMi9rYluz88Jz2VyhSmden33/aXg4oVIY= -github.com/microsoft/ApplicationInsights-Go v0.4.4/go.mod h1:fKRUseBqkw6bDiXTs3ESTiU/4YTIHsQS4W3fP2ieF4U= -github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= -github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/dns v1.1.50/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= -github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= -github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/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 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc= 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.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= -github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= -github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg= -github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQZAeMln+1tSwduZz7+Af5oFlKirV/MSYes2A= -github.com/mitchellh/reflectwalk v1.0.0/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/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= -github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= -github.com/moby/sys/mountinfo v0.4.0/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.4.1/go.mod h1:rEr8tzG/lsIZHBtN/JjGG+LMYx9eXgW2JI+6q0qou+A= -github.com/moby/sys/mountinfo v0.5.0/go.mod h1:3bMD3Rg+zkqx8MRYPi7Pyb0Ie97QEBmdxbhnCLlSvSU= -github.com/moby/sys/signal v0.6.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= -github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ= -github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= -github.com/moby/term v0.0.0-20200312100748-672ec06f55cd/go.mod h1:DdlQx2hp0Ss5/fLikoLlEeIYiATotOjgB//nb973jeo= -github.com/moby/term v0.0.0-20210610120745-9d4ed1856297/go.mod h1:vgPCkQMyxTZ7IDy8SXRufE172gr8+K/JE/7hHFxHW3A= -github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6/go.mod h1:E2VnQOmVuvZB6UYnnDB0qG5Nq/1tD9acaOpo6xmt0Kw= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-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/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= -github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= -github.com/montanaflynn/stats v0.6.6/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow= -github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= -github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6 h1:ZK8zHtRHOkbHy6Mmr5D264iyp3TiX5OmNcI5cIARiQI= github.com/muesli/ansi v0.0.0-20230316100256-276c6243b2f6/go.mod h1:CJlz5H+gyd6CUWT45Oy4q24RdLyn7Md9Vj2/ldJBSIo= github.com/muesli/cancelreader v0.2.2 h1:3I4Kt4BQjOR54NavqnDogx/MIoWBFa0StPA8ELUXHmA= @@ -1291,841 +133,141 @@ github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= -github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/natefinch/atomic v1.0.1 h1:ZPYKxkqQOx3KZ+RsbnP/YsgvxWQPGxjC0oBt2AhwV0A= github.com/natefinch/atomic v1.0.1/go.mod h1:N/D/ELrljoqDyT3rZrsUmtsuzvHkeB/wWjHV22AZRbM= -github.com/nats-io/jwt v0.3.0/go.mod h1:fRYCDE99xlTsqUzISS1Bi75UBJ6ljOJQOAAu5VglpSg= -github.com/nats-io/jwt v0.3.2/go.mod h1:/euKqTS1ZD+zzjYrY7pseZrTtWQSjujC7xjPc8wL6eU= -github.com/nats-io/nats-server/v2 v2.1.2/go.mod h1:Afk+wRZqkMQs/p45uXdrVLuab3gwv3Z8C4HTBu8GD/k= -github.com/nats-io/nats.go v1.9.1/go.mod h1:ZjDU1L/7fJ09jvUSRVBR2e7+RnLiiIQyqyzEE/Zbp4w= -github.com/nats-io/nkeys v0.1.0/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nkeys v0.1.3/go.mod h1:xpnFELMwJABBLVhffcfd1MZx6VsNRFpEugbxziKVo7w= -github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= -github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= -github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= -github.com/oklog/oklog v0.3.2/go.mod h1:FCV+B7mhrz4o+ueLpx+KqkyXRGMWOYEvfiXtdGtbWGs= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= -github.com/oklog/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/onsi/ginkgo v0.0.0-20151202141238-7f8ab55aaf3b/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v0.0.0-20170829012221-11459a886d9c/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.8.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= -github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= -github.com/onsi/ginkgo v1.13.0/go.mod h1:+REjRxOmWfHCjfv9TTWB1jD1Frx4XydAD3zm1lskyM0= -github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= -github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= -github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= -github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= -github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= -github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= -github.com/onsi/gomega v1.15.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= -github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= -github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0-rc1.0.20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= -github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= -github.com/opencontainers/image-spec v1.0.0/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2-0.20211117181255-693428a734f5/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= -github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc8.0.20190926000215-3e425f80a8c9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc9/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U= -github.com/opencontainers/runc v1.0.0-rc93/go.mod h1:3NOsor4w32B2tC0Zbl8Knk4Wg84SM2ImC1fxBuqJ/H0= -github.com/opencontainers/runc v1.0.2/go.mod h1:aTaHFFwQXuA71CiyxOdFFIorAoemI04suvGRQFzWTD0= -github.com/opencontainers/runc v1.1.0/go.mod h1:Tj1hFw6eFWp/o33uxGf5yF2BX5yz2Z6iptFpuvbbKqc= -github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2-0.20190207185410-29686dbc5559/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= -github.com/opencontainers/runtime-tools v0.0.0-20181011054405-1d69bd0f9c39/go.mod h1:r3f7wjNzSs2extwzU3Y+6pKfobzPh+kKFJ3ofN+3nfs= -github.com/opencontainers/selinux v1.6.0/go.mod h1:VVGKuOLlE7v4PJyT6h7mNWvq1rzqiriPsEqVhc+svHE= -github.com/opencontainers/selinux v1.8.0/go.mod h1:RScLhm78qiWa2gbVCcGkC7tCGdgk3ogry1nUQF8Evvo= -github.com/opencontainers/selinux v1.8.2/go.mod h1:MUIHuUEvKB1wtJjQdOyYRgOnLD2xAPP8dBsCoU0KuF8= -github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= -github.com/opentracing-contrib/go-observer v0.0.0-20170622124052-a52f23424492/go.mod h1:Ngi6UdF0k5OKD5t5wlmGhe/EDKPoUM3BXZSSfIuJbis= -github.com/opentracing/basictracer-go v1.0.0/go.mod h1:QfBfYuafItcjQuMwinw9GhYKwFXS9KnPs5lxoYwgW74= github.com/opentracing/basictracer-go v1.1.0 h1:Oa1fTSBvAl8pa3U+IJYqrKm0NALwH9OsgwOqDv4xJW0= github.com/opentracing/basictracer-go v1.1.0/go.mod h1:V2HZueSJEp879yv285Aap1BS69fQMD+MNP1mRs6mBQc= -github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/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/openzipkin-contrib/zipkin-go-opentracing v0.4.5/go.mod h1:/wsWhb9smxSfWAKL3wpBW7V8scJMt8N8gnaMCS9E/cA= -github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= -github.com/openzipkin/zipkin-go v0.2.1/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/openzipkin/zipkin-go v0.2.2/go.mod h1:NaW6tEwdmWMaCDZzg8sh+IBNOxHMPnhQw8ySjnjRyN4= -github.com/pact-foundation/pact-go v1.0.4/go.mod h1:uExwJY4kCzNPcHRj+hCR/HBbOOIwwtUjcrb0b5/5kLM= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= -github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= -github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= -github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pgavlin/fx v0.1.6 h1:r9jEg69DhNoCd3Xh0+5mIbdbS3PqWrVWujkY76MFRTU= github.com/pgavlin/fx v0.1.6/go.mod h1:KWZJ6fqBBSh8GxHYqwYCf3rYE7Gp2p0N8tJp8xv9u9M= github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386 h1:LoCV5cscNVWyK5ChN/uCoIFJz8jZD63VQiGJIRgr6uo= github.com/pgavlin/goldmark v1.1.33-0.20200616210433-b5eb04559386/go.mod h1:MRxHTJrf9FhdfNQ8Hdeh9gmHevC9RJE/fu8M3JIGjoE= -github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0jef7pBehbT1qWhCMrIgbYNnFAZCqQ5LRc= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pierrec/lz4 v2.6.1+incompatible h1:9UY3+iC23yxF0UfGaYrGplQ+79Rg+h/q9FV9ix19jjM= -github.com/pierrec/lz4 v2.6.1+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/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= -github.com/pkg/browser v0.0.0-20210115035449-ce105d075bb4/go.mod h1:N6UoU20jOqggOuDwUaBQpluzLNDqif3kq9z2wpdYEfQ= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8 h1:KoWmjvw+nsYOo29YJK9vDA65RGE3NrOnUtO7a+RF9HU= -github.com/pkg/browser v0.0.0-20210911075715-681adbf594b8/go.mod h1:HKlIX3XHQyzLZPlr7++PzdhaXEj94dEiJgZDTsxEqUI= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= -github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI= -github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= github.com/pkg/term v1.1.0 h1:xIAAdCMh3QIAy+5FrE8Ad8XoDhEU4ufwbaSozViP9kk= github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= -github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= -github.com/prometheus/alertmanager v0.24.0/go.mod h1:r6fy/D7FRuZh5YbnX6J3MBY0eI4Pb5yPYS7/bPSXXqI= -github.com/prometheus/client_golang v0.0.0-20180209125602-c332b6f63c06/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3-0.20190127221311-3c4408c8b829/go.mod h1:p2iRAGwDERtqlqzRXnrOVns+ignqQo//hLXqYxZYVNs= -github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= -github.com/prometheus/client_golang v1.3.0/go.mod h1:hJaj2vgQTGQmVCsAACORcieXFeDPbaTKGT+JTgUa3og= -github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_golang v1.12.2/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= -github.com/prometheus/client_model v0.0.0-20171117100541-99fa1f4be8e5/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.1.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.0.0-20180110214958-89604d197083/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.2.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= -github.com/prometheus/common v0.7.0/go.mod h1:DjGbpBbp5NYNiECxcL/VnbXCCaQpKd3tt26CguLLsqA= -github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/common v0.29.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.30.0/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= -github.com/prometheus/common v0.34.0/go.mod h1:gB3sOl7P0TvJabZpLY5uQMpUqRCPPCyRLCZYc7JZTNE= -github.com/prometheus/common v0.37.0/go.mod h1:phzohg0JFMnBEFGxTDbfu3QyL5GI8gTQJFhYO5B3mfA= -github.com/prometheus/common/assets v0.1.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/common/assets v0.2.0/go.mod h1:D17UVUE12bHbim7HzwUvtqm6gwBEaDQ0F+hIGbFbccI= -github.com/prometheus/common/sigv4 v0.1.0/go.mod h1:2Jkxxk9yYvCkE5G1sQT7GuEXm57JrvHu9k5YwTjsNtI= -github.com/prometheus/exporter-toolkit v0.7.1/go.mod h1:ZUBIj498ePooX9t/2xtDjeQYwvRpiPP2lh5u4iblj2g= -github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190117184657-bf6a532e95b1/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= -github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/prometheus/prometheus v0.35.0/go.mod h1:7HaLx5kEPKJ0GDgbODG0fZgXbQ8K/XjZNJXQmbmgQlY= -github.com/prometheus/prometheus v0.37.0/go.mod h1:egARUgz+K93zwqsVIAneFlLZefyGOON44WyAp4Xqbbk= -github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435cARxCW6q9gc0S/Yxz7Mkd38pOb0= github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/pulumi-java/pkg v0.10.0 h1:D1i5MiiNrxYr2uJ1szcj1aQwF9DYv7TTsPmajB9dKSw= -github.com/pulumi/pulumi-java/pkg v0.10.0/go.mod h1:xu6UgYtQm+xXOo1/DZNa2CWVPytu+RMkZVTtI7w7ffY= github.com/pulumi/pulumi/pkg/v3 v3.112.0 h1:vhoM6sx1eegJntIeUZENtck3VeMtK1zBiQ2E3EPOnHw= github.com/pulumi/pulumi/pkg/v3 v3.112.0/go.mod h1:GQhNr0v5E8TACF8j0p6UQqyr7mZreUpoMfVjLeu6eY0= github.com/pulumi/pulumi/sdk/v3 v3.112.0 h1:cq2x5N6iuYhSLdeOdRs+LIq0EneB0Cb54WOlD/VaX3E= github.com/pulumi/pulumi/sdk/v3 v3.112.0/go.mod h1:JWSzKBoHd8rlncC1DhXLf7YdV+Bk/Qf+hSZOOQh0WwQ= -github.com/rakyll/embedmd v0.0.0-20171029212350-c8060a0752a2/go.mod h1:7jOTMgqac46PZcF54q6l2hkLEG8op93fZu61KmxWDV4= -github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= -github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= -github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.6.1/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.8.2/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= -github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= -github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= -github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= -github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI= github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs= -github.com/safchain/ethtool v0.0.0-20190326074333-42ed695e3de8/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/safchain/ethtool v0.0.0-20210803160452-9aa261dae9b1/go.mod h1:Z0q5wiBQGYcxhMZ6gUqHn6pYNLypFAvaL3UvgZLR0U4= -github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/santhosh-tekuri/jsonschema/v5 v5.0.0 h1:TToq11gyfNlrMFZiYujSekIsPd9AmsA2Bj/iv+s4JHE= github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= -github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= -github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= -github.com/sclevine/agouti v3.0.0+incompatible/go.mod h1:b4WX9W9L1sfQKXeJf1mUTLZKJ48R1S7H23Ji7oFO5Bw= -github.com/sclevine/spec v1.2.0/go.mod h1:W4J29eT/Kzv7/b9IWLB055Z+qvVC9vt0Arko24q7p+U= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/seccomp/libseccomp-golang v0.9.2-0.20210429002308-3879420cc921/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= github.com/segmentio/asm v1.1.3 h1:WM03sfUOENvvKexOLp+pCqgb/WDjsi7EK8gIsICtzhc= github.com/segmentio/asm v1.1.3/go.mod h1:Ld3L4ZXGNcSLRg4JBsZ3//1+f/TjYl0Mzen/DQy1EJg= github.com/segmentio/encoding v0.3.5 h1:UZEiaZ55nlXGDL92scoVuw00RmiRCazIEmvPSbSvt8Y= github.com/segmentio/encoding v0.3.5/go.mod h1:n0JeuIqEQrQoPDGsjo8UNd1iA0U8d8+oHAA4E3G3OxM= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= -github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= -github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= -github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= -github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= -github.com/shurcooL/vfsgen v0.0.0-20200824052919-0d455de96546/go.mod h1:TrYk7fJVaAttu97ZZKrO9UbRa8izdowaMIZcxYMbVaw= -github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.0.6/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.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/skeema/knownhosts v1.2.2 h1:Iug2P4fLmDw9f41PB6thxUkNUkJzB5i+1/exaj40L3A= github.com/skeema/knownhosts v1.2.2/go.mod h1:xYbVRSPxqBZFrdmDyMmsOs+uX1UZC3nTN3ThzgDxUwo= -github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= -github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= -github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= -github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= -github.com/sony/gobreaker v0.4.1/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= -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.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= -github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= -github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= -github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= -github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= -github.com/spf13/cobra v1.0.0/go.mod h1:/6GTrnGXV9HjY+aR4k0oJ5tcvakLuG6EuKReYlHNrgE= -github.com/spf13/cobra v1.1.3/go.mod h1:pGADOWyqRD/YMrPZigI/zbliZ2wVD/23d+is3pSWzOo= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= -github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= -github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= -github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= -github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= -github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= -github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= -github.com/streadway/amqp v0.0.0-20190404075320-75d898a42a94/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/amqp v0.0.0-20190827072141-edfb9018d271/go.mod h1:AZpEONHx3DKn8O/DFsRAY58/XVQiIPMTMB1SddzLXVw= -github.com/streadway/handy v0.0.0-20190108123426-d5acb3125c2a/go.mod h1:qNTQ5P5JnDBl6z3cMAg/SywNDC5ABu5ApDIw6lUbRmI= -github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v0.0.0-20180303142811-b89eecf5ca5d/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/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.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= -github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/syndtr/gocapability v0.0.0-20170704070218-db04d3cc01c8/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20180916011248-d98352740cb2/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= -github.com/tchap/go-patricia v2.2.6+incompatible/go.mod h1:bmLyhP68RS6kStMGxByiQ23RP/odRBOTVjwp2cDyi6I= -github.com/tedsuo/ifrit v0.0.0-20180802180643-bea94bb476cc/go.mod h1:eyZnKCc955uh98WQvzOm0dgAeLnf2O0Rz0LPoC5ze+0= github.com/texttheater/golang-levenshtein v1.0.1 h1:+cRNoVrfiwufQPhoMzB6N0Yf/Mqajr6t1lOv8GyGE2U= github.com/texttheater/golang-levenshtein v1.0.1/go.mod h1:PYAKrbF5sAiq9wd+H82hs7gNaen0CplQ9uvm6+enD/8= -github.com/tidwall/pretty v1.0.0/go.mod h1:XNkn88O1ChpSDQmQeStsy+sBenx6DDtFZJxhVysOjyk= -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-20201229170055-e5319fda7802/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= -github.com/tv42/httpunix v0.0.0-20191220191345-2ba4b9c3382c/go.mod h1:hzIxponao9Kjc7aWznkXaL4U4TWaDSs8zcsY4Ka08nM= github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7 h1:X9dsIWPuuEJlPX//UmRKophhOKCGXc46RVIGuttks68= github.com/tweekmonster/luser v0.0.0-20161003172636-3fa38070dbd7/go.mod h1:UxoP3EypF8JfGEjAII8jx1q8rQyDnX8qdTCs/UQBVIE= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= github.com/uber/jaeger-lib v2.4.1+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= -github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc= -github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= -github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= -github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= -github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/urfave/cli v1.22.2/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= -github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= -github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= -github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netlink v1.1.1-0.20210330154013-f5de75959ad5/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= -github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= -github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= -github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= -github.com/vultr/govultr/v2 v2.17.2/go.mod h1:ZFOKGWmgjytfyjeyAdhQlSWwTjh2ig+X49cAp50dzXI= -github.com/willf/bitset v1.1.11-0.20200630133818-d5bec3311243/go.mod h1:RjeCKbqT1RxIR/KWY6phxZiaY1IyutSBfGjNPySAYV4= -github.com/willf/bitset v1.1.11/go.mod h1:83CECat5yLh5zVOf4P1ErAgKA5UDvKtgyUABdr3+MjI= github.com/xanzy/ssh-agent v0.3.3 h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM= github.com/xanzy/ssh-agent v0.3.3/go.mod h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw= -github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= -github.com/xdg-go/scram v1.0.2/go.mod h1:1WAq6h33pAW+iRreB34OORO2Nf7qel3VV3fjBj+hCSs= -github.com/xdg-go/stringprep v1.0.2/go.mod h1:8F9zXuvzgwmyT5DUm4GUfZGDdT3W+LCvS6+da4O5kxM= -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 v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= -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 v1.1.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= -github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= -github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= -github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -github.com/yuin/goldmark v1.4.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/go.mod h1:aX5oPXxHm3bOH+xeAttToC8pqch2ScQN/JoXYupl6xs= -github.com/yvasiyarov/gorelic v0.0.0-20141212073537-a9bba5b9ab50/go.mod h1:NUSPSUX/bi6SeDMUh6brw0nXpxHnc96TguQh0+r/ssA= -github.com/yvasiyarov/newrelic_platform_go v0.0.0-20140908184405-b21fdbd4370f/go.mod h1:GlGEuHIJweS1mbCqG+7vt2nvWLzLLnRHbXz5JKd/Qbg= github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= -github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= -go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= -go.etcd.io/bbolt v1.3.5/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= -go.etcd.io/bbolt v1.3.6/go.mod h1:qXsaaIqmgQH0T+OPdb99Bf+PKfBBQVAdyD6TY9G8XM4= -go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mIZCrds/GIG4ncV9HhK5PX7jPg= -go.etcd.io/etcd v0.5.0-alpha.5.0.20200910180754-dd1b699fc489/go.mod h1:yVHk9ub3CSBatqGNg7GRmsnfLWtoW60w4eDYfh7vHDg= -go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= -go.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.mongodb.org/mongo-driver v1.7.3/go.mod h1:NqaYOwnXWr5Pm7AOpO5QFxKJ503nbMse/R79oO62zWg= -go.mongodb.org/mongo-driver v1.7.5/go.mod h1:VXEWRZ6URJIkUq2SCAyapmhH0ZLRBP+FT4xhp5Zvxng= -go.mongodb.org/mongo-driver v1.8.3/go.mod h1:0sQWfOeY63QTntERDJJ/0SuKK0T1uVSgKCuAROlKEPY= -go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= -go.opencensus.io v0.15.0/go.mod h1:UffZAU+4sDEINUGP/B7UfBBkq4fqLu9zXAX7ke6CHW0= -go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.20.2/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= -go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= -go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= -go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= -go.opencensus.io v0.23.0/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/google.golang.org/grpc/otelgrpc v0.28.0/go.mod h1:vEhqr0m4eTc+DWxfsXoXue2GBgV2uUwVznkGIHW/e5w= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.31.0/go.mod h1:PFmBsWbldL1kiWZk9+0LBZz2brhByaGsvp6pRICMlPE= -go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.32.0/go.mod h1:5eCOqeGphOyz6TsY3ZDNjE33SM/TFAK3RGuCL2naTgY= -go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= -go.opentelemetry.io/otel v1.3.0/go.mod h1:PWIKzi6JCp7sM0k9yZ43VX+T345uNbAkDKwHVjb2PTs= -go.opentelemetry.io/otel v1.6.0/go.mod h1:bfJD2DZVw0LBxghOTlgnlI0CV3hLDu9XF/QKOUXMTQQ= -go.opentelemetry.io/otel v1.6.1/go.mod h1:blzUabWHkX6LJewxvadmzafgh/wnvBSDBdOuwkAtrWQ= -go.opentelemetry.io/otel v1.7.0/go.mod h1:5BdUoMIz5WEs0vt0CUEMtSSaTSHBBVwrhnz7+nrD5xk= -go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.3.0/go.mod h1:VpP4/RMn8bv8gNo9uK7/IMY4mtWLELsS+JIP0inH0h4= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.6.1/go.mod h1:NEu79Xo32iVb+0gVNV8PMd7GoWqnyDXRlj04yFjqz40= -go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.7.0/go.mod h1:M1hVZHNxcbkAlcvrOMlpQ4YOO3Awf+4N2dxkZL3xm04= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.3.0/go.mod h1:hO1KLR7jcKaDDKDkvI9dP/FIhpmna5lkqPUQdEjFAM8= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.6.1/go.mod h1:YJ/JbY5ag/tSQFXzH3mtDmHqzF3aFn3DI/aB1n7pt4w= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.7.0/go.mod h1:ceUgdyfNv4h4gLxHR0WNfDiiVmZFodZhZSbOLhpxqXE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.3.0/go.mod h1:keUU7UfnwWTWpJ+FWnyqmogPa82nuU5VUANFq49hlMY= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.6.1/go.mod h1:UJJXJj0rltNIemDMwkOJyggsvyMG9QHfJeFH0HS5JjM= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.7.0/go.mod h1:E+/KKhwOSw8yoPxSSuUHG6vKppkvhN+S1Jc7Nib3k3o= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.3.0/go.mod h1:QNX1aly8ehqqX1LEa6YniTU7VY9I6R3X/oPxhGdTceE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.6.1/go.mod h1:DAKwdo06hFLc0U88O10x4xnb5sc7dDRDqRuiN+io8JE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.7.0/go.mod h1:aFXT9Ng2seM9eizF+LfKiyPBGy8xIZKwhusC1gIu3hA= -go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= -go.opentelemetry.io/otel/metric v0.28.0/go.mod h1:TrzsfQAmQaB1PDcdhBauLMk7nyyg9hm+GoQq/ekE9Iw= -go.opentelemetry.io/otel/metric v0.30.0/go.mod h1:/ShZ7+TS4dHzDFmfi1kSXMhMVubNoP0oIaBp70J6UXU= -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.3.0/go.mod h1:rIo4suHNhQwBIPg9axF8V9CA72Wz2mKF1teNrup8yzs= -go.opentelemetry.io/otel/sdk v1.6.1/go.mod h1:IVYrddmFZ+eJqu2k38qD3WezFR2pymCzm8tdxyh3R4E= -go.opentelemetry.io/otel/sdk v1.7.0/go.mod h1:uTEOTwaqIVuTGiJN7ii13Ibp75wJmYUDe374q6cZwUU= -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.3.0/go.mod h1:c/VDhno8888bvQYmbYLqe41/Ldmr/KKunbvWM4/fEjk= -go.opentelemetry.io/otel/trace v1.6.0/go.mod h1:qs7BrU5cZ8dXQHBGxHMOxwME/27YH2qEp4/+tZLLwJE= -go.opentelemetry.io/otel/trace v1.6.1/go.mod h1:RkFRM1m0puWIq10oxImnGEduNBzxiN7TXluRBtE+5j0= -go.opentelemetry.io/otel/trace v1.7.0/go.mod h1:fzLSB9nqR2eXzxPXb2JW9IKE+ScyXA48yyE4TNvoHqU= -go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= -go.opentelemetry.io/proto/otlp v0.11.0/go.mod h1:QpEjXPrNQzrFDZgoTo49dgHR9RYRSrg3NAKnUGl9YpQ= -go.opentelemetry.io/proto/otlp v0.12.1/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.15.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.opentelemetry.io/proto/otlp v0.16.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= -go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= -go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= -go.uber.org/automaxprocs v1.5.1/go.mod h1:BF4eumQw0P9GtnuxxovUd06vwm1o18oMzFtK66vU6XU= -go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= -go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -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.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= -go.uber.org/multierr v1.8.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= -go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= -go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= -go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= -gocloud.dev v0.27.0/go.mod h1:YlYKhYsY5/1JdHGWQDkAuqkezVKowu7qbe9aIeUF6p0= -gocloud.dev v0.36.0 h1:q5zoXux4xkOZP473e1EZbG8Gq9f0vlg1VNH5Du/ybus= -gocloud.dev v0.36.0/go.mod h1:bLxah6JQVKBaIxzsr5BQLYB4IYdWHkMZdzCXlo6F0gg= -gocloud.dev/secrets/hashivault v0.27.0 h1:AAeGJXr0tiHHJgg5tL8atOGktB4eK9EJAqkZbPKAcOo= -gocloud.dev/secrets/hashivault v0.27.0/go.mod h1:offqsI5oj0B0bVHZdfk/88uIb3NnN93ia8py0yvRlHY= -golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181009213950-7c1a557ab941/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190422162423-af44ce270edf/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= -golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-20201216223049-8b5274cf687f/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= -golang.org/x/crypto v0.0.0-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-20210711020723-a769d52b0f97/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-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220214200702-86341886e292/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220511200225-c6db032c6c88/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.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= -golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= -golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= -golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= -golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= -golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ= golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE= -golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= -golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -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.5.1/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.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0= golang.org/x/mod v0.14.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-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190619014844-b5b0513f8c1b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-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-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/net v0.0.0-20210421230115-4e50805a0758/go.mod h1:72T/g9IO56b78aLF+1Kcs5dz7/ng1VjMUvfKvpfy+jM= -golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= -golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210520170846-37e1c6afe023/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210610132358-84b48f89b13b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20210825183410-e898025ed96a/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211209124913-491a49abca63/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220607020251-c690dde0001d/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220617184016-355a448f1bc9/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220624214902-1bab6f366d9e/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= -golang.org/x/net v0.0.0-20220802222814-0bcc04d9c69b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220608161450-d0670ef3b1eb/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220622183110-fd043fe589d2/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220628200809-02e64fa58f26/go.mod h1:jaDAt6Dkxork7LmZnYtzbRWj0W47D86a3TGe0YHBvmE= -golang.org/x/oauth2 v0.0.0-20220722155238-128564f6959c/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= -golang.org/x/oauth2 v0.14.0 h1:P0Vrf/2538nmC0H+pEQ3MNFRRnVR7RlqyVw+bvm26z0= -golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -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.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= golang.org/x/sync v0.5.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-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190419153524-e8e3143a4f4a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190514135907-3a4b5fb9f71f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190522044717-8097e1b27ff5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190531175056-4c3a928424d2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190602015325-4c4f7f33c9ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190606203320-7fc4e5ec1444/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -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-20191022100944-742c48ecaeb7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191115151921-52ab43148777/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191210023423-ac6580df4449/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191220142924-d4481acd189f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200120151820-655fe14d7479/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200217220822-9197077df867/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-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-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-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-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-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-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210420072515-93ed5bcd2bfe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/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-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-20210616045830-e2b7044e8c71/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-20210816183151-1e6c022a8912/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210831042530-f4d43177bf5e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210903071746-97244b99971b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210906170528-6f6e22806c34/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210917161153-d61c044b1678/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-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-20211110154304-99a53858aa08/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211116061358-0a5406a5449c/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-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220502124256-b6088ccd6cba/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220610221304-9f5ed59c137d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220615213510-4f61da869c0c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220624220833-87e55d714810/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220627191245-f75cf1eec38b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220731174439-a90be440212d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -2133,508 +275,57 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= -golang.org/x/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-20200630173020-3af7569d3a1e/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20210723032227-1f47c861a9ac/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220609170525-579cf78fd858/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20220722155302-e5dcc9cfc0b9/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.4.0 h1:Z81tqI5ddIoXDPvVQ7/7CC9TnLM7ubaFG2qXYd5BbYY= -golang.org/x/time v0.4.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= -golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20181011042414-1f849cf54d09/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190329151228-23e29df326fe/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190416151739-9c9e1878f421/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190420181800-aa740d480789/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190422233926-fe54fb35175b/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190531172133-b3315ee88b7d/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190706070813-72ffa07ba3db/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= -golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-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-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= -golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= -golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200616133436-c1934b75d054/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= -golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= -golang.org/x/tools v0.0.0-20200916195026-c9a70fc28ce3/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= -golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= -golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.15.0 h1:zdAyfUGbYmuVokhzVmghFl2ZJh5QhcfebBgmVPFYA+8= golang.org/x/tools v0.15.0/go.mod h1:hpksKq4dtpQWS1uQ61JkdqWM3LscIS6Slf+VVkm+wQk= -golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220517211312-f3a8303e98df/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20220609144429-65e65417b02f/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= -golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= -google.golang.org/api v0.0.0-20160322025152-9bf6e6e569ff/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= -google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk= -google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= -google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= -google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= -google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= -google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= -google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= -google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= -google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= -google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= -google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= -google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= -google.golang.org/api v0.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.58.0/go.mod h1:cAbP2FsxoGVNwtgNAmmn3y5G1TWAiVYRmg4yku3lv+E= -google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= -google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= -google.golang.org/api v0.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.85.0/go.mod h1:AqZf8Ep9uZ2pyTvgL+x0D3Zt0eoT9b5E8fmzfu6FO2g= -google.golang.org/api v0.86.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.90.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.91.0/go.mod h1:+Sem1dnrKlrXMR/X0bPnMWyluQe4RsNoYfmNLhOIkzw= -google.golang.org/api v0.151.0 h1:FhfXLO/NFdJIzQtCqjpysWwqKk8AzGWBUhMIx67cVDU= -google.golang.org/api v0.151.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= -google.golang.org/appengine v1.6.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/cloud v0.0.0-20151119220103-975617b05ea8/go.mod h1:0H1ncTHf11KCFhTc/+EFRbzSCOZx+VUbRMk55Yv5MYk= -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-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190522204451-c2c4e71fbf69/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190530194941-fb225487d101/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= -google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= -google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200117163144-32f20d992d24/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= -google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= -google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-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-20200527145253-8367513e4ece/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= -google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201019141844-1ed22bb0c154/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201110150050-8816d57aaa9a/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= -google.golang.org/genproto v0.0.0-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-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-20210917145530-b395a37504d4/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= -google.golang.org/genproto v0.0.0-20210921142501-181ce0d877f6/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211018162055-cf77aa76bad2/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-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-20220329172620-7be39ac1afc7/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= -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-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= -google.golang.org/genproto v0.0.0-20220608133413-ed9918b62aac/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220616135557-88e70c0c3a90/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220617124728-180714bec0ad/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220624142145-8cd45d7dbd1f/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220628213854-d9e0b6570c03/go.mod h1:KEWEmljWE5zPzLBa/oHl6DaEt9LmfH6WtH1OHIvleBA= -google.golang.org/genproto v0.0.0-20220802133213-ce4fa296bf78/go.mod h1:iHe1svFLAZg9VWz891+QbRMwUv9O/1Ww+/mngYeThbc= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= -google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f h1:2yNACc1O40tTnrsbk9Cv6oxiW8pxI/pXj0wRtdlYmgY= -google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= -google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.0/go.mod h1:chYK+tFQF0nDUGJgXMSgLCQk3phJEuONr2DCgLDdAQM= -google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= -google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= -google.golang.org/grpc v1.22.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= -google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= -google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= -google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= -google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= -google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= -google.golang.org/grpc v1.42.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.43.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= -google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= -google.golang.org/grpc v1.46.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.46.2/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.47.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= -google.golang.org/grpc v1.48.0/go.mod h1:vN9eftEi1UMyUsIF80+uQXhHjbXYbm0uXoFCACuMGWk= google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= -gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20141024133853-64131543e789/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= -gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= -gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= -gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= -gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24xpD6X8LsfU/+k= -gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= -gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= -gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/telebot.v3 v3.0.0/go.mod h1:7rExV8/0mDDNu9epSrDm/8j22KLaActH1Tbee6YjzWg= -gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/warnings.v0 v0.1.2/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= -gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20200615113413-eeeca48fe776/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= -gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk= -gotest.tools/v3 v3.0.3/go.mod h1:Z7Lb0S5l+klDB31fvDQX8ss/FlKDxtlFlw3Oa8Ymbl8= -honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.20.1/go.mod h1:KqwcCVogGxQY3nBlRpwt+wpAMF/KjaCc7RpywacvqUo= -k8s.io/api v0.20.4/go.mod h1:++lNL1AJMkDymriNniQsWRkMDzRaX2Y/POTUi8yvqYQ= -k8s.io/api v0.20.6/go.mod h1:X9e8Qag6JV/bL5G6bU8sdVRltWKmdHsFUGS3eVndqE8= -k8s.io/api v0.22.5/go.mod h1:mEhXyLaSD1qTOf40rRiKXkc+2iCem09rWLlFwhCEiAs= -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/apimachinery v0.20.1/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.4/go.mod h1:WlLqWAHZGg07AeltaI0MV5uk1Omp8xaN0JGLY6gkRpU= -k8s.io/apimachinery v0.20.6/go.mod h1:ejZXtW1Ra6V1O5H8xPBGz+T3+4gfkTCeExAHKU57MAc= -k8s.io/apimachinery v0.22.1/go.mod h1:O3oNtNadZdeOMxHFVxOreoznohCpy0z6mocxbZr7oJ0= -k8s.io/apimachinery v0.22.5/go.mod h1:xziclGKwuuJ2RM5/rSFQSYAj0zdbci3DH8kj+WvyN0U= -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/apiserver v0.20.1/go.mod h1:ro5QHeQkgMS7ZGpvf4tSMx6bBOgPfE+f52KwvXfScaU= -k8s.io/apiserver v0.20.4/go.mod h1:Mc80thBKOyy7tbvFtB4kJv1kbdD0eIH8k8vianJcbFM= -k8s.io/apiserver v0.20.6/go.mod h1:QIJXNt6i6JB+0YQRNcS0hdRHJlMhflFmsBDeSgT1r8Q= -k8s.io/apiserver v0.22.5/go.mod h1:s2WbtgZAkTKt679sYtSudEQrTGWUSQAPe6MupLnlmaQ= -k8s.io/client-go v0.20.1/go.mod h1:/zcHdt1TeWSd5HoUe6elJmHSQ6uLLgp4bIJHVEuy+/Y= -k8s.io/client-go v0.20.4/go.mod h1:LiMv25ND1gLUdBeYxBIwKpkSC5IsozMMmOOeSJboP+k= -k8s.io/client-go v0.20.6/go.mod h1:nNQMnOvEUEsOzRRFIIkdmYOjAZrC8bgq0ExboWSU1I0= -k8s.io/client-go v0.22.5/go.mod h1:cs6yf/61q2T1SdQL5Rdcjg9J1ElXSwbjSrW2vFImM4Y= -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/code-generator v0.19.7/go.mod h1:lwEq3YnLYb/7uVXLorOJfxg+cUu2oihFhHZ0n9NIla0= -k8s.io/component-base v0.20.1/go.mod h1:guxkoJnNoh8LNrbtiQOlyp2Y2XFCZQmrcg2n/DeYNLk= -k8s.io/component-base v0.20.4/go.mod h1:t4p9EdiagbVCJKrQ1RsA5/V4rFQNDfRlevJajlGwgjI= -k8s.io/component-base v0.20.6/go.mod h1:6f1MPBAeI+mvuts3sIdtpjljHWBQ2cIy38oBIWMYnrM= -k8s.io/component-base v0.22.5/go.mod h1:VK3I+TjuF9eaa+Ln67dKxhGar5ynVbwnGrUiNF4MqCI= -k8s.io/cri-api v0.17.3/go.mod h1:X1sbHmuXhwaHs9xxYffLqJogVsnI+f6cPRcgPel7ywM= -k8s.io/cri-api v0.20.1/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.4/go.mod h1:2JRbKt+BFLTjtrILYVqQK5jqhI+XNdF6UiGMgczeBCI= -k8s.io/cri-api v0.20.6/go.mod h1:ew44AjNXwyn1s0U4xCKGodU7J1HzBeZ1MpGrpa5r8Yc= -k8s.io/cri-api v0.23.1/go.mod h1:REJE3PSU0h/LOV1APBrupxrEJqnoxZC8KWzkBUHwrK4= -k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20200428234225-8167cfdcfc14/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= -k8s.io/gengo v0.0.0-20201113003025-83324d819ded/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/gengo v0.0.0-20210813121822-485abfe95c7c/go.mod h1:FiNAH4ZV3gBg2Kwh89tzAEV2be7d5xI0vBa/VySYy3E= -k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= -k8s.io/klog/v2 v2.0.0/go.mod h1:PBfzABfn139FHAV07az/IF9Wp1bkk3vpT2XSJ76fSDE= -k8s.io/klog/v2 v2.2.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.4.0/go.mod h1:Od+F08eJP+W3HUb4pSrPpgp9DGU4GzlpG/TmITuYh/Y= -k8s.io/klog/v2 v2.9.0/go.mod h1:hy9LJ/NvuK+iVyP4Ehqva4HxZG/oXyIS3n3Jmire4Ec= -k8s.io/klog/v2 v2.30.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.40.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.60.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/klog/v2 v2.70.0/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kube-openapi v0.0.0-20200805222855-6aeccd4b50c6/go.mod h1:UuqjUnNftUyPE5H64/qeyjQoUZhGpeFDVdxjTeEVN2o= -k8s.io/kube-openapi v0.0.0-20201113171705-d219536bb9fd/go.mod h1:WOJ3KddDSol4tAGcJo0Tvi+dK12EcqSLqcWsryKMpfM= -k8s.io/kube-openapi v0.0.0-20210421082810-95288971da7e/go.mod h1:vHXdDvt9+2spS2Rx9ql3I8tycm3H9FDfdUoIuKCefvw= -k8s.io/kube-openapi v0.0.0-20211109043538-20434351676c/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/kubernetes v1.13.0/go.mod h1:ocZa8+6APFNC2tX1DZASIbocyYT5jHzqFVsY5aoB7Jk= -k8s.io/utils v0.0.0-20201110183641-67b214c5f920/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210802155522-efc7438f0176/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210819203725-bdf08cb9a70a/go.mod h1:jPW/WVKK9YHAvNhRxK0md/EJ228hCsBRufyofKtW8HA= -k8s.io/utils v0.0.0-20210930125809-cb0fa318a74b/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= lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= -nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ= pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= -rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= -rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= -rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.14/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.15/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.0.22/go.mod h1:LEScyzhFmoF5pso/YSeBstl57mOzx9xlU9n85RGrDQg= -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/structured-merge-diff/v4 v4.0.1/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.2/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.0.3/go.mod h1:bJZC9H9iH24zzfZ/41RGcq60oK1F7G282QMXDPYydCw= -sigs.k8s.io/structured-merge-diff/v4 v4.1.2/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -sigs.k8s.io/structured-merge-diff/v4 v4.2.1/go.mod h1:j/nl6xW8vLS49O8YvXW1ocPhZawJtm+Yrr7PPRQ0Vg4= -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/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= -sourcegraph.com/sourcegraph/appdash v0.0.0-20190731080439-ebfcffb1b5c0/go.mod h1:hI742Nqp5OhwiqlzhgfbWU4mW4yO10fP+LoT9WOswdU= From 549412892c7854184070f6254bb0d30cf02d2752 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 16:27:04 +0200 Subject: [PATCH 02/17] Attempt to fix java build --- .gradle/build.gradle | 105 ++++++++++++++++++ .../gradle/wrapper/gradle-wrapper.jar | Bin .../gradle/wrapper/gradle-wrapper.properties | 0 {sdk/java => .gradle}/gradlew | 0 {sdk/java => .gradle}/gradlew.bat | 0 .gradle/settings.gradle | 14 +++ Makefile | 10 +- 7 files changed, 126 insertions(+), 3 deletions(-) create mode 100644 .gradle/build.gradle rename {sdk/java => .gradle}/gradle/wrapper/gradle-wrapper.jar (100%) rename {sdk/java => .gradle}/gradle/wrapper/gradle-wrapper.properties (100%) rename {sdk/java => .gradle}/gradlew (100%) rename {sdk/java => .gradle}/gradlew.bat (100%) create mode 100644 .gradle/settings.gradle diff --git a/.gradle/build.gradle b/.gradle/build.gradle new file mode 100644 index 00000000..ac6bbf9a --- /dev/null +++ b/.gradle/build.gradle @@ -0,0 +1,105 @@ +// *** WARNING: this file was generated. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** +plugins { + id("java-library") + id("maven-publish") +} + +var gprUser = project.findProperty("gpr.user") ?: System.getenv("GPR_USER") +var gprToken = project.findProperty("gpr.token") ?: System.getenv("GPR_TOKEN") + +java { + toolchain { + languageVersion = JavaLanguageVersion.of(11) + } +} + +compileJava { + options.fork = true + options.forkOptions.jvmArgs.addAll(["-Xmx4g"]) +} + +repositories { + maven { // The google mirror is less flaky than mavenCentral() + url("https://maven-central.storage-download.googleapis.com/maven2/") + } + mavenCentral() + mavenLocal() + if (gprUser) { + repositories { + maven { + url = uri("https://maven.pkg.github.com/pulumi/pulumi-java") + credentials { + username = gprUser + password = gprToken + } + } + } + } +} + +var pulumiJavaSdkVersion = System.getenv("PULUMI_JAVA_SDK_VERSION") ?: "0.0.1" + +dependencies { + implementation "com.pulumi:pulumi:$pulumiJavaSdkVersion" + implementation("com.google.code.findbugs:jsr305:3.0.2") + api("com.google.guava:guava:30.1-jre") // FIXME: do we really want to expose this dep? + api("com.google.code.gson:gson:2.8.6") // make sure we don't clash with grpc deps + + implementation("com.google.protobuf:protobuf-java:3.12.0") // make sure we don't clash with grpc deps + implementation("com.google.protobuf:protobuf-java-util:3.12.0") // make sure we don't clash with grpc deps + + def junitVersion = "5.7.2" + testImplementation("org.junit.jupiter:junit-jupiter-api:${junitVersion}") + testImplementation("org.junit.jupiter:junit-jupiter-params:${junitVersion}") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:${junitVersion}") + testImplementation("org.assertj:assertj-core:3.20.2") + testImplementation("org.mockito:mockito-core:3.12.4") +} + +test { + useJUnitPlatform() + testLogging { + showStandardStreams = true + exceptionFormat = 'full' + + // set options for log level LIFECYCLE + events = ['failed'] + + info { + events = ['failed', 'skipped'] + } + + debug { + events = ['started', 'skipped', 'failed'] + } + } +} + +publishing { + publications { + mavenJava(MavenPublication) { + groupId = 'com.pulumi' + artifactId = 'pulumiservice' + version = System.getenv("SDK_VERSION") ?: "0.0.0-unset" + from components.java + } + } + // from https://docs.github.com/en/actions/publishing-packages/publishing-java-packages-with-gradle + repositories { + maven { + name = "GitHubPackages" + url = "https://maven.pkg.github.com/pulumi/pulumi-pulumiservice" + credentials { + username = System.getenv("GITHUB_ACTOR") + password = System.getenv("GITHUB_TOKEN") + } + } + } +} + +javadoc { + if (JavaVersion.current().isJava9Compatible()) { + options.addBooleanOption('html5', true) + } +} diff --git a/sdk/java/gradle/wrapper/gradle-wrapper.jar b/.gradle/gradle/wrapper/gradle-wrapper.jar similarity index 100% rename from sdk/java/gradle/wrapper/gradle-wrapper.jar rename to .gradle/gradle/wrapper/gradle-wrapper.jar diff --git a/sdk/java/gradle/wrapper/gradle-wrapper.properties b/.gradle/gradle/wrapper/gradle-wrapper.properties similarity index 100% rename from sdk/java/gradle/wrapper/gradle-wrapper.properties rename to .gradle/gradle/wrapper/gradle-wrapper.properties diff --git a/sdk/java/gradlew b/.gradle/gradlew similarity index 100% rename from sdk/java/gradlew rename to .gradle/gradlew diff --git a/sdk/java/gradlew.bat b/.gradle/gradlew.bat similarity index 100% rename from sdk/java/gradlew.bat rename to .gradle/gradlew.bat diff --git a/.gradle/settings.gradle b/.gradle/settings.gradle new file mode 100644 index 00000000..acfd9061 --- /dev/null +++ b/.gradle/settings.gradle @@ -0,0 +1,14 @@ +// *** WARNING: this file was generated. *** +// *** Do not edit by hand unless you're certain you know what you are doing! *** + +pluginManagement { + repositories { + maven { // The google mirror is less flaky than mavenCentral() + url("https://maven-central.storage-download.googleapis.com/maven2/") + } + gradlePluginPortal() + } +} + +rootProject.name = "com.pulumi.pulumiservice" +include("lib") \ No newline at end of file diff --git a/Makefile b/Makefile index 067782a9..0971746a 100644 --- a/Makefile +++ b/Makefile @@ -77,16 +77,20 @@ python_sdk: gen_sdk_prerequisites rm ./bin/setup.py.bak && \ cd ./bin && python3 setup.py build sdist +GRADLE_DIR := $(WORKING_DIR)/.gradle +GRADLE := $(GRADLE_DIR)/gradlew java_sdk: RESOURCE_FOLDER := src/main/resources/com/pulumi/pulumiservice java_sdk: gen_sdk_prerequisites rm -rf sdk/java/{.gradle,build,src} $(PULUMI) package gen-sdk $(SCHEMA_FILE) --language java + cp $(GRADLE_DIR)/settings.gradle sdk/java/settings.gradle + cp $(GRADLE_DIR)/build.gradle sdk/java/build.gradle cd sdk/java && \ mkdir -p $(RESOURCE_FOLDER) && \ echo "$(VERSION)" > $(RESOURCE_FOLDER)/version.txt && \ echo '{"resource": true,"name": "pulumiservice","version": "$(VERSION)"}' > $(RESOURCE_FOLDER)/plugin.json && \ - PULUMI_JAVA_SDK_VERSION=0.10.0 ./gradlew --console=plain build && \ - PULUMI_JAVA_SDK_VERSION=0.10.0 ./gradlew --console=plain publishToMavenLocal + PULUMI_JAVA_SDK_VERSION=0.10.0 $(GRADLE) --console=plain build && \ + PULUMI_JAVA_SDK_VERSION=0.10.0 $(GRADLE) --console=plain publishToMavenLocal .PHONY: build build:: gen provider dotnet_sdk go_sdk nodejs_sdk python_sdk java_sdk @@ -121,7 +125,7 @@ install_nodejs_sdk:: yarn link --cwd $(WORKING_DIR)/sdk/nodejs/bin install_java_sdk:: - cd sdk/java && ./gradlew publishToMavenLocal + cd sdk/java && $(GRADLE) publishToMavenLocal # Keep the version of the pulumi binary used for code generation in sync with the version From a478291318b481f9af7cd220191ea0e25b187cbc Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 16:27:25 +0200 Subject: [PATCH 03/17] Regenerate java sdk --- .../src/main/java/com/pulumi/pulumiservice/AccessToken.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/AccessTokenArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPool.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/AgentPoolArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/Config.java | 2 +- .../main/java/com/pulumi/pulumiservice/DeploymentSettings.java | 2 +- .../java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/OrgAccessToken.java | 2 +- .../main/java/com/pulumi/pulumiservice/OrgAccessTokenArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/Provider.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/ProviderArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/StackTag.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/StackTagArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/Team.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/TeamAccessToken.java | 2 +- .../main/java/com/pulumi/pulumiservice/TeamAccessTokenArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/TeamArgs.java | 2 +- .../main/java/com/pulumi/pulumiservice/TeamStackPermission.java | 2 +- .../java/com/pulumi/pulumiservice/TeamStackPermissionArgs.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/Utilities.java | 2 +- sdk/java/src/main/java/com/pulumi/pulumiservice/Webhook.java | 2 +- .../src/main/java/com/pulumi/pulumiservice/WebhookArgs.java | 2 +- .../pulumi/pulumiservice/enums/TeamStackPermissionScope.java | 2 +- .../java/com/pulumi/pulumiservice/enums/WebhookFilters.java | 2 +- .../main/java/com/pulumi/pulumiservice/enums/WebhookFormat.java | 2 +- .../pulumi/pulumiservice/inputs/AWSOIDCConfigurationArgs.java | 2 +- .../pulumi/pulumiservice/inputs/AzureOIDCConfigurationArgs.java | 2 +- .../inputs/DeploymentSettingsExecutorContextArgs.java | 2 +- .../inputs/DeploymentSettingsGitAuthBasicAuthArgs.java | 2 +- .../inputs/DeploymentSettingsGitAuthSSHAuthArgs.java | 2 +- .../pulumiservice/inputs/DeploymentSettingsGitSourceArgs.java | 2 +- .../inputs/DeploymentSettingsGitSourceGitAuthArgs.java | 2 +- .../pulumiservice/inputs/DeploymentSettingsGithubArgs.java | 2 +- .../inputs/DeploymentSettingsOperationContextArgs.java | 2 +- .../inputs/DeploymentSettingsSourceContextArgs.java | 2 +- .../pulumi/pulumiservice/inputs/GCPOIDCConfigurationArgs.java | 2 +- .../pulumi/pulumiservice/inputs/OperationContextOIDCArgs.java | 2 +- .../pulumiservice/inputs/OperationContextOptionsArgs.java | 2 +- 38 files changed, 38 insertions(+), 38 deletions(-) diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessToken.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessToken.java index ca84b66a..f97e4b62 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessToken.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessToken.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessTokenArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessTokenArgs.java index 7aa3694e..a920aee4 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessTokenArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/AccessTokenArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPool.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPool.java index 7d1c4b86..f73559bf 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPool.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPool.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPoolArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPoolArgs.java index 7c22176c..b0954330 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPoolArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/AgentPoolArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/Config.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/Config.java index d7079df3..53260da1 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/Config.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/Config.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java index 83f261e1..7406459a 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettings.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java index e93bfaa4..f0470f5b 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/DeploymentSettingsArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessToken.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessToken.java index c94e7fab..a27cab8f 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessToken.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessToken.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessTokenArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessTokenArgs.java index 37f38630..fb7adfc4 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessTokenArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/OrgAccessTokenArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/Provider.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/Provider.java index 7ac8fbd0..56af1bf1 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/Provider.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/Provider.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/ProviderArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/ProviderArgs.java index f0cdb955..90edb549 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/ProviderArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/ProviderArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTag.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTag.java index 5e54a30a..cc544555 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTag.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTag.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTagArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTagArgs.java index d9227627..6c6ca1ff 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTagArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/StackTagArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/Team.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/Team.java index 88adef0f..8cbb9477 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/Team.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/Team.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessToken.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessToken.java index 83726cdb..fdd84b6f 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessToken.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessToken.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessTokenArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessTokenArgs.java index a43655b0..d80994a5 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessTokenArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamAccessTokenArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamArgs.java index 75fd5058..b56491b8 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermission.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermission.java index bdcee549..bac3c8d8 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermission.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermission.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermissionArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermissionArgs.java index 9827f466..d8a15752 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermissionArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/TeamStackPermissionArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/Utilities.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/Utilities.java index 12ac4c33..a5a5e698 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/Utilities.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/Utilities.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/Webhook.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/Webhook.java index ac195452..6b53774e 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/Webhook.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/Webhook.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/WebhookArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/WebhookArgs.java index d052e651..1f6d30f5 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/WebhookArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/WebhookArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/TeamStackPermissionScope.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/TeamStackPermissionScope.java index 1aa809de..c00685d6 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/TeamStackPermissionScope.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/TeamStackPermissionScope.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.enums; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFilters.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFilters.java index a2f8ec86..54e61286 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFilters.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFilters.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.enums; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFormat.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFormat.java index 5ba4dab7..7b582458 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFormat.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/enums/WebhookFormat.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.enums; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AWSOIDCConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AWSOIDCConfigurationArgs.java index 3ad8a509..908b85f2 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AWSOIDCConfigurationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AWSOIDCConfigurationArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AzureOIDCConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AzureOIDCConfigurationArgs.java index b24b3e57..52e73c2c 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AzureOIDCConfigurationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/AzureOIDCConfigurationArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsExecutorContextArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsExecutorContextArgs.java index e9786bd7..98707bfd 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsExecutorContextArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsExecutorContextArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthBasicAuthArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthBasicAuthArgs.java index fe6709a8..96898ed4 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthBasicAuthArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthBasicAuthArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthSSHAuthArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthSSHAuthArgs.java index 47ad6082..ad23d336 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthSSHAuthArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitAuthSSHAuthArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceArgs.java index f4302c9e..f8939a04 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceGitAuthArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceGitAuthArgs.java index 3ee0e639..89f4d87e 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceGitAuthArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGitSourceGitAuthArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGithubArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGithubArgs.java index e9109350..9152f98a 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGithubArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsGithubArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsOperationContextArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsOperationContextArgs.java index 31d2e044..b1cfb97d 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsOperationContextArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsOperationContextArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsSourceContextArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsSourceContextArgs.java index bb683c3d..b27fe01f 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsSourceContextArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/DeploymentSettingsSourceContextArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/GCPOIDCConfigurationArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/GCPOIDCConfigurationArgs.java index d4402c7d..091be948 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/GCPOIDCConfigurationArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/GCPOIDCConfigurationArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOIDCArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOIDCArgs.java index 9fe4ee67..8286c902 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOIDCArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOIDCArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; diff --git a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOptionsArgs.java b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOptionsArgs.java index 82c2c47e..03055ea4 100644 --- a/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOptionsArgs.java +++ b/sdk/java/src/main/java/com/pulumi/pulumiservice/inputs/OperationContextOptionsArgs.java @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumi-java-gen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** package com.pulumi.pulumiservice.inputs; From 3ae1c5f75d0c264b60c5f7d78b2df170ff56647d Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 16:27:49 +0200 Subject: [PATCH 04/17] Regenerate python sdk --- sdk/python/pulumi_pulumiservice/__init__.py | 2 +- sdk/python/pulumi_pulumiservice/_enums.py | 2 +- sdk/python/pulumi_pulumiservice/_inputs.py | 2 +- sdk/python/pulumi_pulumiservice/_utilities.py | 2 +- sdk/python/pulumi_pulumiservice/access_token.py | 2 +- sdk/python/pulumi_pulumiservice/agent_pool.py | 2 +- sdk/python/pulumi_pulumiservice/config/__init__.py | 2 +- sdk/python/pulumi_pulumiservice/config/__init__.pyi | 2 +- sdk/python/pulumi_pulumiservice/config/vars.py | 2 +- sdk/python/pulumi_pulumiservice/deployment_settings.py | 2 +- sdk/python/pulumi_pulumiservice/org_access_token.py | 2 +- sdk/python/pulumi_pulumiservice/provider.py | 2 +- sdk/python/pulumi_pulumiservice/stack_tag.py | 2 +- sdk/python/pulumi_pulumiservice/team.py | 2 +- sdk/python/pulumi_pulumiservice/team_access_token.py | 2 +- sdk/python/pulumi_pulumiservice/team_stack_permission.py | 2 +- sdk/python/pulumi_pulumiservice/webhook.py | 2 +- sdk/python/setup.py | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/sdk/python/pulumi_pulumiservice/__init__.py b/sdk/python/pulumi_pulumiservice/__init__.py index bc072b5b..319d69e7 100644 --- a/sdk/python/pulumi_pulumiservice/__init__.py +++ b/sdk/python/pulumi_pulumiservice/__init__.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** from . import _utilities diff --git a/sdk/python/pulumi_pulumiservice/_enums.py b/sdk/python/pulumi_pulumiservice/_enums.py index 55f64e1b..2d8b6673 100644 --- a/sdk/python/pulumi_pulumiservice/_enums.py +++ b/sdk/python/pulumi_pulumiservice/_enums.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** from enum import Enum diff --git a/sdk/python/pulumi_pulumiservice/_inputs.py b/sdk/python/pulumi_pulumiservice/_inputs.py index b25a678b..63563317 100644 --- a/sdk/python/pulumi_pulumiservice/_inputs.py +++ b/sdk/python/pulumi_pulumiservice/_inputs.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/_utilities.py b/sdk/python/pulumi_pulumiservice/_utilities.py index 9cea4367..0eb00464 100644 --- a/sdk/python/pulumi_pulumiservice/_utilities.py +++ b/sdk/python/pulumi_pulumiservice/_utilities.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** diff --git a/sdk/python/pulumi_pulumiservice/access_token.py b/sdk/python/pulumi_pulumiservice/access_token.py index 63432e38..f8e22547 100644 --- a/sdk/python/pulumi_pulumiservice/access_token.py +++ b/sdk/python/pulumi_pulumiservice/access_token.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/agent_pool.py b/sdk/python/pulumi_pulumiservice/agent_pool.py index 5bcb473d..4bff5a46 100644 --- a/sdk/python/pulumi_pulumiservice/agent_pool.py +++ b/sdk/python/pulumi_pulumiservice/agent_pool.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/config/__init__.py b/sdk/python/pulumi_pulumiservice/config/__init__.py index 0c256dff..b8c2b21b 100644 --- a/sdk/python/pulumi_pulumiservice/config/__init__.py +++ b/sdk/python/pulumi_pulumiservice/config/__init__.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import sys diff --git a/sdk/python/pulumi_pulumiservice/config/__init__.pyi b/sdk/python/pulumi_pulumiservice/config/__init__.pyi index 533536e4..35cce8d5 100644 --- a/sdk/python/pulumi_pulumiservice/config/__init__.pyi +++ b/sdk/python/pulumi_pulumiservice/config/__init__.pyi @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/config/vars.py b/sdk/python/pulumi_pulumiservice/config/vars.py index 6e7982fb..31e88160 100644 --- a/sdk/python/pulumi_pulumiservice/config/vars.py +++ b/sdk/python/pulumi_pulumiservice/config/vars.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/deployment_settings.py b/sdk/python/pulumi_pulumiservice/deployment_settings.py index 76b4bbbb..a98e6599 100644 --- a/sdk/python/pulumi_pulumiservice/deployment_settings.py +++ b/sdk/python/pulumi_pulumiservice/deployment_settings.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/org_access_token.py b/sdk/python/pulumi_pulumiservice/org_access_token.py index 01caa6b3..e64e9e7b 100644 --- a/sdk/python/pulumi_pulumiservice/org_access_token.py +++ b/sdk/python/pulumi_pulumiservice/org_access_token.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/provider.py b/sdk/python/pulumi_pulumiservice/provider.py index 2d46b617..f451142e 100644 --- a/sdk/python/pulumi_pulumiservice/provider.py +++ b/sdk/python/pulumi_pulumiservice/provider.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/stack_tag.py b/sdk/python/pulumi_pulumiservice/stack_tag.py index f8030f55..7fa329f4 100644 --- a/sdk/python/pulumi_pulumiservice/stack_tag.py +++ b/sdk/python/pulumi_pulumiservice/stack_tag.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/team.py b/sdk/python/pulumi_pulumiservice/team.py index 8d544241..4c79bbcb 100644 --- a/sdk/python/pulumi_pulumiservice/team.py +++ b/sdk/python/pulumi_pulumiservice/team.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/team_access_token.py b/sdk/python/pulumi_pulumiservice/team_access_token.py index ebc371ff..f6096cb9 100644 --- a/sdk/python/pulumi_pulumiservice/team_access_token.py +++ b/sdk/python/pulumi_pulumiservice/team_access_token.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/team_stack_permission.py b/sdk/python/pulumi_pulumiservice/team_stack_permission.py index c523e9a5..3d7e64ba 100644 --- a/sdk/python/pulumi_pulumiservice/team_stack_permission.py +++ b/sdk/python/pulumi_pulumiservice/team_stack_permission.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/pulumi_pulumiservice/webhook.py b/sdk/python/pulumi_pulumiservice/webhook.py index 4629fd6b..4cb2eb04 100644 --- a/sdk/python/pulumi_pulumiservice/webhook.py +++ b/sdk/python/pulumi_pulumiservice/webhook.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import copy diff --git a/sdk/python/setup.py b/sdk/python/setup.py index b9bcf40e..20124f23 100644 --- a/sdk/python/setup.py +++ b/sdk/python/setup.py @@ -1,5 +1,5 @@ # coding=utf-8 -# *** WARNING: this file was generated by pulumigen. *** +# *** WARNING: this file was generated by pulumi-language-python. *** # *** Do not edit by hand unless you're certain you know what you are doing! *** import errno From 77ebcd634420f7d11d573fa422135c83e5a67ea1 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 16:28:12 +0200 Subject: [PATCH 05/17] Regenerate nodejs sdk --- sdk/nodejs/accessToken.ts | 2 +- sdk/nodejs/agentPool.ts | 2 +- sdk/nodejs/config/index.ts | 2 +- sdk/nodejs/config/vars.ts | 2 +- sdk/nodejs/deploymentSettings.ts | 2 +- sdk/nodejs/index.ts | 2 +- sdk/nodejs/orgAccessToken.ts | 2 +- sdk/nodejs/provider.ts | 2 +- sdk/nodejs/stackTag.ts | 2 +- sdk/nodejs/team.ts | 2 +- sdk/nodejs/teamAccessToken.ts | 2 +- sdk/nodejs/teamStackPermission.ts | 2 +- sdk/nodejs/types/enums/index.ts | 2 +- sdk/nodejs/types/index.ts | 2 +- sdk/nodejs/types/input.ts | 2 +- sdk/nodejs/types/output.ts | 2 +- sdk/nodejs/utilities.ts | 2 +- sdk/nodejs/webhook.ts | 2 +- 18 files changed, 18 insertions(+), 18 deletions(-) diff --git a/sdk/nodejs/accessToken.ts b/sdk/nodejs/accessToken.ts index a5608d27..86254ec8 100644 --- a/sdk/nodejs/accessToken.ts +++ b/sdk/nodejs/accessToken.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/agentPool.ts b/sdk/nodejs/agentPool.ts index e413f1ff..835c0201 100644 --- a/sdk/nodejs/agentPool.ts +++ b/sdk/nodejs/agentPool.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/config/index.ts b/sdk/nodejs/config/index.ts index baf1b086..3fbadc82 100644 --- a/sdk/nodejs/config/index.ts +++ b/sdk/nodejs/config/index.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** // Export members: diff --git a/sdk/nodejs/config/vars.ts b/sdk/nodejs/config/vars.ts index 9c923a26..3e69beef 100644 --- a/sdk/nodejs/config/vars.ts +++ b/sdk/nodejs/config/vars.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/deploymentSettings.ts b/sdk/nodejs/deploymentSettings.ts index 09c87027..ab5f82e8 100644 --- a/sdk/nodejs/deploymentSettings.ts +++ b/sdk/nodejs/deploymentSettings.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/index.ts b/sdk/nodejs/index.ts index 4d722d9c..bb9d112c 100644 --- a/sdk/nodejs/index.ts +++ b/sdk/nodejs/index.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/orgAccessToken.ts b/sdk/nodejs/orgAccessToken.ts index 87be4dda..00adad3e 100644 --- a/sdk/nodejs/orgAccessToken.ts +++ b/sdk/nodejs/orgAccessToken.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/provider.ts b/sdk/nodejs/provider.ts index 8004d3cc..0e97ef2f 100644 --- a/sdk/nodejs/provider.ts +++ b/sdk/nodejs/provider.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/stackTag.ts b/sdk/nodejs/stackTag.ts index 85d8ea50..4826650c 100644 --- a/sdk/nodejs/stackTag.ts +++ b/sdk/nodejs/stackTag.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/team.ts b/sdk/nodejs/team.ts index 4f6a649c..255937cd 100644 --- a/sdk/nodejs/team.ts +++ b/sdk/nodejs/team.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/teamAccessToken.ts b/sdk/nodejs/teamAccessToken.ts index 0b53c0c8..cb25dcea 100644 --- a/sdk/nodejs/teamAccessToken.ts +++ b/sdk/nodejs/teamAccessToken.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/teamStackPermission.ts b/sdk/nodejs/teamStackPermission.ts index 68a8a461..b1417766 100644 --- a/sdk/nodejs/teamStackPermission.ts +++ b/sdk/nodejs/teamStackPermission.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/types/enums/index.ts b/sdk/nodejs/types/enums/index.ts index 00cb39e7..5cadaf22 100644 --- a/sdk/nodejs/types/enums/index.ts +++ b/sdk/nodejs/types/enums/index.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** diff --git a/sdk/nodejs/types/index.ts b/sdk/nodejs/types/index.ts index b57d3a57..08336533 100644 --- a/sdk/nodejs/types/index.ts +++ b/sdk/nodejs/types/index.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as utilities from "../utilities"; diff --git a/sdk/nodejs/types/input.ts b/sdk/nodejs/types/input.ts index 989a872d..40c5879e 100644 --- a/sdk/nodejs/types/input.ts +++ b/sdk/nodejs/types/input.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/types/output.ts b/sdk/nodejs/types/output.ts index 0a76ea17..bf82b4f7 100644 --- a/sdk/nodejs/types/output.ts +++ b/sdk/nodejs/types/output.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; diff --git a/sdk/nodejs/utilities.ts b/sdk/nodejs/utilities.ts index 514cbe71..fb0d823c 100644 --- a/sdk/nodejs/utilities.ts +++ b/sdk/nodejs/utilities.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** diff --git a/sdk/nodejs/webhook.ts b/sdk/nodejs/webhook.ts index 4af0c904..8b8f26ae 100644 --- a/sdk/nodejs/webhook.ts +++ b/sdk/nodejs/webhook.ts @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi-language-nodejs. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** import * as pulumi from "@pulumi/pulumi"; From 304fe8b3d350d643673703294d4b85825de8321d Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 16:28:29 +0200 Subject: [PATCH 06/17] Regenerate dotnet SDK --- sdk/dotnet/AccessToken.cs | 2 +- sdk/dotnet/AgentPool.cs | 2 +- sdk/dotnet/Config/Config.cs | 2 +- sdk/dotnet/DeploymentSettings.cs | 2 +- sdk/dotnet/Enums.cs | 2 +- sdk/dotnet/Inputs/AWSOIDCConfigurationArgs.cs | 2 +- sdk/dotnet/Inputs/AzureOIDCConfigurationArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsExecutorContextArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsGitAuthBasicAuthArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsGitAuthSSHAuthArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsGitSourceArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsGitSourceGitAuthArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsGithubArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsOperationContextArgs.cs | 2 +- sdk/dotnet/Inputs/DeploymentSettingsSourceContextArgs.cs | 2 +- sdk/dotnet/Inputs/GCPOIDCConfigurationArgs.cs | 2 +- sdk/dotnet/Inputs/OperationContextOIDCArgs.cs | 2 +- sdk/dotnet/Inputs/OperationContextOptionsArgs.cs | 2 +- sdk/dotnet/OrgAccessToken.cs | 2 +- sdk/dotnet/Provider.cs | 2 +- sdk/dotnet/StackTag.cs | 2 +- sdk/dotnet/Team.cs | 2 +- sdk/dotnet/TeamAccessToken.cs | 2 +- sdk/dotnet/TeamStackPermission.cs | 2 +- sdk/dotnet/Utilities.cs | 2 +- sdk/dotnet/Webhook.cs | 2 +- 26 files changed, 26 insertions(+), 26 deletions(-) diff --git a/sdk/dotnet/AccessToken.cs b/sdk/dotnet/AccessToken.cs index 365b4948..112d2d61 100644 --- a/sdk/dotnet/AccessToken.cs +++ b/sdk/dotnet/AccessToken.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/AgentPool.cs b/sdk/dotnet/AgentPool.cs index 797b35aa..8b3c97a1 100644 --- a/sdk/dotnet/AgentPool.cs +++ b/sdk/dotnet/AgentPool.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Config/Config.cs b/sdk/dotnet/Config/Config.cs index 50c1eaaa..d7d36976 100644 --- a/sdk/dotnet/Config/Config.cs +++ b/sdk/dotnet/Config/Config.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/DeploymentSettings.cs b/sdk/dotnet/DeploymentSettings.cs index 55fb0a07..1cdf0af8 100644 --- a/sdk/dotnet/DeploymentSettings.cs +++ b/sdk/dotnet/DeploymentSettings.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Enums.cs b/sdk/dotnet/Enums.cs index b0cd2fd4..4ed5f338 100644 --- a/sdk/dotnet/Enums.cs +++ b/sdk/dotnet/Enums.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/AWSOIDCConfigurationArgs.cs b/sdk/dotnet/Inputs/AWSOIDCConfigurationArgs.cs index 73433b81..edd64458 100644 --- a/sdk/dotnet/Inputs/AWSOIDCConfigurationArgs.cs +++ b/sdk/dotnet/Inputs/AWSOIDCConfigurationArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/AzureOIDCConfigurationArgs.cs b/sdk/dotnet/Inputs/AzureOIDCConfigurationArgs.cs index 62a52e83..03babc1a 100644 --- a/sdk/dotnet/Inputs/AzureOIDCConfigurationArgs.cs +++ b/sdk/dotnet/Inputs/AzureOIDCConfigurationArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsExecutorContextArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsExecutorContextArgs.cs index 604b1986..16c07382 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsExecutorContextArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsExecutorContextArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsGitAuthBasicAuthArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsGitAuthBasicAuthArgs.cs index a52eaaa9..a651550a 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsGitAuthBasicAuthArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsGitAuthBasicAuthArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsGitAuthSSHAuthArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsGitAuthSSHAuthArgs.cs index ad33adfa..cbaf8a3b 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsGitAuthSSHAuthArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsGitAuthSSHAuthArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsGitSourceArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsGitSourceArgs.cs index 379bb4bc..09ea9c51 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsGitSourceArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsGitSourceArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsGitSourceGitAuthArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsGitSourceGitAuthArgs.cs index b1e8500e..38f45f0f 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsGitSourceGitAuthArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsGitSourceGitAuthArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsGithubArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsGithubArgs.cs index a1d30513..07065b96 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsGithubArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsGithubArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsOperationContextArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsOperationContextArgs.cs index 8f097352..074cf87d 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsOperationContextArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsOperationContextArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/DeploymentSettingsSourceContextArgs.cs b/sdk/dotnet/Inputs/DeploymentSettingsSourceContextArgs.cs index 489c4074..aaaa3977 100644 --- a/sdk/dotnet/Inputs/DeploymentSettingsSourceContextArgs.cs +++ b/sdk/dotnet/Inputs/DeploymentSettingsSourceContextArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/GCPOIDCConfigurationArgs.cs b/sdk/dotnet/Inputs/GCPOIDCConfigurationArgs.cs index 1bc9106d..50b71a26 100644 --- a/sdk/dotnet/Inputs/GCPOIDCConfigurationArgs.cs +++ b/sdk/dotnet/Inputs/GCPOIDCConfigurationArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/OperationContextOIDCArgs.cs b/sdk/dotnet/Inputs/OperationContextOIDCArgs.cs index 24248167..074e5f0e 100644 --- a/sdk/dotnet/Inputs/OperationContextOIDCArgs.cs +++ b/sdk/dotnet/Inputs/OperationContextOIDCArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Inputs/OperationContextOptionsArgs.cs b/sdk/dotnet/Inputs/OperationContextOptionsArgs.cs index c80e0e06..5bf17a47 100644 --- a/sdk/dotnet/Inputs/OperationContextOptionsArgs.cs +++ b/sdk/dotnet/Inputs/OperationContextOptionsArgs.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/OrgAccessToken.cs b/sdk/dotnet/OrgAccessToken.cs index 6c224372..6d739725 100644 --- a/sdk/dotnet/OrgAccessToken.cs +++ b/sdk/dotnet/OrgAccessToken.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Provider.cs b/sdk/dotnet/Provider.cs index 7c78eb24..9a7a465c 100644 --- a/sdk/dotnet/Provider.cs +++ b/sdk/dotnet/Provider.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/StackTag.cs b/sdk/dotnet/StackTag.cs index 37b9ec9d..697b74b9 100644 --- a/sdk/dotnet/StackTag.cs +++ b/sdk/dotnet/StackTag.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Team.cs b/sdk/dotnet/Team.cs index 9ff72640..130b3e29 100644 --- a/sdk/dotnet/Team.cs +++ b/sdk/dotnet/Team.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/TeamAccessToken.cs b/sdk/dotnet/TeamAccessToken.cs index 88b9b237..5a36970c 100644 --- a/sdk/dotnet/TeamAccessToken.cs +++ b/sdk/dotnet/TeamAccessToken.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/TeamStackPermission.cs b/sdk/dotnet/TeamStackPermission.cs index e1feea75..ebb17296 100644 --- a/sdk/dotnet/TeamStackPermission.cs +++ b/sdk/dotnet/TeamStackPermission.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; diff --git a/sdk/dotnet/Utilities.cs b/sdk/dotnet/Utilities.cs index f5f76305..dbdd589a 100644 --- a/sdk/dotnet/Utilities.cs +++ b/sdk/dotnet/Utilities.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** namespace Pulumi.PulumiService diff --git a/sdk/dotnet/Webhook.cs b/sdk/dotnet/Webhook.cs index 3b1f0d69..a53b164c 100644 --- a/sdk/dotnet/Webhook.cs +++ b/sdk/dotnet/Webhook.cs @@ -1,4 +1,4 @@ -// *** WARNING: this file was generated by pulumigen. *** +// *** WARNING: this file was generated by pulumi. *** // *** Do not edit by hand unless you're certain you know what you are doing! *** using System; From fbcee2758693561ad9499acea4b87068f43340e9 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 16:28:54 +0200 Subject: [PATCH 07/17] Regenerate go SDK --- sdk/go/pulumiservice/accessToken.go | 2 +- sdk/go/pulumiservice/agentPool.go | 2 +- sdk/go/pulumiservice/config/config.go | 2 +- sdk/go/pulumiservice/deploymentSettings.go | 2 +- sdk/go/pulumiservice/init.go | 2 +- sdk/go/pulumiservice/internal/pulumiUtilities.go | 2 +- sdk/go/pulumiservice/internal/pulumiVersion.go | 2 +- sdk/go/pulumiservice/orgAccessToken.go | 2 +- sdk/go/pulumiservice/provider.go | 2 +- sdk/go/pulumiservice/pulumiEnums.go | 2 +- sdk/go/pulumiservice/pulumiTypes.go | 2 +- sdk/go/pulumiservice/stackTag.go | 2 +- sdk/go/pulumiservice/team.go | 2 +- sdk/go/pulumiservice/teamAccessToken.go | 2 +- sdk/go/pulumiservice/teamStackPermission.go | 2 +- sdk/go/pulumiservice/webhook.go | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/sdk/go/pulumiservice/accessToken.go b/sdk/go/pulumiservice/accessToken.go index 6e1a2617..7dbd67e3 100644 --- a/sdk/go/pulumiservice/accessToken.go +++ b/sdk/go/pulumiservice/accessToken.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/agentPool.go b/sdk/go/pulumiservice/agentPool.go index fdcc1c44..29a8886d 100644 --- a/sdk/go/pulumiservice/agentPool.go +++ b/sdk/go/pulumiservice/agentPool.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/config/config.go b/sdk/go/pulumiservice/config/config.go index ad64d413..40f9a460 100644 --- a/sdk/go/pulumiservice/config/config.go +++ b/sdk/go/pulumiservice/config/config.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package config diff --git a/sdk/go/pulumiservice/deploymentSettings.go b/sdk/go/pulumiservice/deploymentSettings.go index 8bd7a195..5c97ff83 100644 --- a/sdk/go/pulumiservice/deploymentSettings.go +++ b/sdk/go/pulumiservice/deploymentSettings.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/init.go b/sdk/go/pulumiservice/init.go index 3ca8f268..b3745ab4 100644 --- a/sdk/go/pulumiservice/init.go +++ b/sdk/go/pulumiservice/init.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/internal/pulumiUtilities.go b/sdk/go/pulumiservice/internal/pulumiUtilities.go index 0154f432..77538ae0 100644 --- a/sdk/go/pulumiservice/internal/pulumiUtilities.go +++ b/sdk/go/pulumiservice/internal/pulumiUtilities.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package internal diff --git a/sdk/go/pulumiservice/internal/pulumiVersion.go b/sdk/go/pulumiservice/internal/pulumiVersion.go index 1b7d7716..4ad7cb87 100644 --- a/sdk/go/pulumiservice/internal/pulumiVersion.go +++ b/sdk/go/pulumiservice/internal/pulumiVersion.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package internal diff --git a/sdk/go/pulumiservice/orgAccessToken.go b/sdk/go/pulumiservice/orgAccessToken.go index a1614abe..51c825f8 100644 --- a/sdk/go/pulumiservice/orgAccessToken.go +++ b/sdk/go/pulumiservice/orgAccessToken.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/provider.go b/sdk/go/pulumiservice/provider.go index d508e1ec..fe38f084 100644 --- a/sdk/go/pulumiservice/provider.go +++ b/sdk/go/pulumiservice/provider.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/pulumiEnums.go b/sdk/go/pulumiservice/pulumiEnums.go index 2a961fe3..d839d321 100644 --- a/sdk/go/pulumiservice/pulumiEnums.go +++ b/sdk/go/pulumiservice/pulumiEnums.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/pulumiTypes.go b/sdk/go/pulumiservice/pulumiTypes.go index 2f05bf5d..048bab39 100644 --- a/sdk/go/pulumiservice/pulumiTypes.go +++ b/sdk/go/pulumiservice/pulumiTypes.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/stackTag.go b/sdk/go/pulumiservice/stackTag.go index 52aa09a0..08c5896f 100644 --- a/sdk/go/pulumiservice/stackTag.go +++ b/sdk/go/pulumiservice/stackTag.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/team.go b/sdk/go/pulumiservice/team.go index b83d0693..7006b2ed 100644 --- a/sdk/go/pulumiservice/team.go +++ b/sdk/go/pulumiservice/team.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/teamAccessToken.go b/sdk/go/pulumiservice/teamAccessToken.go index d777f2e2..0dcc6aaa 100644 --- a/sdk/go/pulumiservice/teamAccessToken.go +++ b/sdk/go/pulumiservice/teamAccessToken.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/teamStackPermission.go b/sdk/go/pulumiservice/teamStackPermission.go index af7c3f56..94d69ee8 100644 --- a/sdk/go/pulumiservice/teamStackPermission.go +++ b/sdk/go/pulumiservice/teamStackPermission.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice diff --git a/sdk/go/pulumiservice/webhook.go b/sdk/go/pulumiservice/webhook.go index cd1af2e5..272fce8b 100644 --- a/sdk/go/pulumiservice/webhook.go +++ b/sdk/go/pulumiservice/webhook.go @@ -1,4 +1,4 @@ -// Code generated by pulumigen DO NOT EDIT. +// Code generated by pulumi-language-go DO NOT EDIT. // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! *** package pulumiservice From 3c86f7ee377078b9b2fa5ca3b8f1e87bfa3c3871 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 17:23:12 +0200 Subject: [PATCH 08/17] Allow variable stack names I'm seeing test failures from canceled jobs leaking stacks. An immediate fix is to allow stack names to float. --- examples/examples_yaml_test.go | 22 ++++++------------- examples/yaml-stack-tags/Pulumi.yaml | 2 +- .../yaml-team-stack-permissions/Pulumi.yaml | 2 +- 3 files changed, 9 insertions(+), 17 deletions(-) diff --git a/examples/examples_yaml_test.go b/examples/examples_yaml_test.go index dc9135de..81687f89 100644 --- a/examples/examples_yaml_test.go +++ b/examples/examples_yaml_test.go @@ -13,6 +13,7 @@ import ( "github.com/pulumi/pulumi/pkg/v3/engine" "github.com/pulumi/pulumi/pkg/v3/testing/integration" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "gopkg.in/yaml.v2" ) @@ -128,24 +129,20 @@ func TestYamlStackTagsExample(t *testing.T) { // Set up tmpdir with a Pulumi.yml with no resources // mimicking the deletion of resource - newProgram := YamlProgram{ + tmpdir := writePulumiYaml(t, YamlProgram{ Name: "yaml-stack-tags-example", Runtime: "yaml", Description: "A minimal Pulumi YAML program", - } - - tmpdir := writePulumiYaml(t, newProgram) + Runtime: "yaml", + }) - cwd, _ := os.Getwd() + cwd, err := os.Getwd() + require.NoError(t, err) integration.ProgramTest(t, &integration.ProgramTestOptions{ Quick: true, SkipRefresh: true, Dir: path.Join(cwd, ".", "yaml-stack-tags"), - StackName: "test-stack", - PrepareProject: func(_ *engine.Projinfo) error { - return nil - }, EditDirs: []integration.EditDir{ { Dir: tmpdir, @@ -220,12 +217,7 @@ func TestYamlTeamStackPermissionsExample(t *testing.T) { cwd, _ := os.Getwd() integration.ProgramTest(t, &integration.ProgramTestOptions{ Quick: true, - // Name is specified in yaml-team-stack-permissions/Pulumi.yaml, so this has to be consistent - StackName: "dev", - Dir: path.Join(cwd, ".", "yaml-team-stack-permissions"), - PrepareProject: func(_ *engine.Projinfo) error { - return nil - }, + Dir: path.Join(cwd, ".", "yaml-team-stack-permissions"), }) } diff --git a/examples/yaml-stack-tags/Pulumi.yaml b/examples/yaml-stack-tags/Pulumi.yaml index abf9e114..572a23f4 100644 --- a/examples/yaml-stack-tags/Pulumi.yaml +++ b/examples/yaml-stack-tags/Pulumi.yaml @@ -7,6 +7,6 @@ resources: properties: organization: service-provider-test-org project: yaml-stack-tags-example - stack: test-stack + stack: ${pulumi.stack} name: testing-tag value: bar diff --git a/examples/yaml-team-stack-permissions/Pulumi.yaml b/examples/yaml-team-stack-permissions/Pulumi.yaml index 2822ab24..8c2492e1 100644 --- a/examples/yaml-team-stack-permissions/Pulumi.yaml +++ b/examples/yaml-team-stack-permissions/Pulumi.yaml @@ -24,7 +24,7 @@ resources: properties: organization: ${team.organizationName} project: yaml-team-stack-example - stack: dev + stack: ${pulumi.stack} team: ${team.name} # edit access permission: 102 From 4f654ef6ac71aa5e3ed08aa510accd25823aab74 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 17:52:39 +0200 Subject: [PATCH 09/17] Migrate Config to the Pulumi Go Provider --- provider/go.mod | 3 ++- provider/go.sum | 10 ++++--- provider/pkg/provider/config.go | 46 +++++++++++++-------------------- 3 files changed, 26 insertions(+), 33 deletions(-) diff --git a/provider/go.mod b/provider/go.mod index 7f3384ad..e2a97d5c 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -3,6 +3,7 @@ module github.com/pulumi/pulumi-pulumiservice/provider go 1.21.0 require ( + github.com/pulumi/pulumi-go-provider v0.15.0 github.com/pulumi/pulumi/pkg/v3 v3.112.0 github.com/pulumi/pulumi/sdk/v3 v3.112.0 github.com/stretchr/testify v1.9.0 @@ -84,7 +85,7 @@ require ( github.com/uber/jaeger-lib v2.4.1+incompatible // indirect github.com/xanzy/ssh-agent v0.3.3 // indirect github.com/zclconf/go-cty v1.13.2 // indirect - go.uber.org/atomic v1.9.0 // indirect + go.uber.org/atomic v1.10.0 // indirect golang.org/x/crypto v0.21.0 // indirect golang.org/x/mod v0.14.0 // indirect golang.org/x/net v0.22.0 // indirect diff --git a/provider/go.sum b/provider/go.sum index dc7a16fc..14c59225 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -158,6 +158,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= +github.com/pulumi/pulumi-go-provider v0.15.0 h1:KEFQhAVHMCbu9NPNe584mtlgZXaqnuDpcWarUcGbQ5w= +github.com/pulumi/pulumi-go-provider v0.15.0/go.mod h1:q3gz5HmArwNALbFihAt1vpg/1xpZlAKjB6A6uMsTgfw= github.com/pulumi/pulumi/pkg/v3 v3.112.0 h1:vhoM6sx1eegJntIeUZENtck3VeMtK1zBiQ2E3EPOnHw= github.com/pulumi/pulumi/pkg/v3 v3.112.0/go.mod h1:GQhNr0v5E8TACF8j0p6UQqyr7mZreUpoMfVjLeu6eY0= github.com/pulumi/pulumi/sdk/v3 v3.112.0 h1:cq2x5N6iuYhSLdeOdRs+LIq0EneB0Cb54WOlD/VaX3E= @@ -211,8 +213,8 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/zclconf/go-cty v1.13.2 h1:4GvrUxe/QUDYuJKAav4EYqdM47/kZa672LwmXFmEKT0= github.com/zclconf/go-cty v1.13.2/go.mod h1:YKQzy/7pZ7iq2jNFzy5go57xdxdWoLLpaEp4u238AE0= -go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= -go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= +go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= @@ -327,5 +329,5 @@ gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= lukechampine.com/frand v1.4.2 h1:RzFIpOvkMXuPMBb9maa4ND4wjBn71E1Jpf8BzJHMaVw= lukechampine.com/frand v1.4.2/go.mod h1:4S/TM2ZgrKejMcKMbeLjISpJMO+/eZ1zu3vYX9dtj3s= -pgregory.net/rapid v0.6.1 h1:4eyrDxyht86tT4Ztm+kvlyNBLIk071gR+ZQdhphc9dQ= -pgregory.net/rapid v0.6.1/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= +pgregory.net/rapid v1.1.0 h1:CMa0sjHSru3puNx+J0MIAuiiEV4N0qj8/cMWGBBCsjw= +pgregory.net/rapid v1.1.0/go.mod h1:PY5XlDGj0+V1FCq0o192FdRhpKHGTRIWBgqjDBTrq04= diff --git a/provider/pkg/provider/config.go b/provider/pkg/provider/config.go index c1ea13b2..6a551fa2 100644 --- a/provider/pkg/provider/config.go +++ b/provider/pkg/provider/config.go @@ -2,56 +2,46 @@ package provider import ( "fmt" - "os" + "github.com/pulumi/pulumi-go-provider/infer" "github.com/pulumi/pulumi/sdk/v3/go/common/workspace" ) const ( EnvVarPulumiAccessToken = "PULUMI_ACCESS_TOKEN" - EnvVarPulumiBackendUrl = "PULUMI_BACKEND_URL" + EnvVarPulumiBackendUrl = "PULUMI_BACKEND_URL" ) var ErrAccessTokenNotFound = fmt.Errorf("pulumi access token not found") -type PulumiServiceConfig struct { - Config map[string]string +type Config struct { + AccessToken string `pulumi:"accessToken,optional"` + ServiceURL string `pulumi:"serviceURL,optional"` } -func (pc *PulumiServiceConfig) getConfig(configName, envName string) string { - if val, ok := pc.Config[configName]; ok { - return val - } +var _ infer.Annotated = (*Config)(nil) - return os.Getenv(envName) -} +func (c *Config) Annotate(a infer.Annotator) { + a.Describe(&c.AccessToken, "Access Token to authenticate with Pulumi Cloud.") + a.SetDefault(nil, EnvVarPulumiAccessToken) -func (pc *PulumiServiceConfig) getPulumiAccessToken() (*string, error) { - token := pc.getConfig("accessToken", EnvVarPulumiAccessToken) + a.Describe(&c.ServiceURL, "The service URL used to reach Pulumi Cloud.") + a.SetDefault("https://api.pulumi.com", EnvVarPulumiBackendUrl) +} - if len(token) > 0 { +func (c *Config) getPulumiAccessToken() (string, error) { + if len(c.AccessToken) > 0 { // found the token - return &token, nil + return c.AccessToken, nil } // attempt to grab credentials directly from the pulumi configuration on the machine creds, err := workspace.GetStoredCredentials() if err != nil { - return nil, ErrAccessTokenNotFound + return "", ErrAccessTokenNotFound } if token, ok := creds.AccessTokens[creds.Current]; ok { - return &token, nil - } - return nil, ErrAccessTokenNotFound -} - -func (pc *PulumiServiceConfig) getPulumiServiceUrl() (*string, error) { - url := pc.getConfig("apiUrl", EnvVarPulumiBackendUrl) - baseurl := "https://api.pulumi.com" - - if len(url) == 0 { - url = baseurl + return token, nil } - - return &url, nil + return "", ErrAccessTokenNotFound } From c7adc7576f386aefedd6be33ad3c4da7f8b2878e Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 19:52:34 +0200 Subject: [PATCH 10/17] Finish config migration --- provider/pkg/provider/access_token.go | 3 - provider/pkg/provider/agent_pool.go | 3 - provider/pkg/provider/config.go | 46 +++- provider/pkg/provider/deployment_settings.go | 2 - provider/pkg/provider/org_access_token.go | 3 - provider/pkg/provider/provider.go | 276 ++++--------------- provider/pkg/provider/stack_tags.go | 3 - provider/pkg/provider/team.go | 5 - provider/pkg/provider/team_access_token.go | 3 - provider/pkg/provider/team_stack_perm.go | 4 - provider/pkg/provider/unknown.go | 6 - provider/pkg/provider/webhook.go | 5 - 12 files changed, 78 insertions(+), 281 deletions(-) diff --git a/provider/pkg/provider/access_token.go b/provider/pkg/provider/access_token.go index f3d7662a..0cb9357e 100644 --- a/provider/pkg/provider/access_token.go +++ b/provider/pkg/provider/access_token.go @@ -117,9 +117,6 @@ func (at *PulumiServiceAccessTokenResource) Invoke(_ *pulumiserviceProvider, req return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) } -func (at *PulumiServiceAccessTokenResource) Configure(_ PulumiServiceConfig) { -} - func (at *PulumiServiceAccessTokenResource) createAccessToken(ctx context.Context, input PulumiServiceAccessTokenInput) (*pulumiapi.AccessToken, error) { accessToken, err := at.client.CreateAccessToken(ctx, input.Description) diff --git a/provider/pkg/provider/agent_pool.go b/provider/pkg/provider/agent_pool.go index 3b8e7c28..278aa092 100644 --- a/provider/pkg/provider/agent_pool.go +++ b/provider/pkg/provider/agent_pool.go @@ -228,9 +228,6 @@ func (ap *PulumiServiceAgentPoolResource) Invoke(_ *pulumiserviceProvider, req * return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) } -func (ap *PulumiServiceAgentPoolResource) Configure(_ PulumiServiceConfig) { -} - func (ap *PulumiServiceAgentPoolResource) createAgentPool(ctx context.Context, input PulumiServiceAgentPoolInput) (*pulumiapi.AgentPool, error) { agentPool, err := ap.client.CreateAgentPool(ctx, input.OrgName, input.Name, input.Description) if err != nil { diff --git a/provider/pkg/provider/config.go b/provider/pkg/provider/config.go index 6a551fa2..20cbad3c 100644 --- a/provider/pkg/provider/config.go +++ b/provider/pkg/provider/config.go @@ -2,9 +2,14 @@ package provider import ( "fmt" + "net/http" + "time" + p "github.com/pulumi/pulumi-go-provider" "github.com/pulumi/pulumi-go-provider/infer" "github.com/pulumi/pulumi/sdk/v3/go/common/workspace" + + "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" ) const ( @@ -14,12 +19,19 @@ const ( var ErrAccessTokenNotFound = fmt.Errorf("pulumi access token not found") +// GetConfig accesses the config associated with the current request. +func GetConfig(ctx p.Context) Config { return infer.GetConfig[Config](ctx) } + type Config struct { AccessToken string `pulumi:"accessToken,optional"` ServiceURL string `pulumi:"serviceURL,optional"` + Client pulumiapi.TeamClient } -var _ infer.Annotated = (*Config)(nil) +var ( + _ infer.Annotated = (*Config)(nil) + _ infer.CustomConfigure = (*Config)(nil) +) func (c *Config) Annotate(a infer.Annotator) { a.Describe(&c.AccessToken, "Access Token to authenticate with Pulumi Cloud.") @@ -29,19 +41,25 @@ func (c *Config) Annotate(a infer.Annotator) { a.SetDefault("https://api.pulumi.com", EnvVarPulumiBackendUrl) } -func (c *Config) getPulumiAccessToken() (string, error) { - if len(c.AccessToken) > 0 { - // found the token - return c.AccessToken, nil +func (c *Config) Configure(p.Context) error { + // Ensure that we have an access token + if len(c.AccessToken) == 0 { + creds, err := workspace.GetStoredCredentials() + if err != nil { + return ErrAccessTokenNotFound + } + if token, ok := creds.AccessTokens[creds.Current]; ok { + c.AccessToken = token + } else { + return ErrAccessTokenNotFound + } } - // attempt to grab credentials directly from the pulumi configuration on the machine - creds, err := workspace.GetStoredCredentials() - if err != nil { - return "", ErrAccessTokenNotFound - } - if token, ok := creds.AccessTokens[creds.Current]; ok { - return token, nil - } - return "", ErrAccessTokenNotFound + // Construct the PulumiService client + client, err := pulumiapi.NewClient(&http.Client{ + Timeout: 60 * time.Second, + }, c.AccessToken, c.ServiceURL) + + c.Client = client + return err } diff --git a/provider/pkg/provider/deployment_settings.go b/provider/pkg/provider/deployment_settings.go index d8558d28..ca7c5e21 100644 --- a/provider/pkg/provider/deployment_settings.go +++ b/provider/pkg/provider/deployment_settings.go @@ -500,8 +500,6 @@ func (ds *PulumiServiceDeploymentSettingsResource) Check(req *pulumirpc.CheckReq return &pulumirpc.CheckResponse{Inputs: req.News, Failures: failures}, nil } -func (ds *PulumiServiceDeploymentSettingsResource) Configure(_ PulumiServiceConfig) {} - func (ds *PulumiServiceDeploymentSettingsResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { ctx := context.Background() diff --git a/provider/pkg/provider/org_access_token.go b/provider/pkg/provider/org_access_token.go index 6ecb4ede..9eff7b22 100644 --- a/provider/pkg/provider/org_access_token.go +++ b/provider/pkg/provider/org_access_token.go @@ -147,9 +147,6 @@ func (ot *PulumiServiceOrgAccessTokenResource) Invoke(_ *pulumiserviceProvider, return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) } -func (ot *PulumiServiceOrgAccessTokenResource) Configure(_ PulumiServiceConfig) { -} - func (ot *PulumiServiceOrgAccessTokenResource) createOrgAccessToken(ctx context.Context, input PulumiServiceOrgAccessTokenInput) (*pulumiapi.AccessToken, error) { accessToken, err := ot.client.CreateOrgAccessToken(ctx, input.Name, input.OrgName, input.Description, input.Admin) diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index a92975af..7253c1b0 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -16,25 +16,22 @@ package provider import ( "context" - "encoding/json" - "fmt" "net/http" "strings" "time" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" pbempty "google.golang.org/protobuf/types/known/emptypb" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" + "github.com/pulumi/pulumi-go-provider/middleware/schema" "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" - "github.com/pulumi/pulumi/pkg/v3/codegen/schema" "github.com/pulumi/pulumi/pkg/v3/resource/provider" "github.com/pulumi/pulumi/sdk/v3/go/common/resource" pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" ) type PulumiServiceResource interface { - Configure(config PulumiServiceConfig) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) @@ -55,229 +52,48 @@ type pulumiserviceProvider struct { AccessToken string } -func makeProvider(host *provider.HostClient, name, version, schema string) (pulumirpc.ResourceProviderServer, error) { - // inject version into schema - versionedSchema := mustSetSchemaVersion(schema, version) - // Return the new provider - return &pulumiserviceProvider{ - host: host, - name: name, - schema: versionedSchema, - version: version, - AccessToken: "", - }, nil -} - -// Call dynamically executes a method in the provider associated with a component resource. -func (k *pulumiserviceProvider) Call(ctx context.Context, req *pulumirpc.CallRequest) (*pulumirpc.CallResponse, error) { - return nil, status.Error(codes.Unimplemented, "Call is not yet implemented") -} - -// Attach implements pulumirpc.ResourceProviderServer -func (k *pulumiserviceProvider) Attach(_ context.Context, req *pulumirpc.PluginAttach) (*pbempty.Empty, error) { - host, err := provider.NewHostClient(req.Address) - if err != nil { - return nil, err - } - k.host = host - return &pbempty.Empty{}, nil -} - -// Construct creates a new component resource. -func (k *pulumiserviceProvider) Construct(ctx context.Context, req *pulumirpc.ConstructRequest) (*pulumirpc.ConstructResponse, error) { - return nil, status.Error(codes.Unimplemented, "Construct is not yet implemented") -} - -// CheckConfig validates the configuration for this provider. -func (k *pulumiserviceProvider) CheckConfig(ctx context.Context, req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - return &pulumirpc.CheckResponse{Inputs: req.GetNews()}, nil -} - -// DiffConfig diffs the configuration for this provider. -func (k *pulumiserviceProvider) DiffConfig(ctx context.Context, req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - return &pulumirpc.DiffResponse{}, nil -} - -// Configure configures the resource provider with "globals" that control its behavior. -func (k *pulumiserviceProvider) Configure(_ context.Context, req *pulumirpc.ConfigureRequest) (*pulumirpc.ConfigureResponse, error) { - - sc := PulumiServiceConfig{} - sc.Config = make(map[string]string) - for key, val := range req.GetVariables() { - sc.Config[strings.TrimPrefix(key, "pulumiservice:config:")] = val - } - - httpClient := http.Client{ - Timeout: 60 * time.Second, - } - token, err := sc.getPulumiAccessToken() - if err != nil { - return nil, err - } - url, err := sc.getPulumiServiceUrl() - if err != nil { - return nil, err - } - client, err := pulumiapi.NewClient(&httpClient, *token, *url) - - if err != nil { - return nil, err - } - - k.pulumiResources = []PulumiServiceResource{ - &PulumiServiceTeamResource{ - client: client, - }, - &PulumiServiceAccessTokenResource{ - client: client, - }, - &PulumiServiceWebhookResource{ - client: client, - }, - &PulumiServiceStackTagResource{ - client: client, - }, - &TeamStackPermissionResource{ - client: client, - }, - &PulumiServiceTeamAccessTokenResource{ - client: client, - }, - &PulumiServiceOrgAccessTokenResource{ - client: client, +func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.ResourceProviderServer, error) { + return p.RawServer(name, version, infer.Provider(infer.Options{ + Metadata: schema.Metadata{ + LanguageMap: map[string]any{ + "csharp": map[string]any{ + "namespaces": map[string]string{ + "pulumiservice": "PulumiService", + }, + "packageReferences": map[string]string{ + "Pulumi": "3.*", + }, + }, + "go": map[string]any{ + "generateResourceContainerTypes": true, + "importBasePath": "github.com/pulumi/pulumi-pulumiservice/sdk/go/pulumiservice", + }, + "nodejs": map[string]any{ + "packageName": "@pulumi/pulumiservice", + "dependencies": map[string]string{ + "@pulumi/pulumi": "^3.0.0", + }, + }, + "python": map[string]any{ + "packageName": "pulumi_pulumiservice", + "requires": map[string]string{ + "pulumi": ">=3.0.0,<4.0.0", + }, + }, + }, + Description: "A native Pulumi package for creating and managing Pulumi Cloud constructs", + DisplayName: "Pulumi Cloud", + Keywords: []string{ + "pulumi", + "kind/native", + "category/infrastructure", + }, + Homepage: "https://pulumi.com", + Repository: "https://github.com/pulumi/pulumi-pulumiservice", + Publisher: "Pulumi", + License: "Apache-2.0", }, - &PulumiServiceDeploymentSettingsResource{ - client: client, - }, - &PulumiServiceAgentPoolResource{ - client: client, - }, - } - - for _, sr := range k.pulumiResources { - sr.Configure(sc) - } - - return &pulumirpc.ConfigureResponse{ - AcceptSecrets: true, - }, nil -} - -// Invoke dynamically executes a built-in function in the provider. -func (k *pulumiserviceProvider) Invoke(_ context.Context, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error) { - tok := req.GetTok() - return nil, fmt.Errorf("unknown Invoke token '%s'", tok) -} - -// StreamInvoke dynamically executes a built-in function in the provider. The result is streamed -// back as a series of messages. -func (k *pulumiserviceProvider) StreamInvoke(req *pulumirpc.InvokeRequest, server pulumirpc.ResourceProvider_StreamInvokeServer) error { - tok := req.GetTok() - return fmt.Errorf("unknown StreamInvoke token '%s'", tok) -} - -// Check validates that the given property bag is valid for a resource of the given type and returns -// the inputs that should be passed to successive calls to Diff, Create, or Update for this -// resource. As a rule, the provider inputs returned by a call to Check should preserve the original -// representation of the properties as present in the program inputs. Though this rule is not -// required for correctness, violations thereof can negatively impact the end-user experience, as -// the provider inputs are using for detecting and rendering diffs. -func (k *pulumiserviceProvider) Check(ctx context.Context, req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - rn := getResourceNameFromRequest(req) - res := k.getPulumiServiceResource(rn) - return res.Check(req) -} - -// Diff checks what impacts a hypothetical update will have on the resource's properties. -func (k *pulumiserviceProvider) Diff(ctx context.Context, req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - rn := getResourceNameFromRequest(req) - res := k.getPulumiServiceResource(rn) - return res.Diff(req) -} - -// Create allocates a new instance of the provided resource and returns its unique ID afterwards. -func (k *pulumiserviceProvider) Create(ctx context.Context, req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - rn := getResourceNameFromRequest(req) - res := k.getPulumiServiceResource(rn) - return res.Create(req) -} - -// Read the current live state associated with a resource. -func (k *pulumiserviceProvider) Read(ctx context.Context, req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - rn := getResourceNameFromRequest(req) - res := k.getPulumiServiceResource(rn) - return res.Read(req) -} - -// Update updates an existing resource with new values. -func (k *pulumiserviceProvider) Update(ctx context.Context, req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - rn := getResourceNameFromRequest(req) - res := k.getPulumiServiceResource(rn) - return res.Update(req) -} - -// Delete tears down an existing resource with the given ID. If it fails, the resource is assumed -// to still exist. -func (k *pulumiserviceProvider) Delete(ctx context.Context, req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - rn := getResourceNameFromRequest(req) - res := k.getPulumiServiceResource(rn) - return res.Delete(req) -} - -// GetPluginInfo returns generic information about this plugin, like its version. -func (k *pulumiserviceProvider) GetPluginInfo(context.Context, *pbempty.Empty) (*pulumirpc.PluginInfo, error) { - return &pulumirpc.PluginInfo{ - Version: k.version, - }, nil -} - -// GetSchema returns the JSON-serialized schema for the provider. -func (k *pulumiserviceProvider) GetSchema(ctx context.Context, req *pulumirpc.GetSchemaRequest) (*pulumirpc.GetSchemaResponse, error) { - return &pulumirpc.GetSchemaResponse{ - Schema: k.schema, - }, nil -} - -// Cancel signals the provider to gracefully shut down and abort any ongoing resource operations. -// Operations aborted in this way will return an error (e.g., `Update` and `Create` will either a -// creation error or an initialization error). Since Cancel is advisory and non-blocking, it is up -// to the host to decide how long to wait after Cancel is called before (e.g.) -// hard-closing any gRPC connection. -func (k *pulumiserviceProvider) Cancel(context.Context, *pbempty.Empty) (*pbempty.Empty, error) { - // TODO - return &pbempty.Empty{}, nil -} - -func (k *pulumiserviceProvider) getPulumiServiceResource(name string) PulumiServiceResource { - for _, r := range k.pulumiResources { - if r.Name() == name { - return r - } - } - - return &PulumiServiceUnknownResource{} -} - -func getResourceNameFromRequest(req ResourceBase) string { - urn := resource.URN(req.GetUrn()) - return urn.Type().String() -} - -// mustSetSchemaVersion deserializes schemaStr from json, sets Version field -// then serializes back to json string -func mustSetSchemaVersion(schemaStr string, version string) string { - var spec schema.PackageSpec - if err := json.Unmarshal([]byte(schemaStr), &spec); err != nil { - panic(fmt.Errorf("failed to parse schema: %w", err)) - } - spec.Version = version - bytes, err := json.Marshal(spec) - if err != nil { - panic(fmt.Errorf("failed to serialize versioned schema: %w", err)) - } - return string(bytes) -} - -type ResourceBase interface { - GetUrn() string + Config: infer.Config[Config](), + Resources: []infer.InferredResource{}, + }))(nil) } diff --git a/provider/pkg/provider/stack_tags.go b/provider/pkg/provider/stack_tags.go index e093932e..5f830556 100644 --- a/provider/pkg/provider/stack_tags.go +++ b/provider/pkg/provider/stack_tags.go @@ -164,6 +164,3 @@ func (st *PulumiServiceStackTagResource) Read(req *pulumirpc.ReadRequest) (*pulu Inputs: props, }, nil } - -func (st *PulumiServiceStackTagResource) Configure(_ PulumiServiceConfig) { -} diff --git a/provider/pkg/provider/team.go b/provider/pkg/provider/team.go index e2955bb0..2a964bff 100644 --- a/provider/pkg/provider/team.go +++ b/provider/pkg/provider/team.go @@ -20,7 +20,6 @@ import ( ) type PulumiServiceTeamResource struct { - config PulumiServiceConfig client pulumiapi.TeamClient } @@ -109,10 +108,6 @@ func (t *PulumiServiceTeamResource) Name() string { return "pulumiservice:index:Team" } -func (t *PulumiServiceTeamResource) Configure(config PulumiServiceConfig) { - t.config = config -} - func (t *PulumiServiceTeamResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { news := req.GetNews() newsMap, err := plugin.UnmarshalProperties(news, plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) diff --git a/provider/pkg/provider/team_access_token.go b/provider/pkg/provider/team_access_token.go index 4e67a9af..f2bb808f 100644 --- a/provider/pkg/provider/team_access_token.go +++ b/provider/pkg/provider/team_access_token.go @@ -143,9 +143,6 @@ func (t *PulumiServiceTeamAccessTokenResource) Invoke(_ *pulumiserviceProvider, return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) } -func (t *PulumiServiceTeamAccessTokenResource) Configure(_ PulumiServiceConfig) { -} - func (t *PulumiServiceTeamAccessTokenResource) createTeamAccessToken(ctx context.Context, input PulumiServiceTeamAccessTokenInput) (*pulumiapi.AccessToken, error) { accessToken, err := t.client.CreateTeamAccessToken(ctx, input.Name, input.OrgName, input.TeamName, input.Description) diff --git a/provider/pkg/provider/team_stack_perm.go b/provider/pkg/provider/team_stack_perm.go index 6de07c65..db36d6c4 100644 --- a/provider/pkg/provider/team_stack_perm.go +++ b/provider/pkg/provider/team_stack_perm.go @@ -45,10 +45,6 @@ func (tp *TeamStackPermissionResource) Check(req *pulumirpc.CheckRequest) (*pulu }, nil } -func (tp *TeamStackPermissionResource) Configure(_ PulumiServiceConfig) { - -} - func (tp *TeamStackPermissionResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { ctx := context.Background() id := req.GetId() diff --git a/provider/pkg/provider/unknown.go b/provider/pkg/provider/unknown.go index ed4e5f6e..8d036f5f 100644 --- a/provider/pkg/provider/unknown.go +++ b/provider/pkg/provider/unknown.go @@ -15,9 +15,6 @@ func (u *PulumiServiceUnknownResource) Name() string { return "pulumiservice:index:Unknown" } -func (u *PulumiServiceUnknownResource) Configure(config PulumiServiceConfig) { -} - func (u *PulumiServiceUnknownResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { return nil, createUnknownResourceErrorFromRequest(req) } @@ -54,6 +51,3 @@ func (u *PulumiServiceUnknownResource) Invoke(s *pulumiserviceProvider, req *pul func (f *PulumiServiceUnknownFunction) Name() string { return "pulumiservice:index:Unknown" } - -func (f *PulumiServiceUnknownFunction) Configure(config PulumiServiceConfig) { -} diff --git a/provider/pkg/provider/webhook.go b/provider/pkg/provider/webhook.go index 678a0965..47deb120 100644 --- a/provider/pkg/provider/webhook.go +++ b/provider/pkg/provider/webhook.go @@ -14,7 +14,6 @@ import ( ) type PulumiServiceWebhookResource struct { - config PulumiServiceConfig client pulumiapi.WebhookClient } @@ -126,10 +125,6 @@ func (wh *PulumiServiceWebhookResource) Name() string { return "pulumiservice:index:Webhook" } -func (wh *PulumiServiceWebhookResource) Configure(config PulumiServiceConfig) { - wh.config = config -} - func (wh *PulumiServiceWebhookResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) if err != nil { From 8f66b8d4c44b81cb774f7250fc1b28c52d95d9b8 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 21:02:06 +0200 Subject: [PATCH 11/17] Port over AgentPool --- provider/pkg/provider/agent_pool.go | 288 +++++++++------------------- provider/pkg/provider/config.go | 2 +- provider/pkg/provider/provider.go | 13 +- provider/pkg/provider/serve.go | 2 +- provider/pkg/provider/unknown.go | 53 ----- 5 files changed, 93 insertions(+), 265 deletions(-) delete mode 100644 provider/pkg/provider/unknown.go diff --git a/provider/pkg/provider/agent_pool.go b/provider/pkg/provider/agent_pool.go index 278aa092..f22434b6 100644 --- a/provider/pkg/provider/agent_pool.go +++ b/provider/pkg/provider/agent_pool.go @@ -1,254 +1,140 @@ package provider import ( - "context" "fmt" "strings" - pbempty "google.golang.org/protobuf/types/known/emptypb" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" + "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" +) - "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" +type AgentPool struct{} + +// We list out the expected capabilities of AgentPool, since infer is not capable of +// determining which capabilities we intend to implement and which capabilities we +// intentionally ignored. +var ( + // Life-cycle participation + _ infer.CustomResource[AgentPoolInput, AgentPoolState] = (*AgentPool)(nil) + _ infer.CustomUpdate[AgentPoolInput, AgentPoolState] = (*AgentPool)(nil) + _ infer.CustomDelete[AgentPoolState] = (*AgentPool)(nil) + _ infer.CustomRead[AgentPoolInput, AgentPoolState] = (*AgentPool)(nil) + + // Schema documentation + _ infer.Annotated = (*AgentPool)(nil) + _ infer.Annotated = (*AgentPoolInput)(nil) + _ infer.Annotated = (*AgentPoolState)(nil) + + // Secret values + _ infer.ExplicitDependencies[AgentPoolInput, AgentPoolState] = (*AgentPool)(nil) ) -type PulumiServiceAgentPoolResource struct { - client pulumiapi.AgentPoolClient +func (p *AgentPool) Annotate(a infer.Annotator) { + a.Describe(p, "Agent Pool for customer manager deployments") } -type PulumiServiceAgentPoolInput struct { - OrgName string - Description string - Name string +type AgentPoolInput struct { + Name string `pulumi:"name"` + Description string `pulumi:"description,optional"` + OrganizationName string `pulumi:"organizationName" provider:"replaceOnChanges"` } -func (i *PulumiServiceAgentPoolInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["name"] = resource.NewPropertyValue(i.Name) - pm["description"] = resource.NewPropertyValue(i.Description) - pm["organizationName"] = resource.NewPropertyValue(i.OrgName) - return pm +func (p *AgentPoolInput) Annotate(a infer.Annotator) { + a.Describe(&p.Name, "Name of the agent pool.") + a.Describe(&p.Description, "Description of the agent pool.") + a.Describe(&p.OrganizationName, "The organization's name.") } -func (ap *PulumiServiceAgentPoolResource) ToPulumiServiceAgentPoolInput(inputMap resource.PropertyMap) PulumiServiceAgentPoolInput { - input := PulumiServiceAgentPoolInput{} - - if inputMap["name"].HasValue() && inputMap["name"].IsString() { - input.Name = inputMap["name"].StringValue() - } - - if inputMap["description"].HasValue() && inputMap["description"].IsString() { - input.Description = inputMap["description"].StringValue() - } - - if inputMap["organizationName"].HasValue() && inputMap["organizationName"].IsString() { - input.OrgName = inputMap["organizationName"].StringValue() - } - - return input +type AgentPoolState struct { + AgentPoolInput + AgentPoolID string `pulumi:"agentPoolId"` + TokenValue string `pulumi:"tokenValue"` } -func (ap *PulumiServiceAgentPoolResource) Name() string { - return "pulumiservice:index:AgentPool" +func (p *AgentPoolState) Annotate(a infer.Annotator) { + a.Describe(&p.AgentPoolID, "The agent pool identifier.") + a.Describe(&p.TokenValue, "The agent pool's token's value.") } -func (ap *PulumiServiceAgentPoolResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - olds, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: false, SkipNulls: true}) - if err != nil { - return nil, err - } - - // preprocess olds to remove the `tokenValue & agentPoolId` property since it's only an output and shouldn't cause a diff - for _, p := range []resource.PropertyKey{"tokenValue", "agentPoolId"} { - if olds[p].HasValue() { - delete(olds, p) - } - } - - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - diffs := olds.Diff(news) - if diffs == nil { - return &pulumirpc.DiffResponse{ - Changes: pulumirpc.DiffResponse_DIFF_NONE, - }, nil - } - - dd := plugin.NewDetailedDiffFromObjectDiff(diffs, false) - - detailedDiffs := map[string]*pulumirpc.PropertyDiff{} - replaceProperties := map[string]bool{ - "organizationName": true, - } - for k, v := range dd { - if _, ok := replaceProperties[k]; ok { - v.Kind = v.Kind.AsReplace() - } - detailedDiffs[k] = &pulumirpc.PropertyDiff{ - Kind: pulumirpc.PropertyDiff_Kind(v.Kind), - InputDiff: v.InputDiff, - } - } - - changes := pulumirpc.DiffResponse_DIFF_NONE - if len(detailedDiffs) > 0 { - changes = pulumirpc.DiffResponse_DIFF_SOME - } - return &pulumirpc.DiffResponse{ - Changes: changes, - DetailedDiff: detailedDiffs, - HasDetailedDiff: true, - }, nil +func (*AgentPool) WireDependencies(f infer.FieldSelector, args *AgentPoolInput, state *AgentPoolState) { + f.OutputField(&state.TokenValue).AlwaysSecret() } -func (ap *PulumiServiceAgentPoolResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - ctx := context.Background() - err := ap.deleteAgentPool(ctx, req.Id) - - if err != nil { - return &pbempty.Empty{}, err - } - - return &pbempty.Empty{}, nil +func (*AgentPool) Delete(ctx p.Context, id string, props AgentPoolState) error { + return GetConfig(ctx).Client.DeleteAgentPool(ctx, props.AgentPoolID, props.OrganizationName) } -func (ap *PulumiServiceAgentPoolResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - ctx := context.Background() - inputs, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - inputsAgentPool := ap.ToPulumiServiceAgentPoolInput(inputs) - - agentPool, err := ap.createAgentPool(ctx, inputsAgentPool) - if err != nil { - return nil, fmt.Errorf("error creating access token '%s': %s", inputsAgentPool.Name, err.Error()) +func (*AgentPool) Create( + ctx p.Context, name string, input AgentPoolInput, preview bool, +) (string, AgentPoolState, error) { + if preview { + return "", AgentPoolState{}, nil } - outputStore := resource.PropertyMap{} - outputStore["agentPoolId"] = resource.NewPropertyValue(agentPool.ID) - outputStore["name"] = inputs["name"] - outputStore["organizationName"] = inputs["organizationName"] - outputStore["description"] = inputs["description"] - outputStore["tokenValue"] = resource.NewPropertyValue(agentPool.TokenValue) - - outputProperties, err := plugin.MarshalProperties( - outputStore, - plugin.MarshalOptions{}, - ) + agentPool, err := GetConfig(ctx).Client.CreateAgentPool(ctx, input.OrganizationName, input.Name, input.Description) if err != nil { - return nil, err + return "", AgentPoolState{}, fmt.Errorf("error creating agent pool '%s': %w", input.Name, err) } - urn := fmt.Sprintf(inputsAgentPool.OrgName + "/" + inputsAgentPool.Name + "/" + agentPool.ID) + id := fmt.Sprintf(input.OrganizationName + "/" + input.Name + "/" + agentPool.ID) - return &pulumirpc.CreateResponse{ - Id: urn, - Properties: outputProperties, + return id, AgentPoolState{ + AgentPoolInput: input, + AgentPoolID: agentPool.ID, + TokenValue: agentPool.TokenValue, }, nil - -} - -func (ap *PulumiServiceAgentPoolResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - return &pulumirpc.CheckResponse{Inputs: req.News, Failures: nil}, nil } -func (ap *PulumiServiceAgentPoolResource) Update(req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - ctx := context.Background() - - // ignore orgName because if that changed, we would have done a replace, so update would never have been called - _, _, agentPoolId, err := splitAgentPoolId(req.GetId()) - if err != nil { - return nil, fmt.Errorf("invalid resource id: %v", err) - } - - olds, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err +func (*AgentPool) Update( + ctx p.Context, id string, olds AgentPoolState, news AgentPoolInput, preview bool, +) (AgentPoolState, error) { + if preview { + return AgentPoolState{}, nil } - changedInputs := olds - changedInputs["name"] = news["name"] - changedInputs["description"] = news["description"] - - inputsAgentPool := ap.ToPulumiServiceAgentPoolInput(changedInputs) - err = ap.updateAgentPool(ctx, agentPoolId, inputsAgentPool) - if err != nil { - return nil, fmt.Errorf("error updating agent pool '%s': %s", inputsAgentPool.Name, err.Error()) - } + contract.Assertf(olds.OrganizationName == news.OrganizationName, + "Changing the org name should be a replace") - outputProperties, err := plugin.MarshalProperties( - changedInputs, - plugin.MarshalOptions{}, - ) + // The only thing that can actually change here is name and description + err := GetConfig(ctx).Client.UpdateAgentPool(ctx, + olds.AgentPoolID, olds.OrganizationName, + news.Name, news.Description) if err != nil { - return nil, err + return AgentPoolState{}, err } - return &pulumirpc.UpdateResponse{ - Properties: outputProperties, - }, nil + olds.Name = news.Name + olds.Description = news.Description + return olds, nil } -func (ap *PulumiServiceAgentPoolResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - ctx := context.Background() - urn := req.GetId() - - orgName, _, agentPoolId, err := splitAgentPoolId(urn) +func (*AgentPool) Read( + ctx p.Context, id string, _ AgentPoolInput, _ AgentPoolState, +) (string, AgentPoolInput, AgentPoolState, error) { + orgName, _, agentPoolId, err := splitAgentPoolId(id) if err != nil { - return nil, err + return "", AgentPoolInput{}, AgentPoolState{}, err } - // the agent id is immutable; if we get nil it got deleted, otherwise all data is the same - agentPool, err := ap.client.GetAgentPool(ctx, agentPoolId, orgName) + agentPool, err := GetConfig(ctx).Client.GetAgentPool(ctx, agentPoolId, orgName) if err != nil { - return nil, err - } - if agentPool == nil { - return &pulumirpc.ReadResponse{}, nil + return "", AgentPoolInput{}, AgentPoolState{}, err } - return &pulumirpc.ReadResponse{ - Id: req.GetId(), - Properties: req.GetProperties(), - }, nil -} - -func (ap *PulumiServiceAgentPoolResource) Invoke(_ *pulumiserviceProvider, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error) { - return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) -} - -func (ap *PulumiServiceAgentPoolResource) createAgentPool(ctx context.Context, input PulumiServiceAgentPoolInput) (*pulumiapi.AgentPool, error) { - agentPool, err := ap.client.CreateAgentPool(ctx, input.OrgName, input.Name, input.Description) - if err != nil { - return nil, err + inputs := AgentPoolInput{ + Name: agentPool.Name, + Description: agentPool.Description, + OrganizationName: orgName, } - return agentPool, nil -} - -func (ap *PulumiServiceAgentPoolResource) updateAgentPool(ctx context.Context, agentPoolId string, input PulumiServiceAgentPoolInput) error { - return ap.client.UpdateAgentPool(ctx, agentPoolId, input.OrgName, input.Name, input.Description) -} - -func (ap *PulumiServiceAgentPoolResource) deleteAgentPool(ctx context.Context, id string) error { - // we don't need the token name when we delete - orgName, _, agentPoolId, err := splitAgentPoolId(id) - if err != nil { - return err + outputs := AgentPoolState{ + AgentPoolInput: inputs, + AgentPoolID: agentPool.ID, + TokenValue: agentPool.TokenValue, } - return ap.client.DeleteAgentPool(ctx, agentPoolId, orgName) + return id, inputs, outputs, nil } func splitAgentPoolId(id string) (string, string, string, error) { diff --git a/provider/pkg/provider/config.go b/provider/pkg/provider/config.go index 20cbad3c..ce70ef46 100644 --- a/provider/pkg/provider/config.go +++ b/provider/pkg/provider/config.go @@ -25,7 +25,7 @@ func GetConfig(ctx p.Context) Config { return infer.GetConfig[Config](ctx) } type Config struct { AccessToken string `pulumi:"accessToken,optional"` ServiceURL string `pulumi:"serviceURL,optional"` - Client pulumiapi.TeamClient + Client *pulumiapi.Client } var ( diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 7253c1b0..3b2c755f 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -15,19 +15,12 @@ package provider import ( - "context" - "net/http" - "strings" - "time" - pbempty "google.golang.org/protobuf/types/known/emptypb" p "github.com/pulumi/pulumi-go-provider" "github.com/pulumi/pulumi-go-provider/infer" "github.com/pulumi/pulumi-go-provider/middleware/schema" - "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" "github.com/pulumi/pulumi/pkg/v3/resource/provider" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" ) @@ -93,7 +86,9 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re Publisher: "Pulumi", License: "Apache-2.0", }, - Config: infer.Config[Config](), - Resources: []infer.InferredResource{}, + Config: infer.Config[Config](), + Resources: []infer.InferredResource{ + infer.Resource[*AgentPool](), + }, }))(nil) } diff --git a/provider/pkg/provider/serve.go b/provider/pkg/provider/serve.go index 6d48b779..c317b2aa 100644 --- a/provider/pkg/provider/serve.go +++ b/provider/pkg/provider/serve.go @@ -24,7 +24,7 @@ import ( func Serve(providerName, version string, schema string) { // Start gRPC service. err := provider.Main(providerName, func(host *provider.HostClient) (rpc.ResourceProviderServer, error) { - return makeProvider(host, providerName, version, schema) + return makeProvider(host, providerName, version) }) if err != nil { cmdutil.ExitError(err.Error()) diff --git a/provider/pkg/provider/unknown.go b/provider/pkg/provider/unknown.go deleted file mode 100644 index 8d036f5f..00000000 --- a/provider/pkg/provider/unknown.go +++ /dev/null @@ -1,53 +0,0 @@ -package provider - -import ( - "fmt" - - pbempty "google.golang.org/protobuf/types/known/emptypb" - - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" -) - -type PulumiServiceUnknownResource struct{} -type PulumiServiceUnknownFunction struct{} - -func (u *PulumiServiceUnknownResource) Name() string { - return "pulumiservice:index:Unknown" -} - -func (u *PulumiServiceUnknownResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - return nil, createUnknownResourceErrorFromRequest(req) -} - -func (u *PulumiServiceUnknownResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - return nil, createUnknownResourceErrorFromRequest(req) -} - -func (u *PulumiServiceUnknownResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - return nil, createUnknownResourceErrorFromRequest(req) -} - -func (u *PulumiServiceUnknownResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - return nil, createUnknownResourceErrorFromRequest(req) -} - -func (u *PulumiServiceUnknownResource) Update(req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - return nil, createUnknownResourceErrorFromRequest(req) -} - -func (u *PulumiServiceUnknownResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - return nil, createUnknownResourceErrorFromRequest(req) -} - -func createUnknownResourceErrorFromRequest(req ResourceBase) error { - rn := getResourceNameFromRequest(req) - return fmt.Errorf("unknown resource type '%s'", rn) -} - -func (u *PulumiServiceUnknownResource) Invoke(s *pulumiserviceProvider, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error) { - return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) -} - -func (f *PulumiServiceUnknownFunction) Name() string { - return "pulumiservice:index:Unknown" -} From 8c7fd87726cbcac8223c42179024ca2feecf2fd2 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Thu, 4 Apr 2024 23:06:08 +0200 Subject: [PATCH 12/17] Port AccessToken --- provider/pkg/provider/access_token.go | 187 ++++++++------------------ provider/pkg/provider/provider.go | 1 + 2 files changed, 55 insertions(+), 133 deletions(-) diff --git a/provider/pkg/provider/access_token.go b/provider/pkg/provider/access_token.go index 0cb9357e..79a97d83 100644 --- a/provider/pkg/provider/access_token.go +++ b/provider/pkg/provider/access_token.go @@ -1,168 +1,89 @@ package provider import ( - "context" - "fmt" - - pbempty "google.golang.org/protobuf/types/known/emptypb" - - "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" ) -type PulumiServiceAccessTokenResource struct { - client *pulumiapi.Client -} - -type PulumiServiceAccessTokenInput struct { - Description string -} +var ( + // Life-cycle participation + _ infer.CustomResource[AccessTokenInput, AccessTokenState] = (*AccessToken)(nil) + _ infer.CustomDelete[AccessTokenState] = (*AccessToken)(nil) + _ infer.CustomRead[AccessTokenInput, AccessTokenState] = (*AccessToken)(nil) -func (i *PulumiServiceAccessTokenInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["description"] = resource.NewPropertyValue(i.Description) - return pm -} + // Schema documentation + _ infer.Annotated = (*AccessToken)(nil) + _ infer.Annotated = (*AccessTokenInput)(nil) + _ infer.Annotated = (*AccessTokenState)(nil) -func (at *PulumiServiceAccessTokenResource) ToPulumiServiceAccessTokenInput(inputMap resource.PropertyMap) PulumiServiceAccessTokenInput { - input := PulumiServiceAccessTokenInput{} + // Secret values + _ infer.ExplicitDependencies[AccessTokenInput, AccessTokenState] = (*AccessToken)(nil) +) - if inputMap["description"].HasValue() && inputMap["description"].IsString() { - input.Description = inputMap["description"].StringValue() - } +type AccessToken struct{} - return input +func (p *AccessToken) Annotate(a infer.Annotator) { + a.Describe(p, "Access tokens allow a user to authenticate against the Pulumi Cloud") } -func (at *PulumiServiceAccessTokenResource) Name() string { - return "pulumiservice:index:AccessToken" +type AccessTokenInput struct { + Description string `pulumi:"description" provider:"replaceOnChanges"` } -func (at *PulumiServiceAccessTokenResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - return diffAccessTokenProperties(req, []string{"description"}) +func (p *AccessTokenInput) Annotate(a infer.Annotator) { + a.Describe(&p.Description, "Description of the access token.") } -func (at *PulumiServiceAccessTokenResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - ctx := context.Background() - err := at.deleteAccessToken(ctx, req.Id) - if err != nil { - return &pbempty.Empty{}, err - } - - return &pbempty.Empty{}, nil +type AccessTokenState struct { + AccessTokenInput + TokenID string `pulumi:"tokenId"` + Value string `pulumi:"value"` } -func (at *PulumiServiceAccessTokenResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - ctx := context.Background() - inputs, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - inputsAccessToken := at.ToPulumiServiceAccessTokenInput(inputs) - accessToken, err := at.createAccessToken(ctx, inputsAccessToken) - if err != nil { - return nil, fmt.Errorf("error creating access token '%s': %s", inputsAccessToken.Description, err.Error()) - } - - outputStore := resource.PropertyMap{} - outputStore["__inputs"] = resource.NewObjectProperty(inputs) - outputStore["value"] = resource.NewPropertyValue(accessToken.TokenValue) - - outputProperties, err := plugin.MarshalProperties( - outputStore, - plugin.MarshalOptions{}, - ) - if err != nil { - return nil, err - } - - return &pulumirpc.CreateResponse{ - Id: accessToken.ID, - Properties: outputProperties, - }, nil - +func (p *AccessTokenState) Annotate(a infer.Annotator) { + a.Describe(&p.TokenID, "The token identifier.") + a.Describe(&p.Value, "The token's value.") } -func (at *PulumiServiceAccessTokenResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - return &pulumirpc.CheckResponse{Inputs: req.News, Failures: nil}, nil +func (*AccessToken) WireDependencies(f infer.FieldSelector, args *AccessTokenInput, state *AccessTokenState) { + f.OutputField(&state.Value).AlwaysSecret() } -func (at *PulumiServiceAccessTokenResource) Update(_ *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - // all updates are destructive, so we just call Create. - return nil, fmt.Errorf("unexpected call to update, expected create to be called instead") +func (*AccessToken) Delete(ctx p.Context, id string, props AccessTokenState) error { + return GetConfig(ctx).Client.DeleteAccessToken(ctx, props.TokenID) } -func (at *PulumiServiceAccessTokenResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - ctx := context.Background() - - // the access token is immutable; if we get nil it got deleted, otherwise all data is the same - accessToken, err := at.client.GetAccessToken(ctx, req.GetId()) +func (*AccessToken) Create(ctx p.Context, name string, input AccessTokenInput, preview bool) (id string, output AccessTokenState, err error) { + tk, err := GetConfig(ctx).Client.CreateAccessToken(ctx, input.Description) if err != nil { - return nil, err - } - if accessToken == nil { - return &pulumirpc.ReadResponse{}, nil + return "", AccessTokenState{}, err } - - return &pulumirpc.ReadResponse{ - Id: req.GetId(), - Properties: req.GetProperties(), + return tk.ID, AccessTokenState{ + AccessTokenInput: input, + TokenID: id, + Value: tk.TokenValue, }, nil } -func (at *PulumiServiceAccessTokenResource) Invoke(_ *pulumiserviceProvider, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error) { - return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) -} - -func (at *PulumiServiceAccessTokenResource) createAccessToken(ctx context.Context, input PulumiServiceAccessTokenInput) (*pulumiapi.AccessToken, error) { - - accessToken, err := at.client.CreateAccessToken(ctx, input.Description) - if err != nil { - return nil, err - } - - return accessToken, nil -} - -func (at *PulumiServiceAccessTokenResource) deleteAccessToken(ctx context.Context, tokenId string) error { - return at.client.DeleteAccessToken(ctx, tokenId) -} - -func diffAccessTokenProperties(req *pulumirpc.DiffRequest, replaceProps []string) (*pulumirpc.DiffResponse, error) { - olds, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: false, SkipNulls: true}) - if err != nil { - return nil, err - } - - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: false}) +func (*AccessToken) Read( + ctx p.Context, id string, _ AccessTokenInput, _ AccessTokenState, +) (string, AccessTokenInput, AccessTokenState, error) { + // the access token is immutable; if we get nil it got deleted, otherwise all data is the same + accessToken, err := GetConfig(ctx).Client.GetAccessToken(ctx, id) if err != nil { - return nil, err - } - - inputs, ok := olds["__inputs"] - if !ok { - return nil, fmt.Errorf("missing __inputs property") + return "", AccessTokenInput{}, AccessTokenState{}, err } - diffs := inputs.ObjectValue().Diff(news) - if diffs == nil { - return &pulumirpc.DiffResponse{ - Changes: pulumirpc.DiffResponse_DIFF_NONE, - }, nil + if accessToken == nil { + return "", AccessTokenInput{}, AccessTokenState{}, nil } - changes, replaces := pulumirpc.DiffResponse_DIFF_NONE, []string(nil) - for _, k := range replaceProps { - if diffs.Changed(resource.PropertyKey(k)) { - changes = pulumirpc.DiffResponse_DIFF_SOME - replaces = append(replaces, k) - } + inputs := AccessTokenInput{ + Description: accessToken.Description, } - return &pulumirpc.DiffResponse{ - Changes: changes, - Replaces: replaces, - }, nil + return id, inputs, AccessTokenState{ + AccessTokenInput: inputs, + TokenID: accessToken.ID, + Value: accessToken.TokenValue, + }, err } diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 3b2c755f..66178565 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -89,6 +89,7 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re Config: infer.Config[Config](), Resources: []infer.InferredResource{ infer.Resource[*AgentPool](), + infer.Resource[*AccessToken](), }, }))(nil) } From d00490f2ec94f03889ed16fc7cde47f1879470a2 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Fri, 5 Apr 2024 14:11:57 +0200 Subject: [PATCH 13/17] Port Team --- provider/go.mod | 2 +- provider/go.sum | 4 +- provider/pkg/provider/provider.go | 1 + provider/pkg/provider/team.go | 460 ++++++++++-------------------- 4 files changed, 154 insertions(+), 313 deletions(-) diff --git a/provider/go.mod b/provider/go.mod index e2a97d5c..561c0919 100644 --- a/provider/go.mod +++ b/provider/go.mod @@ -3,7 +3,7 @@ module github.com/pulumi/pulumi-pulumiservice/provider go 1.21.0 require ( - github.com/pulumi/pulumi-go-provider v0.15.0 + github.com/pulumi/pulumi-go-provider v0.15.1-0.20240405114145-84f8012dbfe8 github.com/pulumi/pulumi/pkg/v3 v3.112.0 github.com/pulumi/pulumi/sdk/v3 v3.112.0 github.com/stretchr/testify v1.9.0 diff --git a/provider/go.sum b/provider/go.sum index 14c59225..3528525c 100644 --- a/provider/go.sum +++ b/provider/go.sum @@ -158,8 +158,8 @@ github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231 h1:vkHw5I/plNdTr435 github.com/pulumi/appdash v0.0.0-20231130102222-75f619a67231/go.mod h1:murToZ2N9hNJzewjHBgfFdXhZKjY3z5cYC1VXk+lbFE= github.com/pulumi/esc v0.6.2 h1:+z+l8cuwIauLSwXQS0uoI3rqB+YG4SzsZYtHfNoXBvw= github.com/pulumi/esc v0.6.2/go.mod h1:jNnYNjzsOgVTjCp0LL24NsCk8ZJxq4IoLQdCT0X7l8k= -github.com/pulumi/pulumi-go-provider v0.15.0 h1:KEFQhAVHMCbu9NPNe584mtlgZXaqnuDpcWarUcGbQ5w= -github.com/pulumi/pulumi-go-provider v0.15.0/go.mod h1:q3gz5HmArwNALbFihAt1vpg/1xpZlAKjB6A6uMsTgfw= +github.com/pulumi/pulumi-go-provider v0.15.1-0.20240405114145-84f8012dbfe8 h1:cmiqa+KPj2G3Zaw++dY2aUzscQmgHz/YtQNNn1AQf1E= +github.com/pulumi/pulumi-go-provider v0.15.1-0.20240405114145-84f8012dbfe8/go.mod h1:q3gz5HmArwNALbFihAt1vpg/1xpZlAKjB6A6uMsTgfw= github.com/pulumi/pulumi/pkg/v3 v3.112.0 h1:vhoM6sx1eegJntIeUZENtck3VeMtK1zBiQ2E3EPOnHw= github.com/pulumi/pulumi/pkg/v3 v3.112.0/go.mod h1:GQhNr0v5E8TACF8j0p6UQqyr7mZreUpoMfVjLeu6eY0= github.com/pulumi/pulumi/sdk/v3 v3.112.0 h1:cq2x5N6iuYhSLdeOdRs+LIq0EneB0Cb54WOlD/VaX3E= diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 66178565..06dbad3e 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -90,6 +90,7 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re Resources: []infer.InferredResource{ infer.Resource[*AgentPool](), infer.Resource[*AccessToken](), + infer.Resource[*Team](), }, }))(nil) } diff --git a/provider/pkg/provider/team.go b/provider/pkg/provider/team.go index 2a964bff..830f9e7c 100644 --- a/provider/pkg/provider/team.go +++ b/provider/pkg/provider/team.go @@ -1,208 +1,123 @@ package provider import ( - "context" - "errors" "fmt" - "reflect" "strings" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" "golang.org/x/exp/slices" - "google.golang.org/grpc/codes" - pbempty "google.golang.org/protobuf/types/known/emptypb" - "google.golang.org/protobuf/types/known/structpb" - "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - "github.com/pulumi/pulumi/sdk/v3/go/common/util/rpcutil/rpcerror" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" ) -type PulumiServiceTeamResource struct { - client pulumiapi.TeamClient -} +var ( + // Life-cycle participation + _ infer.CustomResource[TeamInput, TeamState] = (*Team)(nil) + _ infer.CustomCheck[TeamInput] = (*Team)(nil) + _ infer.CustomDelete[TeamState] = (*Team)(nil) + _ infer.CustomRead[TeamInput, TeamState] = (*Team)(nil) + _ infer.CustomUpdate[TeamInput, TeamState] = (*Team)(nil) + + // Schema documentation + _ infer.Annotated = (*Team)(nil) + _ infer.Annotated = (*TeamInput)(nil) + _ infer.Annotated = (*TeamState)(nil) +) -type PulumiServiceTeamStackPermission struct { - ProjectName string - StackName string - Permission int -} +type Team struct{} -type PulumiServiceTeamInput struct { - Type string - Name string - DisplayName string - Description string - OrganizationName string - Members []string - GitHubTeamID int64 +func (p *Team) Annotate(a infer.Annotator) { + a.Describe(p, "The Pulumi Cloud offers role-based access control (RBAC) using teams. "+ + "Teams allow organization admins to assign a set of stack permissions to a group of users.") } -func (i *PulumiServiceTeamInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["teamType"] = resource.NewPropertyValue(i.Type) - pm["name"] = resource.NewPropertyValue(i.Name) - pm["members"] = resource.NewPropertyValue(i.Members) - pm["organizationName"] = resource.NewPropertyValue(i.OrganizationName) - if i.Description != "" { - pm["description"] = resource.NewPropertyValue(i.Description) - } - if i.GitHubTeamID != 0 { - pm["githubTeamId"] = resource.NewPropertyValue(i.GitHubTeamID) - } - if i.DisplayName != "" { - pm["displayName"] = resource.NewPropertyValue(i.DisplayName) - } - return pm +type TeamInput struct { + TeamType string `pulumi:"teamType"` // TODO[BREAKING]: This should be an enum + Name string `pulumi:"name,optional"` + DisplayName string `pulumi:"displayName,optional"` + Description string `pulumi:"description,optional"` + Members []string `pulumi:"members,optional"` + OrganizationName string `pulumi:"organizationName"` + GithubTeamId int64 `pulumi:"githubTeamId,optional"` } -func (i *PulumiServiceTeamInput) ToRpc() (*structpb.Struct, error) { - return plugin.MarshalProperties(i.ToPropertyMap(), plugin.MarshalOptions{ - KeepOutputValues: true, - }) +func (p *TeamInput) Annotate(a infer.Annotator) { + a.Describe(&p.TeamType, "The type of team. Must be either `pulumi` or `github`.") + a.Describe(&p.Name, "The team's name. Required for \"pulumi\" teams.") + a.Describe(&p.DisplayName, "Optional. Team display name.") + a.Describe(&p.Description, "Optional. Team description.") + a.Describe(&p.Members, "List of team members.") + a.Describe(&p.OrganizationName, "The name of the Pulumi organization the team belongs to.") + a.Describe(&p.GithubTeamId, "The GitHub ID of the team to mirror. Must be in the same GitHub "+ + "organization that the Pulumi org is backed by. Required for \"github\" teams.") } -func ToPulumiServiceTeamInput(inputMap resource.PropertyMap) PulumiServiceTeamInput { - input := PulumiServiceTeamInput{} - - if inputMap["name"].HasValue() && inputMap["name"].IsString() { - input.Name = inputMap["name"].StringValue() - } - - if inputMap["teamType"].HasValue() && inputMap["teamType"].IsString() { - input.Type = inputMap["teamType"].StringValue() - } - - if inputMap["displayName"].HasValue() && inputMap["displayName"].IsString() { - input.DisplayName = inputMap["displayName"].StringValue() - } - - if inputMap["description"].HasValue() && inputMap["description"].IsString() { - input.Description = inputMap["description"].StringValue() - } - - if inputMap["members"].HasValue() && inputMap["members"].IsArray() { - for _, m := range inputMap["members"].ArrayValue() { - if m.HasValue() && m.IsString() { - input.Members = append(input.Members, m.StringValue()) - } - } - - // Sort the members so the order is deterministic - slices.Sort(input.Members) - } - - if inputMap["organizationName"].HasValue() && inputMap["organizationName"].IsString() { - input.OrganizationName = inputMap["organizationName"].StringValue() - } - - if inputMap["githubTeamId"].HasValue() && inputMap["githubTeamId"].IsNumber() { - input.GitHubTeamID = int64(inputMap["githubTeamId"].NumberValue()) - } - - return input +type TeamState struct { + TeamInput + Members []string `pulumi:"members"` } -func (t *PulumiServiceTeamResource) Name() string { - return "pulumiservice:index:Team" +func (p *TeamState) Annotate(a infer.Annotator) { + // TODO: It's not clear if this is necessary. p.Members is a required where + // p.Input.Members is optional, but it might be ok to omit the description here. + a.Describe(&p.Members, "List of team members.") } -func (t *PulumiServiceTeamResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - news := req.GetNews() - newsMap, err := plugin.UnmarshalProperties(news, plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - var failures []*pulumirpc.CheckFailure - - var teamType string - if newsMap["teamType"].HasValue() { - teamType = newsMap["teamType"].StringValue() +func (*Team) Check( + ctx p.Context, name string, oldInputs resource.PropertyMap, newInputs resource.PropertyMap, +) (TeamInput, []p.CheckFailure, error) { + inputs, failures, err := infer.DefaultCheck[TeamInput](newInputs) + if len(failures) > 0 || err != nil { + return inputs, failures, err } - if teamType != "github" && teamType != "pulumi" { - failures = append(failures, &pulumirpc.CheckFailure{ - Reason: fmt.Sprintf("found %q instead of 'pulumi' or 'github'", teamType), - Property: "type", - }) - } - - if teamType == "github" && !newsMap["githubTeamId"].HasValue() { - failures = append(failures, &pulumirpc.CheckFailure{ - Reason: "teams with teamType 'github' require a githubTeamId", - Property: "githubTeamId", - }) - } - - if teamType == "pulumi" && !newsMap["name"].HasValue() { - failures = append(failures, &pulumirpc.CheckFailure{ - Reason: "teams with teamType 'pulumi' require a name", - Property: "name", + switch inputs.TeamType { + case "github": + if inputs.GithubTeamId == 0 { + failures = append(failures, p.CheckFailure{ + Reason: "teams with teamType 'github' require a 'githubTeamId'", + Property: "githubTeamId", + }) + } + case "pulumi": + if len(inputs.Name) == 0 { + failures = append(failures, p.CheckFailure{ + Reason: "teams with teamType 'pulumi' require a 'name'", + Property: "name", + }) + } + default: + failures = append(failures, p.CheckFailure{ + Property: "teamType", + Reason: "must be either 'github' or 'pulumi'", }) } - - return &pulumirpc.CheckResponse{Inputs: news, Failures: failures}, nil + return inputs, failures, nil } -func (t *PulumiServiceTeamResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - err := t.deleteTeam(context.Background(), req.Id) - if err != nil { - return &pbempty.Empty{}, err - } - - return &pbempty.Empty{}, nil +func (*Team) Delete(ctx p.Context, id string, props TeamState) error { + return GetConfig(ctx).Client.DeleteTeam(ctx, props.OrganizationName, props.Name) } -func (t *PulumiServiceTeamResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - olds, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: false, SkipNulls: true}) - if err != nil { - return nil, err - } - - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: false}) +func (*Team) Read( + ctx p.Context, id string, _ TeamInput, _ TeamState, +) (string, TeamInput, TeamState, error) { + orgName, teamName, err := parseTeamId(id) if err != nil { - return nil, err + return "", TeamInput{}, TeamState{}, err } - oldTeam := ToPulumiServiceTeamInput(olds) - newTeam := ToPulumiServiceTeamInput(news) - - changes := pulumirpc.DiffResponse_DIFF_NONE - - if !reflect.DeepEqual(oldTeam, newTeam) { - changes = pulumirpc.DiffResponse_DIFF_SOME - } - - return &pulumirpc.DiffResponse{ - Changes: changes, - Replaces: []string{}, - Stables: []string{}, - DeleteBeforeReplace: false, - }, nil -} - -func (t *PulumiServiceTeamResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - ctx := context.Background() - - orgName, teamName, err := splitSingleSlashString(req.Id) - if err != nil { - return nil, err + team, err := GetConfig(ctx).Client.GetTeam(ctx, orgName, teamName) + if err != nil || team == nil { // team == nil => the team was deleted + return "", TeamInput{}, TeamState{}, err } - team, err := t.client.GetTeam(ctx, orgName, teamName) - if err != nil { - return nil, fmt.Errorf("failed to read Team (%q): %w", req.Id, err) - } - if team == nil { - return &pulumirpc.ReadResponse{}, nil - } - inputs := PulumiServiceTeamInput{ + inputs := TeamInput{ Description: team.Description, DisplayName: team.DisplayName, Name: team.Name, - Type: team.Type, + TeamType: team.Type, OrganizationName: orgName, } for _, m := range team.Members { @@ -210,190 +125,115 @@ func (t *PulumiServiceTeamResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc } // Sort the members so the order is deterministic slices.Sort(inputs.Members) - props, err := plugin.MarshalProperties(inputs.ToPropertyMap(), plugin.MarshalOptions{}) - if err != nil { - return nil, fmt.Errorf("failed to marshal inputs to properties: %w", err) - } - return &pulumirpc.ReadResponse{ - Id: req.Id, - Properties: props, - Inputs: props, + + // TODO: We could be smart about allowing inputs.Members to be nil if the input + // state has it as nil. This would allow better imports + return id, inputs, TeamState{ + TeamInput: inputs, + Members: inputs.Members, }, nil + } -func (t *PulumiServiceTeamResource) Update(req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - ctx := context.Background() - inputsOld, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - inputsNew, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err +func (*Team) Update(ctx p.Context, id string, olds TeamState, news TeamInput, preview bool) (TeamState, error) { + if preview { + return TeamState{TeamInput: news}, nil } - teamOld := ToPulumiServiceTeamInput(inputsOld) - teamNew := ToPulumiServiceTeamInput(inputsNew) + client := GetConfig(ctx).Client - inputsChanged := teamOld - if teamOld.Description != teamNew.Description || teamOld.DisplayName != teamNew.Description { + inputsChanged := olds + if olds.Description != news.Description || olds.DisplayName != news.Description { - inputsChanged.Description = teamNew.Description - inputsChanged.DisplayName = teamNew.DisplayName + inputsChanged.Description = news.Description + inputsChanged.DisplayName = news.DisplayName - err = t.updateTeam(context.Background(), inputsChanged) + err := client.UpdateTeam(ctx, + inputsChanged.OrganizationName, inputsChanged.Name, + inputsChanged.DisplayName, inputsChanged.Description) if err != nil { - return nil, err + return TeamState{}, err } } // github teams can't manage membership. - if !slices.Equal(teamOld.Members, teamNew.Members) && teamNew.Type != "github" { - inputsChanged.Members = teamNew.Members - for _, usernameToDelete := range teamOld.Members { - if !slices.Contains(teamNew.Members, usernameToDelete) { - err := t.deleteFromTeam(ctx, teamNew.OrganizationName, teamNew.Name, usernameToDelete) + // + // TODO: This should indicate a replace instead of simply ignoring the required + // change. + // + // That can be done with a custom diff implementation. + if !slices.Equal(olds.Members, news.Members) && news.TeamType != "github" { + inputsChanged.Members = news.Members + for _, usernameToDelete := range olds.Members { + if !slices.Contains(news.Members, usernameToDelete) { + // TODO: At this point, we should be returning partial + // state unless DeleteMemberFromTeam is idempotent. + err := client.DeleteMemberFromTeam(ctx, + news.OrganizationName, news.Name, usernameToDelete) if err != nil { - return nil, err + return TeamState{}, err } } } - for _, usernameToAdd := range teamNew.Members { - if !slices.Contains(teamOld.Members, usernameToAdd) { - err := t.addToTeam(ctx, teamNew.OrganizationName, teamNew.Name, usernameToAdd) + for _, usernameToAdd := range news.Members { + if !slices.Contains(olds.Members, usernameToAdd) { + // TODO: Likewise, we should ensure that we handle a + // partial update unless AddMemberToTeam to idempotent. + err := client.AddMemberToTeam(ctx, news.OrganizationName, news.Name, usernameToAdd) if err != nil { - return nil, err + return TeamState{}, err } } } } - outputProperties, err := teamNew.ToRpc() - if err != nil { - return nil, err - } - return &pulumirpc.UpdateResponse{ - Properties: outputProperties, - }, nil + return inputsChanged, nil } -func (t *PulumiServiceTeamResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - ctx := context.Background() - inputs, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err +func (*Team) Create( + ctx p.Context, name string, input TeamInput, preview bool, +) (string, TeamState, error) { + if preview { + return "", TeamState{TeamInput: input}, nil } - - inputsTeam := ToPulumiServiceTeamInput(inputs) - team, err := t.createTeam(ctx, inputsTeam) + client := GetConfig(ctx).Client + team, err := client.CreateTeam(ctx, + input.OrganizationName, input.Name, + input.TeamType, input.DisplayName, + input.Description, input.GithubTeamId) if err != nil { - return nil, fmt.Errorf("error creating team '%s': %s", inputsTeam.Name, err.Error()) + return "", TeamState{}, fmt.Errorf("error creating team '%s': %w", input.Name, err) } - // We have now created a team. It is very important to ensure that from this point on, any other error - // below returns the ID using the `pulumirpc.ErrorResourceInitFailed` error details annotation. Otherwise, - // we leak a team resource. We ensure that we wrap any errors in a partial error and return that to the RPC. + id := fmt.Sprintf("%s/%s", input.OrganizationName, team.Name) + state := TeamState{TeamInput: input} - // make copy of input so we can safely modify output without affecting input - inProgTeam := ToPulumiServiceTeamInput(inputsTeam.ToPropertyMap()) - inProgTeam.Members = nil + // We have now created a team. + // + // It is very important to ensure that from this point on, any other error below + // returns an [infer.ResourceInitFailedError] Otherwise, we leak a team resource. + retErr := func(err error) (string, TeamState, error) { + return id, state, infer.ResourceInitFailedError{ + Reasons: []string{err.Error()}, + } + } - for _, memberToAdd := range inputsTeam.Members { - err := t.addToTeam(ctx, inputsTeam.OrganizationName, inputsTeam.Name, memberToAdd) + for _, memberToAdd := range input.Members { + err := client.AddMemberToTeam(ctx, input.OrganizationName, input.Name, memberToAdd) if err != nil { - return nil, partialError(*team, err, inProgTeam, inputsTeam) + return retErr(err) } // if we've successfully added member to team, save them to the state we're going to return // so that a re-run can detect the left over members to add via Update - inProgTeam.Members = append(inProgTeam.Members, memberToAdd) - } - - outputProperties, err := inProgTeam.ToRpc() - if err != nil { - return nil, partialError(*team, err, inProgTeam, inputsTeam) - } - - return &pulumirpc.CreateResponse{ - Id: *team, - Properties: outputProperties, - }, nil -} - -func (t *PulumiServiceTeamResource) updateTeam(ctx context.Context, input PulumiServiceTeamInput) error { - err := t.client.UpdateTeam(ctx, input.OrganizationName, input.Name, input.DisplayName, input.Description) - if err != nil { - return err + state.Members = append(state.Members, memberToAdd) } - return nil -} - -func (t *PulumiServiceTeamResource) createTeam(ctx context.Context, input PulumiServiceTeamInput) (*string, error) { - team, err := t.client.CreateTeam(ctx, input.OrganizationName, input.Name, input.Type, input.DisplayName, input.Description, input.GitHubTeamID) - if err != nil { - return nil, err - } - - teamUrn := fmt.Sprintf("%s/%s", input.OrganizationName, team.Name) - return &teamUrn, nil -} - -func (t *PulumiServiceTeamResource) deleteFromTeam(ctx context.Context, orgName string, teamName string, userName string) error { - if len(orgName) == 0 { - return errors.New("orgname must not be empty") - } - - if len(teamName) == 0 { - return errors.New("teamname must not be empty") - } - - if len(userName) == 0 { - return errors.New("username must not be empty") - } - - return t.client.DeleteMemberFromTeam(ctx, orgName, teamName, userName) -} - -func (t *PulumiServiceTeamResource) addToTeam(ctx context.Context, orgName string, teamName string, userName string) error { - return t.client.AddMemberToTeam(ctx, orgName, teamName, userName) -} -func (t *PulumiServiceTeamResource) deleteTeam(ctx context.Context, id string) error { - orgName, teamName, err := splitSingleSlashString(id) - if err != nil { - return err - } - err = t.client.DeleteTeam(ctx, orgName, teamName) - if err != nil { - return err - } - return nil -} - -// partialError creates an error for resources that did not complete an operation in progress. -// The last known state of the object is included in the error so that it can be checkpointed. -func partialError(id string, err error, state PulumiServiceTeamInput, inputs PulumiServiceTeamInput) error { - stateRpc, stateSerErr := state.ToRpc() - inputRpc, inputSerErr := inputs.ToRpc() - - // combine errors if we can't serialize state or inputs for some reason - if stateSerErr != nil { - err = fmt.Errorf("err serializing state: %v, (src error: %v)", stateSerErr, err) - } - if inputSerErr != nil { - err = fmt.Errorf("err serializing inputs: %v (src error: %v)", inputSerErr, err) - } - detail := pulumirpc.ErrorResourceInitFailed{ - Id: id, - Properties: stateRpc, - Reasons: []string{err.Error()}, - Inputs: inputRpc, - } - return rpcerror.WithDetails(rpcerror.New(codes.Unknown, err.Error()), &detail) + return id, state, nil } -func splitSingleSlashString(id string) (string, string, error) { - // format: organization/webhookName +// format: organization/teamName +func parseTeamId(id string) (string, string, error) { s := strings.Split(id, "/") if len(s) != 2 { return "", "", fmt.Errorf("%q is invalid, must contain a single slash ('/')", id) From 905c37e3dcaf3fbb28d4ba75cb40c56853a9b65f Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Fri, 5 Apr 2024 14:39:37 +0200 Subject: [PATCH 14/17] Port TeamAccessToken --- provider/pkg/provider/provider.go | 1 + provider/pkg/provider/team_access_token.go | 201 +++++++++------------ 2 files changed, 84 insertions(+), 118 deletions(-) diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 06dbad3e..ffff439d 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -91,6 +91,7 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re infer.Resource[*AgentPool](), infer.Resource[*AccessToken](), infer.Resource[*Team](), + infer.Resource[*TeamAccessToken](), }, }))(nil) } diff --git a/provider/pkg/provider/team_access_token.go b/provider/pkg/provider/team_access_token.go index f2bb808f..507d3cd5 100644 --- a/provider/pkg/provider/team_access_token.go +++ b/provider/pkg/provider/team_access_token.go @@ -1,165 +1,130 @@ package provider import ( - "context" "fmt" "strings" - pbempty "google.golang.org/protobuf/types/known/emptypb" - - "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" ) -type PulumiServiceTeamAccessTokenResource struct { - client *pulumiapi.Client -} - -type PulumiServiceTeamAccessTokenInput struct { - Name string - OrgName string - TeamName string - Description string -} - -func (i *PulumiServiceTeamAccessTokenInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["name"] = resource.NewPropertyValue(i.Name) - pm["description"] = resource.NewPropertyValue(i.Description) - pm["organizationName"] = resource.NewPropertyValue(i.OrgName) - pm["teamName"] = resource.NewPropertyValue(i.TeamName) - return pm -} - -func (t *PulumiServiceTeamAccessTokenResource) ToPulumiServiceAccessTokenInput(inputMap resource.PropertyMap) PulumiServiceTeamAccessTokenInput { - input := PulumiServiceTeamAccessTokenInput{} +var ( + // Life-cycle participation + _ infer.CustomResource[TeamAccessTokenInput, TeamAccessTokenState] = (*TeamAccessToken)(nil) + _ infer.CustomDelete[TeamAccessTokenState] = (*TeamAccessToken)(nil) + _ infer.CustomRead[TeamAccessTokenInput, TeamAccessTokenState] = (*TeamAccessToken)(nil) - if inputMap["name"].HasValue() && inputMap["name"].IsString() { - input.Name = inputMap["name"].StringValue() - } + // Schema documentation + _ infer.Annotated = (*TeamAccessToken)(nil) + _ infer.Annotated = (*TeamAccessTokenInput)(nil) + _ infer.Annotated = (*TeamAccessTokenState)(nil) - if inputMap["description"].HasValue() && inputMap["description"].IsString() { - input.Description = inputMap["description"].StringValue() - } + // Secret values + _ infer.ExplicitDependencies[TeamAccessTokenInput, TeamAccessTokenState] = (*TeamAccessToken)(nil) +) - if inputMap["teamName"].HasValue() && inputMap["teamName"].IsString() { - input.TeamName = inputMap["teamName"].StringValue() - } +type TeamAccessToken struct{} - if inputMap["organizationName"].HasValue() && inputMap["organizationName"].IsString() { - input.OrgName = inputMap["organizationName"].StringValue() - } +func (p *TeamAccessToken) Annotate(a infer.Annotator) { + a.Describe(p, "The Pulumi Cloud allows users to create access tokens scoped to team. "+ + "Team access tokens is a resource to create them and assign them to a team") +} - return input +func (p *TeamAccessToken) WireDependencies( + f infer.FieldSelector, args *TeamAccessTokenInput, state *TeamAccessTokenState, +) { + f.OutputField(&state.Value).AlwaysSecret() } -func (t *PulumiServiceTeamAccessTokenResource) Name() string { - return "pulumiservice:index:TeamAccessToken" +type TeamAccessTokenInput struct { + Name string `pulumi:"name"` + OrgName string `pulumi:"organizationName"` + TeamName string `pulumi:"teamName"` + Description string `pulumi:"description,optional"` } -func (t *PulumiServiceTeamAccessTokenResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - return diffAccessTokenProperties(req, []string{"name", "organizationName", "teamName", "description"}) +func (p *TeamAccessTokenInput) Annotate(a infer.Annotator) { + // TODO: Fix typo in description + a.Describe(&p.Name, "The name for the token. "+ + "This must be unique amongst all machine tokens within your organization.") + a.Describe(&p.OrgName, "The organization's name.") + a.Describe(&p.TeamName, "The team name.") + a.Describe(&p.Description, "Optional. Description for the token.") } -func (t *PulumiServiceTeamAccessTokenResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - ctx := context.Background() - err := t.deleteTeamAccessToken(ctx, req.Id) +type TeamAccessTokenState struct { + TeamAccessTokenInput - if err != nil { - return &pbempty.Empty{}, err - } + Value string `pulumi:"value"` +} - return &pbempty.Empty{}, nil +func (p *TeamAccessTokenState) Annotate(a infer.Annotator) { + a.Describe(&p.Value, "The token's value.") } -func (t *PulumiServiceTeamAccessTokenResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - ctx := context.Background() - inputs, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) +func (*TeamAccessToken) Delete(ctx p.Context, id string, state TeamAccessTokenState) error { + _, _, _, tokenId, err := splitTeamAccessTokenId(id) if err != nil { - return nil, err + return err } + return GetConfig(ctx).Client.DeleteTeamAccessToken(ctx, tokenId, state.OrgName, state.TeamName) +} - inputsAccessToken := t.ToPulumiServiceAccessTokenInput(inputs) - - accessToken, err := t.createTeamAccessToken(ctx, inputsAccessToken) - if err != nil { - return nil, fmt.Errorf("error creating access token '%s': %s", inputsAccessToken.Description, err.Error()) +func (*TeamAccessToken) Create( + ctx p.Context, name string, input TeamAccessTokenInput, preview bool, +) (string, TeamAccessTokenState, error) { + if preview { + return "", TeamAccessTokenState{TeamAccessTokenInput: input}, nil } - outputStore := resource.PropertyMap{} - outputStore["__inputs"] = resource.NewObjectProperty(inputs) - outputStore["value"] = resource.NewPropertyValue(accessToken.TokenValue) - - outputProperties, err := plugin.MarshalProperties( - outputStore, - plugin.MarshalOptions{}, - ) + accessToken, err := GetConfig(ctx).Client.CreateTeamAccessToken(ctx, + input.Name, input.OrgName, input.TeamName, input.Description) if err != nil { - return nil, err + return "", TeamAccessTokenState{}, err } - urn := fmt.Sprintf(inputsAccessToken.OrgName + "/" + inputsAccessToken.TeamName + "/" + inputsAccessToken.Name + "/" + accessToken.ID) + id := fmt.Sprintf(input.OrgName + "/" + input.TeamName + "/" + input.Name + "/" + accessToken.ID) - return &pulumirpc.CreateResponse{ - Id: urn, - Properties: outputProperties, + return id, TeamAccessTokenState{ + TeamAccessTokenInput: input, + Value: accessToken.TokenValue, }, nil } -func (t *PulumiServiceTeamAccessTokenResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - return &pulumirpc.CheckResponse{Inputs: req.News, Failures: nil}, nil -} - -func (t *PulumiServiceTeamAccessTokenResource) Update(_ *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - // all updates are destructive, so we just call Create. - return nil, fmt.Errorf("unexpected call to update, expected create to be called instead") -} - -func (t *PulumiServiceTeamAccessTokenResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - ctx := context.Background() - urn := req.GetId() +func (*TeamAccessToken) Read( + ctx p.Context, id string, inputs TeamAccessTokenInput, state TeamAccessTokenState, +) (string, TeamAccessTokenInput, TeamAccessTokenState, error) { - orgName, teamName, _, tokenId, err := splitTeamAccessTokenId(urn) - - // the team access token is immutable; if we get nil it got deleted, otherwise all data is the same - accessToken, err := t.client.GetTeamAccessToken(ctx, tokenId, orgName, teamName) + orgName, teamName, tokenName, tokenId, err := splitTeamAccessTokenId(id) if err != nil { - return nil, err - } - if accessToken == nil { - return &pulumirpc.ReadResponse{}, nil + return "", TeamAccessTokenInput{}, TeamAccessTokenState{}, err } - return &pulumirpc.ReadResponse{ - Id: req.GetId(), - Properties: req.GetProperties(), - }, nil -} - -func (t *PulumiServiceTeamAccessTokenResource) Invoke(_ *pulumiserviceProvider, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error) { - return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) -} - -func (t *PulumiServiceTeamAccessTokenResource) createTeamAccessToken(ctx context.Context, input PulumiServiceTeamAccessTokenInput) (*pulumiapi.AccessToken, error) { - - accessToken, err := t.client.CreateTeamAccessToken(ctx, input.Name, input.OrgName, input.TeamName, input.Description) - if err != nil { - return nil, err + // the team access token is immutable; if we get nil it got deleted + accessToken, err := GetConfig(ctx).Client.GetTeamAccessToken(ctx, tokenId, orgName, teamName) + if err != nil || accessToken == nil { + return "", TeamAccessTokenInput{}, TeamAccessTokenState{}, err } - return accessToken, nil -} - -func (t *PulumiServiceTeamAccessTokenResource) deleteTeamAccessToken(ctx context.Context, id string) error { - orgName, teamName, _, tokenId, err := splitTeamAccessTokenId(id) - if err != nil { - return err + input := TeamAccessTokenInput{ + Name: tokenName, + OrgName: orgName, + TeamName: teamName, + Description: accessToken.Description, } - return t.client.DeleteTeamAccessToken(ctx, tokenId, orgName, teamName) + return id, input, TeamAccessTokenState{ + TeamAccessTokenInput: input, + + // TODO[BUG]: GetTeamAccessToken doesn't set the token value. Since the + // value is immutable, this works for Refresh. This does not work for + // import. + // + // TODO[DOCS]: That .Value is invalid after import should at least be + // mentioned in the docs. + Value: state.Value, + }, nil } func splitTeamAccessTokenId(id string) (string, string, string, string, error) { From 708f90660dd2b8ff2f8577682dc3e1ef16c4f0e9 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Fri, 5 Apr 2024 14:58:13 +0200 Subject: [PATCH 15/17] Port OrgAccessToken --- provider/pkg/provider/org_access_token.go | 196 ++++++++-------------- provider/pkg/provider/provider.go | 1 + 2 files changed, 70 insertions(+), 127 deletions(-) diff --git a/provider/pkg/provider/org_access_token.go b/provider/pkg/provider/org_access_token.go index 9eff7b22..d77b2a84 100644 --- a/provider/pkg/provider/org_access_token.go +++ b/provider/pkg/provider/org_access_token.go @@ -1,170 +1,112 @@ package provider import ( - "context" "fmt" "strings" - pbempty "google.golang.org/protobuf/types/known/emptypb" - - "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" ) -type PulumiServiceOrgAccessTokenResource struct { - client *pulumiapi.Client -} - -type PulumiServiceOrgAccessTokenInput struct { - OrgName string - Description string - Name string - Admin bool -} - -func (i *PulumiServiceOrgAccessTokenInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["name"] = resource.NewPropertyValue(i.Name) - pm["description"] = resource.NewPropertyValue(i.Description) - pm["organizationName"] = resource.NewPropertyValue(i.OrgName) - pm["admin"] = resource.NewPropertyValue(i.Admin) - return pm -} - -func (ot *PulumiServiceOrgAccessTokenResource) ToPulumiServiceOrgAccessTokenInput(inputMap resource.PropertyMap) PulumiServiceOrgAccessTokenInput { - input := PulumiServiceOrgAccessTokenInput{} +var ( + // Life-cycle participation + _ infer.CustomResource[OrgAccessTokenInput, OrgAccessTokenState] = (*OrgAccessToken)(nil) + _ infer.CustomDelete[OrgAccessTokenState] = (*OrgAccessToken)(nil) + _ infer.CustomRead[OrgAccessTokenInput, OrgAccessTokenState] = (*OrgAccessToken)(nil) - if inputMap["name"].HasValue() && inputMap["name"].IsString() { - input.Name = inputMap["name"].StringValue() - } + // Schema documentation + _ infer.Annotated = (*OrgAccessToken)(nil) + _ infer.Annotated = (*OrgAccessTokenInput)(nil) + _ infer.Annotated = (*OrgAccessTokenState)(nil) - if inputMap["description"].HasValue() && inputMap["description"].IsString() { - input.Description = inputMap["description"].StringValue() - } + // Secret values + _ infer.ExplicitDependencies[OrgAccessTokenInput, OrgAccessTokenState] = (*OrgAccessToken)(nil) +) - if inputMap["organizationName"].HasValue() && inputMap["organizationName"].IsString() { - input.OrgName = inputMap["organizationName"].StringValue() - } +type OrgAccessToken struct{} - if inputMap["admin"].HasValue() && inputMap["admin"].IsBool() { - input.Admin = inputMap["admin"].BoolValue() - } - - return input +func (p *OrgAccessToken) Annotate(a infer.Annotator) { + a.Describe(p, "The Pulumi Cloud allows users to create access tokens scoped to orgs. "+ + "Org access tokens is a resource to create them and assign them to an org") } -func (ot *PulumiServiceOrgAccessTokenResource) Name() string { - return "pulumiservice:index:OrgAccessToken" +func (p *OrgAccessToken) WireDependencies( + f infer.FieldSelector, args *OrgAccessTokenInput, state *OrgAccessTokenState, +) { + f.OutputField(&state.Value).AlwaysSecret() } -func (ot *PulumiServiceOrgAccessTokenResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - return diffAccessTokenProperties(req, []string{"name", "organizationName", "description", "admin"}) +type OrgAccessTokenInput struct { + OrgName string `pulumi:"organizationName"` + Description string `pulumi:"description,optional"` + Name string `pulumi:"name"` + Admin bool `pulumi:"admin,optional"` } -func (ot *PulumiServiceOrgAccessTokenResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - ctx := context.Background() - err := ot.deleteOrgAccessToken(ctx, req.Id) +func (p *OrgAccessTokenInput) Annotate(a infer.Annotator) { + a.Describe(&p.OrgName, "The organization's name.") + a.Describe(&p.Description, "Optional. Description for the token.") + a.Describe(&p.Name, "The name for the token.") + a.Describe(&p.Admin, "Optional. True if this is an admin token.") +} - if err != nil { - return &pbempty.Empty{}, err - } +type OrgAccessTokenState struct { + OrgAccessTokenInput + Value string `pulumi:"value"` +} - return &pbempty.Empty{}, nil +func (p *OrgAccessTokenState) Annotate(a infer.Annotator) { + a.Describe(&p.Value, "The token's value.") } -func (ot *PulumiServiceOrgAccessTokenResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - ctx := context.Background() - inputs, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) +func (*OrgAccessToken) Delete(ctx p.Context, id string, props OrgAccessTokenState) error { + orgName, _, tokenId, err := splitOrgAccessTokenId(id) if err != nil { - return nil, err + return err } + return GetConfig(ctx).Client.DeleteOrgAccessToken(ctx, tokenId, orgName) +} - inputsAccessToken := ot.ToPulumiServiceOrgAccessTokenInput(inputs) - - accessToken, err := ot.createOrgAccessToken(ctx, inputsAccessToken) - if err != nil { - return nil, fmt.Errorf("error creating access token '%s': %s", inputsAccessToken.Name, err.Error()) +func (*OrgAccessToken) Create( + ctx p.Context, name string, input OrgAccessTokenInput, preview bool, +) (string, OrgAccessTokenState, error) { + if preview { + return "", OrgAccessTokenState{OrgAccessTokenInput: input}, nil } - outputStore := resource.PropertyMap{} - outputStore["__inputs"] = resource.NewObjectProperty(inputs) - outputStore["name"] = inputs["name"] - outputStore["organizationName"] = inputs["organizationName"] - outputStore["description"] = inputs["description"] - outputStore["admin"] = inputs["admin"] - outputStore["value"] = resource.NewPropertyValue(accessToken.TokenValue) - - outputProperties, err := plugin.MarshalProperties( - outputStore, - plugin.MarshalOptions{}, - ) + accessToken, err := GetConfig(ctx).Client.CreateOrgAccessToken(ctx, + input.Name, input.OrgName, input.Description, input.Admin) if err != nil { - return nil, err + return "", OrgAccessTokenState{}, err } - urn := fmt.Sprintf(inputsAccessToken.OrgName + "/" + inputsAccessToken.Name + "/" + accessToken.ID) + id := fmt.Sprintf(input.OrgName + "/" + input.Name + "/" + accessToken.ID) - return &pulumirpc.CreateResponse{ - Id: urn, - Properties: outputProperties, - }, nil + return id, OrgAccessTokenState{OrgAccessTokenInput: input, Value: accessToken.TokenValue}, nil } -func (ot *PulumiServiceOrgAccessTokenResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - return &pulumirpc.CheckResponse{Inputs: req.News, Failures: nil}, nil -} - -func (ot *PulumiServiceOrgAccessTokenResource) Update(_ *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - // all updates are destructive, so we just call Create. - return nil, fmt.Errorf("unexpected call to update, expected create to be called instead") -} - -func (ot *PulumiServiceOrgAccessTokenResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - ctx := context.Background() - urn := req.GetId() - - orgName, _, tokenId, err := splitOrgAccessTokenId(urn) +func (*OrgAccessToken) Read( + ctx p.Context, id string, inputs OrgAccessTokenInput, state OrgAccessTokenState, +) (string, OrgAccessTokenInput, OrgAccessTokenState, error) { + orgName, tokenName, tokenId, err := splitOrgAccessTokenId(id) // the org access token is immutable; if we get nil it got deleted, otherwise all data is the same - accessToken, err := ot.client.GetOrgAccessToken(ctx, tokenId, orgName) - if err != nil { - return nil, err - } - if accessToken == nil { - return &pulumirpc.ReadResponse{}, nil - } - - return &pulumirpc.ReadResponse{ - Id: req.GetId(), - Properties: req.GetProperties(), - }, nil -} - -func (ot *PulumiServiceOrgAccessTokenResource) Invoke(_ *pulumiserviceProvider, req *pulumirpc.InvokeRequest) (*pulumirpc.InvokeResponse, error) { - return &pulumirpc.InvokeResponse{Return: nil}, fmt.Errorf("unknown function '%s'", req.Tok) -} - -func (ot *PulumiServiceOrgAccessTokenResource) createOrgAccessToken(ctx context.Context, input PulumiServiceOrgAccessTokenInput) (*pulumiapi.AccessToken, error) { - - accessToken, err := ot.client.CreateOrgAccessToken(ctx, input.Name, input.OrgName, input.Description, input.Admin) - if err != nil { - return nil, err + accessToken, err := GetConfig(ctx).Client.GetOrgAccessToken(ctx, tokenId, orgName) + if err != nil || accessToken == nil { + return "", OrgAccessTokenInput{}, OrgAccessTokenState{}, err } - return accessToken, nil -} + inputs.OrgName = orgName + inputs.Description = accessToken.Description + inputs.Name = tokenName -func (ot *PulumiServiceOrgAccessTokenResource) deleteOrgAccessToken(ctx context.Context, id string) error { - // we don't need the token name when we delete - orgName, _, tokenId, err := splitOrgAccessTokenId(id) - if err != nil { - return err - } - return ot.client.DeleteOrgAccessToken(ctx, tokenId, orgName) + // TODO[BUG]: Admin and Value are not recoverable from a import. + return id, inputs, OrgAccessTokenState{ + OrgAccessTokenInput: inputs, + Value: state.Value, + }, nil } func splitOrgAccessTokenId(id string) (string, string, string, error) { diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index ffff439d..51ed0f4b 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -92,6 +92,7 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re infer.Resource[*AccessToken](), infer.Resource[*Team](), infer.Resource[*TeamAccessToken](), + infer.Resource[*OrgAccessToken](), }, }))(nil) } From e13daeb6eced8719db507e140e6c9647360f0005 Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Fri, 5 Apr 2024 17:00:25 +0200 Subject: [PATCH 16/17] Port Webhook --- provider/pkg/provider/access_token.go | 9 +- provider/pkg/provider/agent_pool.go | 9 +- provider/pkg/provider/org_access_token.go | 11 +- provider/pkg/provider/provider.go | 24 +- provider/pkg/provider/team_access_token.go | 11 +- provider/pkg/provider/webhook.go | 589 +++++++++------------ 6 files changed, 246 insertions(+), 407 deletions(-) diff --git a/provider/pkg/provider/access_token.go b/provider/pkg/provider/access_token.go index 79a97d83..cdbfcf8d 100644 --- a/provider/pkg/provider/access_token.go +++ b/provider/pkg/provider/access_token.go @@ -15,9 +15,6 @@ var ( _ infer.Annotated = (*AccessToken)(nil) _ infer.Annotated = (*AccessTokenInput)(nil) _ infer.Annotated = (*AccessTokenState)(nil) - - // Secret values - _ infer.ExplicitDependencies[AccessTokenInput, AccessTokenState] = (*AccessToken)(nil) ) type AccessToken struct{} @@ -37,7 +34,7 @@ func (p *AccessTokenInput) Annotate(a infer.Annotator) { type AccessTokenState struct { AccessTokenInput TokenID string `pulumi:"tokenId"` - Value string `pulumi:"value"` + Value string `pulumi:"value" provider:"secret"` } func (p *AccessTokenState) Annotate(a infer.Annotator) { @@ -45,10 +42,6 @@ func (p *AccessTokenState) Annotate(a infer.Annotator) { a.Describe(&p.Value, "The token's value.") } -func (*AccessToken) WireDependencies(f infer.FieldSelector, args *AccessTokenInput, state *AccessTokenState) { - f.OutputField(&state.Value).AlwaysSecret() -} - func (*AccessToken) Delete(ctx p.Context, id string, props AccessTokenState) error { return GetConfig(ctx).Client.DeleteAccessToken(ctx, props.TokenID) } diff --git a/provider/pkg/provider/agent_pool.go b/provider/pkg/provider/agent_pool.go index f22434b6..d40f7bda 100644 --- a/provider/pkg/provider/agent_pool.go +++ b/provider/pkg/provider/agent_pool.go @@ -25,9 +25,6 @@ var ( _ infer.Annotated = (*AgentPool)(nil) _ infer.Annotated = (*AgentPoolInput)(nil) _ infer.Annotated = (*AgentPoolState)(nil) - - // Secret values - _ infer.ExplicitDependencies[AgentPoolInput, AgentPoolState] = (*AgentPool)(nil) ) func (p *AgentPool) Annotate(a infer.Annotator) { @@ -49,7 +46,7 @@ func (p *AgentPoolInput) Annotate(a infer.Annotator) { type AgentPoolState struct { AgentPoolInput AgentPoolID string `pulumi:"agentPoolId"` - TokenValue string `pulumi:"tokenValue"` + TokenValue string `pulumi:"tokenValue" provider:"secret"` } func (p *AgentPoolState) Annotate(a infer.Annotator) { @@ -57,10 +54,6 @@ func (p *AgentPoolState) Annotate(a infer.Annotator) { a.Describe(&p.TokenValue, "The agent pool's token's value.") } -func (*AgentPool) WireDependencies(f infer.FieldSelector, args *AgentPoolInput, state *AgentPoolState) { - f.OutputField(&state.TokenValue).AlwaysSecret() -} - func (*AgentPool) Delete(ctx p.Context, id string, props AgentPoolState) error { return GetConfig(ctx).Client.DeleteAgentPool(ctx, props.AgentPoolID, props.OrganizationName) } diff --git a/provider/pkg/provider/org_access_token.go b/provider/pkg/provider/org_access_token.go index d77b2a84..bcf6a4bf 100644 --- a/provider/pkg/provider/org_access_token.go +++ b/provider/pkg/provider/org_access_token.go @@ -18,9 +18,6 @@ var ( _ infer.Annotated = (*OrgAccessToken)(nil) _ infer.Annotated = (*OrgAccessTokenInput)(nil) _ infer.Annotated = (*OrgAccessTokenState)(nil) - - // Secret values - _ infer.ExplicitDependencies[OrgAccessTokenInput, OrgAccessTokenState] = (*OrgAccessToken)(nil) ) type OrgAccessToken struct{} @@ -30,12 +27,6 @@ func (p *OrgAccessToken) Annotate(a infer.Annotator) { "Org access tokens is a resource to create them and assign them to an org") } -func (p *OrgAccessToken) WireDependencies( - f infer.FieldSelector, args *OrgAccessTokenInput, state *OrgAccessTokenState, -) { - f.OutputField(&state.Value).AlwaysSecret() -} - type OrgAccessTokenInput struct { OrgName string `pulumi:"organizationName"` Description string `pulumi:"description,optional"` @@ -52,7 +43,7 @@ func (p *OrgAccessTokenInput) Annotate(a infer.Annotator) { type OrgAccessTokenState struct { OrgAccessTokenInput - Value string `pulumi:"value"` + Value string `pulumi:"value" provider:"secret"` } func (p *OrgAccessTokenState) Annotate(a infer.Annotator) { diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index 51ed0f4b..e7093158 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -15,8 +15,6 @@ package provider import ( - pbempty "google.golang.org/protobuf/types/known/emptypb" - p "github.com/pulumi/pulumi-go-provider" "github.com/pulumi/pulumi-go-provider/infer" "github.com/pulumi/pulumi-go-provider/middleware/schema" @@ -24,27 +22,6 @@ import ( pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" ) -type PulumiServiceResource interface { - Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) - Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) - Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) - Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) - Update(req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) - Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) - Name() string -} - -type pulumiserviceProvider struct { - pulumirpc.UnimplementedResourceProviderServer - - host *provider.HostClient - name string - version string - schema string - pulumiResources []PulumiServiceResource - AccessToken string -} - func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.ResourceProviderServer, error) { return p.RawServer(name, version, infer.Provider(infer.Options{ Metadata: schema.Metadata{ @@ -93,6 +70,7 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re infer.Resource[*Team](), infer.Resource[*TeamAccessToken](), infer.Resource[*OrgAccessToken](), + infer.Resource[*Webhook](), }, }))(nil) } diff --git a/provider/pkg/provider/team_access_token.go b/provider/pkg/provider/team_access_token.go index 507d3cd5..573d5e82 100644 --- a/provider/pkg/provider/team_access_token.go +++ b/provider/pkg/provider/team_access_token.go @@ -18,9 +18,6 @@ var ( _ infer.Annotated = (*TeamAccessToken)(nil) _ infer.Annotated = (*TeamAccessTokenInput)(nil) _ infer.Annotated = (*TeamAccessTokenState)(nil) - - // Secret values - _ infer.ExplicitDependencies[TeamAccessTokenInput, TeamAccessTokenState] = (*TeamAccessToken)(nil) ) type TeamAccessToken struct{} @@ -30,12 +27,6 @@ func (p *TeamAccessToken) Annotate(a infer.Annotator) { "Team access tokens is a resource to create them and assign them to a team") } -func (p *TeamAccessToken) WireDependencies( - f infer.FieldSelector, args *TeamAccessTokenInput, state *TeamAccessTokenState, -) { - f.OutputField(&state.Value).AlwaysSecret() -} - type TeamAccessTokenInput struct { Name string `pulumi:"name"` OrgName string `pulumi:"organizationName"` @@ -55,7 +46,7 @@ func (p *TeamAccessTokenInput) Annotate(a infer.Annotator) { type TeamAccessTokenState struct { TeamAccessTokenInput - Value string `pulumi:"value"` + Value string `pulumi:"value" provider:"secret"` } func (p *TeamAccessTokenState) Annotate(a infer.Annotator) { diff --git a/provider/pkg/provider/webhook.go b/provider/pkg/provider/webhook.go index 47deb120..010c1785 100644 --- a/provider/pkg/provider/webhook.go +++ b/provider/pkg/provider/webhook.go @@ -5,228 +5,200 @@ import ( "fmt" "strings" - pbempty "google.golang.org/protobuf/types/known/emptypb" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" + "github.com/pulumi/pulumi/sdk/v3/go/common/util/contract" "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" ) -type PulumiServiceWebhookResource struct { - client pulumiapi.WebhookClient -} +var ( + // Life-cycle participation + _ infer.CustomCheck[WebhookInput] = (*Webhook)(nil) + _ infer.CustomResource[WebhookInput, WebhookState] = (*Webhook)(nil) + _ infer.CustomUpdate[WebhookInput, WebhookState] = (*Webhook)(nil) + _ infer.CustomRead[WebhookInput, WebhookState] = (*Webhook)(nil) + _ infer.CustomDelete[WebhookState] = (*Webhook)(nil) + + // Schema documentation + _ infer.Annotated = (*Webhook)(nil) + _ infer.Annotated = (*WebhookInput)(nil) + _ infer.Annotated = (*WebhookState)(nil) +) -type PulumiServiceWebhookInput struct { - Active bool - DisplayName string - PayloadUrl string - Secret *string - OrganizationName string - ProjectName *string - StackName *string - Format *string - Filters []string -} +type Webhook struct{} -type PulumiServiceWebhookProperties struct { - PulumiServiceWebhookInput - Name string -} +func (p *Webhook) Annotate(a infer.Annotator) { + a.Describe(p, ` Pulumi Webhooks allow you to notify external services of events happening within your Pulumi organization or stack. For example, you can trigger a notification whenever a stack is updated. Whenever an event occurs, Pulumi will send an HTTP POST request to all registered webhooks. The webhook can then be used to emit some notification, start running integration tests, or even update additional stacks. -func (i *PulumiServiceWebhookInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["active"] = resource.NewPropertyValue(i.Active) - pm["displayName"] = resource.NewPropertyValue(i.DisplayName) - pm["payloadUrl"] = resource.NewPropertyValue(i.PayloadUrl) - if i.Secret != nil { - pm["secret"] = resource.NewPropertyValue(*i.Secret) - } +### Import - pm["organizationName"] = resource.NewPropertyValue(i.OrganizationName) - - if i.ProjectName != nil { - pm["projectName"] = resource.NewPropertyValue(*i.ProjectName) - } - if i.StackName != nil { - pm["stackName"] = resource.NewPropertyValue(*i.StackName) - } - if i.Format != nil { - pm["format"] = resource.NewPropertyValue(*i.Format) - } - if len(i.Filters) > 0 { - pm["filters"] = resource.NewPropertyValue(i.Filters) - } +`+"Pulumi webhooks can be imported using the `id`, which for webhooks is `{org}/{project}/{stack}/{webhook-name}` e.g.,"+` - return pm +`+"```sh"+` + $ pulumi import pulumiservice:index:Webhook my_webhook my-org/my-project/my-stack/4b0d0671 +`+"```\n") } -func (i *PulumiServiceWebhookProperties) ToPropertyMap() resource.PropertyMap { - pm := i.PulumiServiceWebhookInput.ToPropertyMap() - - pm["name"] = resource.NewPropertyValue(i.Name) - return pm +type WebhookInput struct { + Active bool `pulumi:"active"` + DisplayName string `pulumi:"displayName"` + PayloadUrl string `pulumi:"payloadUrl"` + Secret *string `pulumi:"secret,optional" provider:"secret"` + OrganizationName string `pulumi:"organizationName" provider:"replaceOnChanges"` + ProjectName *string `pulumi:"projectName,optional" provider:"replaceOnChanges"` + StackName *string `pulumi:"stackName,optional" provider:"replaceOnChanges"` + Format *string `pulumi:"format,optional"` // TODO[FEAT]: Format should be an enum + Filters []WebhookFilters `pulumi:"filters,optional"` } -func (wh *PulumiServiceWebhookResource) ToPulumiServiceWebhookProperties(propMap resource.PropertyMap) PulumiServiceWebhookProperties { - props := PulumiServiceWebhookProperties{} - - if propMap["active"].HasValue() && propMap["active"].IsBool() { - props.Active = propMap["active"].BoolValue() - } - - if propMap["displayName"].HasValue() && propMap["displayName"].IsString() { - props.DisplayName = propMap["displayName"].StringValue() - } +func (p *WebhookInput) Annotate(a infer.Annotator) { + a.Describe(&p.Active, "Indicates whether this webhook is enabled or not.") + a.Describe(&p.DisplayName, "The friendly name displayed in the Pulumi Cloud.") + a.Describe(&p.PayloadUrl, "URL to send request to.") + a.Describe(&p.Secret, "Optional. secret used as the HMAC key. See "+ + "[webhook docs](https://www.pulumi.com/docs/intro/pulumi-service/webhooks/#headers) "+ + "for more information.") + a.Describe(&p.OrganizationName, "Name of the organization.") + a.Describe(&p.ProjectName, "Name of the project. Only needed if this is a stack webhook.") + a.Describe(&p.StackName, "Name of the stack. Only needed if this is a stack webhook.") + // TODO[INVESTAGATE]: This says format is oneOf(slack,raw), but the output description gives 4 options. + // + // Is that correct, you can set 2 with the API but 4 are available? + a.Describe(&p.Format, "Format of the webhook payload. Can be either `raw` or `slack`. Defaults to `raw`.") + a.SetDefault(&p.Format, "raw") + a.Describe(&p.Filters, "Optional set of filters to apply to the webhook. See "+ + "[webhook docs](https://www.pulumi.com/docs/intro/pulumi-service/webhooks/#filters) "+ + "for more information.") +} - if propMap["payloadUrl"].HasValue() && propMap["payloadUrl"].IsString() { - props.PayloadUrl = propMap["payloadUrl"].StringValue() - } +type WebhookState struct { + WebhookInput - if secretVal := propMap["secret"]; secretVal.HasValue() && secretVal.IsString() { - secretStr := secretVal.StringValue() - props.Secret = &secretStr - } + Name string `pulumi:"name"` + Format string `pulumi:"format"` +} - if propMap["organizationName"].HasValue() && propMap["organizationName"].IsString() { - props.OrganizationName = propMap["organizationName"].StringValue() - } - if propMap["projectName"].HasValue() && propMap["projectName"].IsString() { - projectNameStr := propMap["projectName"].StringValue() - props.ProjectName = &projectNameStr - } - if propMap["stackName"].HasValue() && propMap["stackName"].IsString() { - stackNameStr := propMap["stackName"].StringValue() - props.StackName = &stackNameStr - } - if propMap["format"].HasValue() && propMap["format"].IsString() { - formatStr := propMap["format"].StringValue() - props.Format = &formatStr - } - if propMap["filters"].HasValue() && propMap["filters"].IsArray() { - filtersInput := propMap["filters"].ArrayValue() - filters := make([]string, len(filtersInput)) +func (p *WebhookState) Annotate(a infer.Annotator) { + a.Describe(&p.Name, "Webhook identifier generated by Pulumi Cloud.") + a.Describe(&p.Format, "Format of the webhook payload. Can be either `raw`, `slack`, `ms_teams` or `pulumi_deployments`. Defaults to `raw`.") +} - for i, v := range filtersInput { - filters[i] = getSecretOrStringValue(v) - } +var _ infer.Enum[string] = WebhookFilters("") - props.Filters = filters - } +type WebhookFilters string - if nameVal, ok := propMap["name"]; ok && nameVal.IsString() { - props.Name = nameVal.StringValue() +func (WebhookFilters) Values() []infer.EnumValue[string] { + return []infer.EnumValue[string]{ + { + Value: "stack_created", + Description: "Trigger a webhook when a stack is created. Only valid for org webhooks.", + Name: "StackCreated", + }, + { + Value: "stack_deleted", + Description: "Trigger a webhook when a stack is deleted. Only valid for org webhooks.", + Name: "StackDeleted", + }, + { + Value: "update_succeeded", + Description: "Trigger a webhook when a stack update succeeds.", + Name: "UpdateSucceeded", + }, + { + Value: "update_failed", + Description: "Trigger a webhook when a stack update fails.", + Name: "UpdateFailed", + }, + { + Value: "preview_succeeded", + Description: "Trigger a webhook when a stack preview succeeds.", + Name: "PreviewSucceeded", + }, + { + Value: "preview_failed", + Description: "Trigger a webhook when a stack preview fails.", + Name: "PreviewFailed", + }, + { + Value: "destroy_succeeded", + Description: "Trigger a webhook when a stack destroy succeeds.", + Name: "DestroySucceeded", + }, + { + Value: "destroy_failed", + Description: "Trigger a webhook when a stack destroy fails.", + Name: "DestroyFailed", + }, + { + Value: "refresh_succeeded", + Description: "Trigger a webhook when a stack refresh succeeds.", + Name: "RefreshSucceeded", + }, + { + Value: "refresh_failed", + Description: "Trigger a webhook when a stack refresh fails.", + Name: "RefreshFailed", + }, + { + Value: "deployment_queued", + Description: "Trigger a webhook when a deployment is queued.", + Name: "DeploymentQueued", + }, + { + Value: "deployment_started", + Description: "Trigger a webhook when a deployment starts running.", + Name: "DeploymentStarted", + }, + { + Value: "deployment_succeeded", + Description: "Trigger a webhook when a deployment succeeds.", + Name: "DeploymentSucceeded", + }, + { + Value: "deployment_failed", + Description: "Trigger a webhook when a deployment fails.", + Name: "DeploymentFailed", + }, } - - return props } -func (wh *PulumiServiceWebhookResource) Name() string { - return "pulumiservice:index:Webhook" -} - -func (wh *PulumiServiceWebhookResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - var failures []*pulumirpc.CheckFailure - for _, p := range []resource.PropertyKey{"organizationName", "payloadUrl", "displayName", "active"} { - if !news[(p)].HasValue() { - failures = append(failures, &pulumirpc.CheckFailure{ - Reason: fmt.Sprintf("missing required property '%s'", p), - Property: string(p), - }) - } +func (*Webhook) Check( + ctx p.Context, name string, _ resource.PropertyMap, uncheckedInputs resource.PropertyMap, +) (WebhookInput, []p.CheckFailure, error) { + inputs, failures, err := infer.DefaultCheck[WebhookInput](uncheckedInputs) + if len(failures) > 0 || err != nil { + return inputs, failures, nil } stackWebhookError := "projectName and stackName must both be specified for stack webhooks, or both unspecified for org webhooks" - if !news["projectName"].HasValue() && news["stackName"].HasValue() { - failures = append(failures, &pulumirpc.CheckFailure{ + if inputs.ProjectName == nil && inputs.StackName != nil { + failures = append(failures, p.CheckFailure{ Reason: stackWebhookError, Property: "projectName", }) } - if news["projectName"].HasValue() && !news["stackName"].HasValue() { - failures = append(failures, &pulumirpc.CheckFailure{ + if inputs.ProjectName != nil && inputs.StackName == nil { + failures = append(failures, p.CheckFailure{ Reason: stackWebhookError, Property: "stackName", }) } - // if the format is not specified, default to raw - // this should work automatically because we have set the default in the schema, - // but it isn't respected by the yaml provider - // https://github.com/pulumi/pulumi-yaml/issues/458 - if !news["format"].HasValue() { - news["format"] = resource.NewPropertyValue("raw") - } - - inputNews, err := plugin.MarshalProperties( - news, - plugin.MarshalOptions{}, - ) - if err != nil { - return nil, err - } - - return &pulumirpc.CheckResponse{Inputs: inputNews, Failures: failures}, nil + return inputs, failures, nil } -func (wh *PulumiServiceWebhookResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - inputs, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err +func (*Webhook) Create( + ctx p.Context, name string, input WebhookInput, preview bool, +) (string, WebhookState, error) { + if preview { + return "", WebhookState{WebhookInput: input}, nil } - props := wh.ToPulumiServiceWebhookProperties(inputs) - - idString, err := wh.createWebhook(props.PulumiServiceWebhookInput) + webhook, err := GetConfig(ctx).Client.CreateWebhook(ctx, input.asRequest()) if err != nil { - return nil, err - } - - hookID, err := splitWebhookID(*idString) - if err != nil { - return nil, err - } - - props.Name = hookID.webhookName - - outputProperties, err := plugin.MarshalProperties( - props.ToPropertyMap(), - plugin.MarshalOptions{ - KeepUnknowns: true, - SkipNulls: true, - }, - ) - if err != nil { - return nil, err - } - - return &pulumirpc.CreateResponse{ - Id: *idString, - Properties: outputProperties, - }, nil -} - -func (wh *PulumiServiceWebhookResource) createWebhook(input PulumiServiceWebhookInput) (*string, error) { - ctx := context.Background() - req := pulumiapi.WebhookRequest{ - OrganizationName: input.OrganizationName, - ProjectName: input.ProjectName, - StackName: input.StackName, - DisplayName: input.DisplayName, - PayloadURL: input.PayloadUrl, - Secret: input.Secret, - Active: input.Active, - Format: input.Format, - Filters: input.Filters, - } - webhook, err := wh.client.CreateWebhook(ctx, req) - if err != nil { - return nil, err + return "", WebhookState{}, err } var hookID string @@ -237,218 +209,120 @@ func (wh *PulumiServiceWebhookResource) createWebhook(input PulumiServiceWebhook hookID = fmt.Sprintf("%s/%s", input.OrganizationName, webhook.Name) } - return &hookID, nil -} - -func (wh *PulumiServiceWebhookResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - olds, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: false, SkipNulls: true}) - if err != nil { - return nil, err - } - - // preprocess olds to remove the `name` property since it's only an output and shouldn't cause a diff - if olds["name"].HasValue() { - delete(olds, "name") - } - - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - - // previous versions of the provider used "__inputs" key to store inputs in output properties - // to maintain backwards compatibility, we still need to handle this case - // so we just lift up those values to the top level - if oldInputs, ok := olds["__inputs"]; ok && oldInputs.IsObject() { - for k, v := range oldInputs.ObjectValue() { - olds[k] = v - } - } - - diffs := olds.Diff(news) - if diffs == nil { - return &pulumirpc.DiffResponse{ - Changes: pulumirpc.DiffResponse_DIFF_NONE, - }, nil - } - - dd := plugin.NewDetailedDiffFromObjectDiff(diffs, false) - - detailedDiffs := map[string]*pulumirpc.PropertyDiff{} - replaceProperties := map[string]bool{ - "organizationName": true, - "projectName": true, - "stackName": true, - } - for k, v := range dd { - if _, ok := replaceProperties[k]; ok { - v.Kind = v.Kind.AsReplace() - } - detailedDiffs[k] = &pulumirpc.PropertyDiff{ - Kind: pulumirpc.PropertyDiff_Kind(v.Kind), - InputDiff: v.InputDiff, - } - } - - changes := pulumirpc.DiffResponse_DIFF_NONE - if len(detailedDiffs) > 0 { - changes = pulumirpc.DiffResponse_DIFF_SOME - } - return &pulumirpc.DiffResponse{ - Changes: changes, - DetailedDiff: detailedDiffs, - HasDetailedDiff: true, + return hookID, WebhookState{ + WebhookInput: input, + Name: webhook.Name, + Format: webhook.Format, }, nil } -func (wh *PulumiServiceWebhookResource) Update(req *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - // we only care about news because we validated that everything was correctly set in Check() & Diff() - inputsNew, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err +func (*Webhook) Update( + ctx p.Context, id string, state WebhookState, news WebhookInput, preview bool, +) (WebhookState, error) { + if preview { + return WebhookState{WebhookInput: news}, nil } - webhookNew := wh.ToPulumiServiceWebhookProperties(inputsNew) + contract.Assertf(state.OrganizationName == news.OrganizationName, + "We should have done a replace here if OrganizationName changed") - // ignore orgName because if that changed, we would have done a replace, so update would never have been called - hookID, err := splitWebhookID(req.GetId()) - if err != nil { - return nil, fmt.Errorf("invalid resource id: %v", err) - } - webhookNew.Name = hookID.webhookName - - updateReq := pulumiapi.UpdateWebhookRequest{ - WebhookRequest: pulumiapi.WebhookRequest{ - OrganizationName: webhookNew.OrganizationName, - ProjectName: webhookNew.ProjectName, - StackName: webhookNew.StackName, - DisplayName: webhookNew.DisplayName, - PayloadURL: webhookNew.PayloadUrl, - Secret: webhookNew.Secret, - Active: webhookNew.Active, - Format: webhookNew.Format, - Filters: webhookNew.Filters, - }, - Name: webhookNew.Name, - } - err = wh.client.UpdateWebhook(context.Background(), updateReq) + hookID, err := splitWebhookID(id) if err != nil { - return nil, err + return WebhookState{}, fmt.Errorf("invalid resource id: %v", err) } - outputStore := webhookNew.ToPropertyMap() - - outputProperties, err := plugin.MarshalProperties( - outputStore, - plugin.MarshalOptions{}, - ) + err = GetConfig(ctx).Client.UpdateWebhook(ctx, pulumiapi.UpdateWebhookRequest{ + WebhookRequest: news.asRequest(), + Name: hookID.webhookName, + }) if err != nil { - return nil, err + return WebhookState{}, err } - return &pulumirpc.UpdateResponse{ - Properties: outputProperties, - }, nil - -} -func (wh *PulumiServiceWebhookResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - err := wh.deleteWebhook(req.Id) - return &pbempty.Empty{}, err + // We need to perform another GET because the user might not have set Format but + // the service will have. + // + // This is because Format is optional as an input but required as an output. + return getWebhook(ctx, hookID) } -func (wh *PulumiServiceWebhookResource) deleteWebhook(id string) error { +func (*Webhook) Delete(ctx p.Context, id string, props WebhookState) error { hookID, err := splitWebhookID(id) if err != nil { return err } - return wh.client.DeleteWebhook(context.Background(), hookID.organizationName, + + return GetConfig(ctx).Client.DeleteWebhook(ctx, hookID.organizationName, hookID.projectName, hookID.stackName, hookID.webhookName) } -func (wh *PulumiServiceWebhookResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - webhook, err := wh.getWebhook(req.Id) - if err != nil { - return nil, err - } - - if webhook == nil { - return &pulumirpc.ReadResponse{}, nil - } - - hookID, err := splitWebhookID(req.Id) +func (*Webhook) Read( + ctx p.Context, id string, _ WebhookInput, _ WebhookState, +) (string, WebhookInput, WebhookState, error) { + hookID, err := splitWebhookID(id) if err != nil { - return nil, err + return "", WebhookInput{}, WebhookState{}, err } - properties := PulumiServiceWebhookProperties{ - PulumiServiceWebhookInput: PulumiServiceWebhookInput{ - Active: webhook.Active, - DisplayName: webhook.DisplayName, - PayloadUrl: webhook.PayloadUrl, - Secret: webhook.Secret, - Format: &webhook.Format, - Filters: webhook.Filters, - OrganizationName: hookID.organizationName, - ProjectName: hookID.projectName, - StackName: hookID.stackName, - }, - Name: hookID.webhookName, - } - - outputs, err := plugin.MarshalProperties( - properties.ToPropertyMap(), - plugin.MarshalOptions{}, - ) - if err != nil { - return nil, err - } + state, err := getWebhook(ctx, hookID) + return id, state.WebhookInput, state, nil +} - inputs, err := plugin.MarshalProperties( - properties.PulumiServiceWebhookInput.ToPropertyMap(), - plugin.MarshalOptions{}, - ) +func getWebhook(ctx p.Context, hookID webhookID) (WebhookState, error) { + webhook, err := GetConfig(ctx).Client.GetWebhook(context.Background(), + hookID.organizationName, hookID.projectName, hookID.stackName, hookID.webhookName) if err != nil { - return nil, err - } - - return &pulumirpc.ReadResponse{ - Id: req.Id, - Properties: outputs, - Inputs: inputs, + return WebhookState{}, err + } + + input := WebhookInput{ + Active: webhook.Active, + DisplayName: webhook.DisplayName, + PayloadUrl: webhook.PayloadUrl, + Secret: webhook.Secret, + OrganizationName: hookID.organizationName, + ProjectName: hookID.projectName, + StackName: hookID.stackName, + Format: &webhook.Format, + Filters: sliceMap(webhook.Filters, func(v string) WebhookFilters { + // TODO: Validate that each filter is OneOf(WebhookFilters.Values) + return WebhookFilters(v) + }), + } + + return WebhookState{ + WebhookInput: input, + Name: hookID.webhookName, + Format: webhook.Format, }, nil } -func (wh *PulumiServiceWebhookResource) getWebhook(id string) (*pulumiapi.Webhook, error) { - hookID, err := splitWebhookID(id) - if err != nil { - return nil, err +func sliceMap[S ~[]E, E any, O any](slice S, f func(E) O) []O { + result := make([]O, len(slice)) + for i, v := range slice { + result[i] = f(v) } - webhook, err := wh.client.GetWebhook(context.Background(), - hookID.organizationName, hookID.projectName, hookID.stackName, hookID.webhookName) - if err != nil { - return nil, err - } - return webhook, nil + return result } -func splitWebhookID(id string) (*webhookID, error) { +func splitWebhookID(id string) (webhookID, error) { // format: organization/project/stack/webhookName (stack webhook) or organization/webhookName (org webhook) s := strings.Split(id, "/") switch len(s) { case 2: - return &webhookID{ + return webhookID{ organizationName: s[0], webhookName: s[1], }, nil case 4: - return &webhookID{ + return webhookID{ organizationName: s[0], projectName: &s[1], stackName: &s[2], webhookName: s[3], }, nil default: - return nil, fmt.Errorf("%q is not a valid webhook ID", id) + return webhookID{}, fmt.Errorf("%q is not a valid webhook ID", id) } } @@ -458,3 +332,22 @@ type webhookID struct { stackName *string webhookName string } + +func (input WebhookInput) asRequest() pulumiapi.WebhookRequest { + filters := make([]string, len(input.Filters)) + for i, f := range input.Filters { + filters[i] = string(f) + } + + return pulumiapi.WebhookRequest{ + OrganizationName: input.OrganizationName, + ProjectName: input.ProjectName, + StackName: input.StackName, + DisplayName: input.DisplayName, + PayloadURL: input.PayloadUrl, + Secret: input.Secret, + Active: input.Active, + Format: input.Format, + Filters: filters, + } +} From e25f8d35b961408c552c65867ca660e0fde7dc6a Mon Sep 17 00:00:00 2001 From: Ian Wahbe Date: Fri, 5 Apr 2024 19:49:54 +0200 Subject: [PATCH 17/17] WIP Port DeploymentSettings --- provider/pkg/provider/deployment_settings.go | 927 ++++++++----------- provider/pkg/provider/provider.go | 1 + 2 files changed, 401 insertions(+), 527 deletions(-) diff --git a/provider/pkg/provider/deployment_settings.go b/provider/pkg/provider/deployment_settings.go index ca7c5e21..8c166682 100644 --- a/provider/pkg/provider/deployment_settings.go +++ b/provider/pkg/provider/deployment_settings.go @@ -1,621 +1,494 @@ package provider import ( - "context" - "fmt" "path" - pbempty "google.golang.org/protobuf/types/known/emptypb" + p "github.com/pulumi/pulumi-go-provider" + "github.com/pulumi/pulumi-go-provider/infer" + "github.com/pulumi/pulumi/sdk/v3/go/common/apitype" "github.com/pulumi/pulumi-pulumiservice/provider/pkg/internal/pulumiapi" - "github.com/pulumi/pulumi/sdk/v3/go/common/apitype" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource" - "github.com/pulumi/pulumi/sdk/v3/go/common/resource/plugin" - pulumirpc "github.com/pulumi/pulumi/sdk/v3/proto/go" ) -type PulumiServiceDeploymentSettingsInput struct { - pulumiapi.DeploymentSettings - Stack pulumiapi.StackName +var ( + // Life-cycle participation + _ infer.CustomResource[DeploymentSettingsInput, DeploymentSettingsState] = (*DeploymentSettings)(nil) + _ infer.CustomRead[DeploymentSettingsInput, DeploymentSettingsState] = (*DeploymentSettings)(nil) + _ infer.CustomDelete[DeploymentSettingsState] = (*DeploymentSettings)(nil) + + // Schema documentation + _ infer.Annotated = (*DeploymentSettings)(nil) + _ infer.Annotated = (*DeploymentSettingsInput)(nil) + _ infer.Annotated = (*DeploymentSettingsState)(nil) + _ infer.Annotated = (*DeploymentSettingsSourceContext)(nil) + _ infer.Annotated = (*DeploymentSettingsExecutorContext)(nil) + _ infer.Annotated = (*DeploymentSettingsGithub)(nil) + _ infer.Annotated = (*DeploymentSettingsOperationContext)(nil) + _ infer.Annotated = (*DeploymentSettingsGitSource)(nil) +) + +type DeploymentSettings struct{} + +func (p *DeploymentSettings) Annotate(a infer.Annotator) { + a.Describe(p, "Deployment settings configure Pulumi Deployments for a stack.\n\n### Import\n\nDeployment settings can be imported using the `id`, which for deployment settings is `{org}/{project}/{stack}` e.g.,\n\n```sh\n $ pulumi import pulumiservice:index:DeploymentSettings my_settings my-org/my-project/my-stack\n```\n\n") } -const FixMe = "" +type DeploymentSettingsInput struct { + // Required fields + Organization string `pulumi:"organization"` + Stack string `pulumi:"stack"` + Project string `pulumi:"project"` + SourceContext DeploymentSettingsSourceContext `pulumi:"sourceContext"` + + // Optional fields + ExecutorContext *DeploymentSettingsExecutorContext `pulumi:"executorContext,optional"` + Github *DeploymentSettingsGithub `pulumi:"github,optional"` + OperationContext *DeploymentSettingsOperationContext `pulumi:"operationContext,optional"` + AgentPoolId *string `pulumi:"agentPoolId,optional"` +} -func (ds *PulumiServiceDeploymentSettingsInput) ToPropertyMap() resource.PropertyMap { - pm := resource.PropertyMap{} - pm["organization"] = resource.NewPropertyValue(ds.Stack.OrgName) - pm["project"] = resource.NewPropertyValue(ds.Stack.ProjectName) - pm["stack"] = resource.NewPropertyValue(ds.Stack.StackName) - pm["agentPoolId"] = resource.NewPropertyValue(ds.AgentPoolId) - - if ds.SourceContext != nil { - scMap := resource.PropertyMap{} - if ds.SourceContext.Git != nil { - gitPropertyMap := resource.PropertyMap{} - if ds.SourceContext.Git.RepoURL != "" { - gitPropertyMap["repoUrl"] = resource.NewPropertyValue(ds.SourceContext.Git.RepoURL) - } - if ds.SourceContext.Git.Commit != "" { - gitPropertyMap["commit"] = resource.NewPropertyValue(ds.SourceContext.Git.Commit) - } - if ds.SourceContext.Git.Branch != "" { - gitPropertyMap["branch"] = resource.NewPropertyValue(ds.SourceContext.Git.Branch) - } - if ds.SourceContext.Git.RepoDir != "" { - gitPropertyMap["repoDir"] = resource.NewPropertyValue(ds.SourceContext.Git.RepoDir) - } - if ds.SourceContext.Git.GitAuth != nil { - gitAuthPropertyMap := resource.PropertyMap{} - if ds.SourceContext.Git.GitAuth.SSHAuth != nil { - sshAuthPropertyMap := resource.PropertyMap{} - if ds.SourceContext.Git.GitAuth.SSHAuth.SSHPrivateKey.Value != "" { - sshAuthPropertyMap["sshPrivateKey"] = resource.NewPropertyValue(FixMe) - } - if ds.SourceContext.Git.GitAuth.SSHAuth.Password.Value != "" { - sshAuthPropertyMap["password"] = resource.NewPropertyValue(FixMe) - } - gitAuthPropertyMap["sshAuth"] = resource.PropertyValue{V: sshAuthPropertyMap} - } - if ds.SourceContext.Git.GitAuth.BasicAuth != nil { - basicAuthPropertyMap := resource.PropertyMap{} - if ds.SourceContext.Git.GitAuth.BasicAuth.UserName.Value != "" { - basicAuthPropertyMap["username"] = resource.NewPropertyValue(ds.SourceContext.Git.GitAuth.BasicAuth.UserName.Value) - } - if ds.SourceContext.Git.GitAuth.BasicAuth.Password.Value != "" { - basicAuthPropertyMap["password"] = resource.NewPropertyValue("fix me") - } - gitAuthPropertyMap["basicAuth"] = resource.NewPropertyValue(basicAuthPropertyMap) - } - gitPropertyMap["gitAuth"] = resource.PropertyValue{V: gitAuthPropertyMap} - } - scMap["git"] = resource.PropertyValue{V: gitPropertyMap} - } - pm["sourceContext"] = resource.PropertyValue{V: scMap} - } - - if ds.OperationContext != nil { - ocMap := resource.PropertyMap{} - if ds.OperationContext.PreRunCommands != nil { - ocMap["preRunCommands"] = resource.NewPropertyValue(ds.OperationContext.PreRunCommands) - } - if ds.OperationContext.EnvironmentVariables != nil { - evMap := resource.PropertyMap{} - for k, v := range ds.OperationContext.EnvironmentVariables { - if v.Secret { - evMap[resource.PropertyKey(k)] = resource.NewPropertyValue(FixMe) - } else { - evMap[resource.PropertyKey(k)] = resource.NewPropertyValue(v.Value) - } - } - ocMap["environmentVariables"] = resource.PropertyValue{V: evMap} - } - if ds.OperationContext.Options != nil { - optionsMap := resource.PropertyMap{} - if ds.OperationContext.Options.Shell != "" { - optionsMap["shell"] = resource.NewPropertyValue(ds.OperationContext.Options.Shell) - } - if ds.OperationContext.Options.SkipInstallDependencies { - optionsMap["skipInstallDependencies"] = resource.NewPropertyValue(true) - } - if ds.OperationContext.Options.SkipIntermediateDeployments { - optionsMap["skipIntermediateDeployments"] = resource.NewPropertyValue(true) - } - ocMap["options"] = resource.PropertyValue{V: optionsMap} - } - if ds.OperationContext.OIDC != nil { - if ds.OperationContext.OIDC.AWS != nil || ds.OperationContext.OIDC.GCP != nil || ds.OperationContext.OIDC.Azure != nil { - oidcMap := resource.PropertyMap{} - if ds.OperationContext.OIDC.AWS != nil { - awsMap := resource.PropertyMap{} - if ds.OperationContext.OIDC.AWS.RoleARN != "" { - awsMap["roleARN"] = resource.NewPropertyValue(ds.OperationContext.OIDC.AWS.RoleARN) - } - if ds.OperationContext.OIDC.AWS.SessionName != "" { - awsMap["sessionName"] = resource.NewPropertyValue(ds.OperationContext.OIDC.AWS.SessionName) - } - if ds.OperationContext.OIDC.AWS.PolicyARNs != nil { - awsMap["policyARNs"] = resource.NewPropertyValue(ds.OperationContext.OIDC.AWS.PolicyARNs) - } - if ds.OperationContext.OIDC.AWS.Duration != "" { - awsMap["duration"] = resource.NewPropertyValue(ds.OperationContext.OIDC.AWS.Duration) - } - oidcMap["aws"] = resource.PropertyValue{V: awsMap} - } - if ds.OperationContext.OIDC.GCP != nil { - gcpMap := resource.PropertyMap{} - if ds.OperationContext.OIDC.GCP.ProviderID != "" { - gcpMap["providerId"] = resource.NewPropertyValue(ds.OperationContext.OIDC.GCP.ProviderID) - } - if ds.OperationContext.OIDC.GCP.ServiceAccount != "" { - gcpMap["serviceAccount"] = resource.NewPropertyValue(ds.OperationContext.OIDC.GCP.ServiceAccount) - } - if ds.OperationContext.OIDC.GCP.Region != "" { - gcpMap["region"] = resource.NewPropertyValue(ds.OperationContext.OIDC.GCP.Region) - } - if ds.OperationContext.OIDC.GCP.WorkloadPoolID != "" { - gcpMap["workloadPoolId"] = resource.NewPropertyValue(ds.OperationContext.OIDC.GCP.WorkloadPoolID) - } - if ds.OperationContext.OIDC.GCP.ProjectID != "" { - gcpMap["projectId"] = resource.NewPropertyValue(ds.OperationContext.OIDC.GCP.ProjectID) - } - if ds.OperationContext.OIDC.GCP.TokenLifetime != "" { - gcpMap["tokenLifetime"] = resource.NewPropertyValue(ds.OperationContext.OIDC.GCP.TokenLifetime) - } - oidcMap["gcp"] = resource.PropertyValue{V: gcpMap} - } - if ds.OperationContext.OIDC.Azure != nil { - azureMap := resource.PropertyMap{} - if ds.OperationContext.OIDC.Azure.TenantID != "" { - azureMap["tenantId"] = resource.NewPropertyValue(ds.OperationContext.OIDC.Azure.TenantID) - } - if ds.OperationContext.OIDC.Azure.ClientID != "" { - azureMap["clientId"] = resource.NewPropertyValue(ds.OperationContext.OIDC.Azure.ClientID) - } - if ds.OperationContext.OIDC.Azure.SubscriptionID != "" { - azureMap["subscriptionId"] = resource.NewPropertyValue(ds.OperationContext.OIDC.Azure.SubscriptionID) - } - } - ocMap["oidc"] = resource.PropertyValue{V: oidcMap} - } - } - pm["operationContext"] = resource.PropertyValue{V: ocMap} - } - - if ds.GitHub != nil { - githubMap := resource.PropertyMap{} - githubMap["previewPullRequests"] = resource.NewPropertyValue(ds.GitHub.PreviewPullRequests) - githubMap["deployCommits"] = resource.NewPropertyValue(ds.GitHub.DeployCommits) - githubMap["pullRequestTemplate"] = resource.NewPropertyValue(ds.GitHub.PullRequestTemplate) - if ds.GitHub.Repository != "" { - githubMap["repository"] = resource.NewPropertyValue(ds.GitHub.Repository) - } - if len(ds.GitHub.Paths) > 0 { - githubMap["paths"] = resource.NewPropertyValue(ds.GitHub.Paths) - } - pm["github"] = resource.PropertyValue{V: githubMap} - } - - if ds.ExecutorContext != nil && ds.ExecutorContext.ExecutorImage != nil && ds.ExecutorContext.ExecutorImage.Reference != "" { - ecMap := resource.PropertyMap{} - ecMap["executorImage"] = resource.NewPropertyValue(ds.ExecutorContext.ExecutorImage) - pm["executorContext"] = resource.PropertyValue{V: ecMap} - } - return pm -} - -type PulumiServiceDeploymentSettingsResource struct { - client pulumiapi.DeploymentSettingsClient -} - -func (ds *PulumiServiceDeploymentSettingsResource) ToPulumiServiceDeploymentSettingsInput(inputMap resource.PropertyMap) PulumiServiceDeploymentSettingsInput { - input := PulumiServiceDeploymentSettingsInput{} - - input.Stack.OrgName = getSecretOrStringValue(inputMap["organization"]) - input.Stack.ProjectName = getSecretOrStringValue(inputMap["project"]) - input.Stack.StackName = getSecretOrStringValue(inputMap["stack"]) - - if inputMap["agentPoolId"].HasValue() && inputMap["agentPoolId"].IsString() { - input.AgentPoolId = inputMap["agentPoolId"].StringValue() - } - - input.ExecutorContext = toExecutorContext(inputMap) - input.GitHub = toGitHubConfig(inputMap) - input.SourceContext = toSourceContext(inputMap) - input.OperationContext = toOperationContext(inputMap) - - return input -} - -func toExecutorContext(inputMap resource.PropertyMap) *apitype.ExecutorContext { - if !inputMap["executorContext"].HasValue() || !inputMap["executorContext"].IsObject() { - return nil +func (p DeploymentSettingsInput) asStack() pulumiapi.StackName { + return pulumiapi.StackName{ + OrgName: p.Organization, + ProjectName: p.Project, + StackName: p.Stack, } +} - ecInput := inputMap["executorContext"].ObjectValue() - var ec apitype.ExecutorContext +func (p DeploymentSettingsInput) asAPI() pulumiapi.DeploymentSettings { + return pulumiapi.DeploymentSettings{ + OperationContext: p.OperationContext.asAPI(), + GitHub: p.Github.asAPI(), + SourceContext: p.SourceContext.asAPI(), + ExecutorContext: p.ExecutorContext.asAPI(), + AgentPoolId: derefOrZero(p.AgentPoolId), + } +} - if ecInput["executorImage"].HasValue() { - ec.ExecutorImage = &apitype.DockerImage{ - Reference: getSecretOrStringValue(ecInput["executorImage"]), - } +func derefOrZero[T any](v *T) T { + var t T + if v != nil { + t = *v } + return t +} - return &ec +func (p *DeploymentSettingsInput) Annotate(a infer.Annotator) { + a.Describe(&p.Organization, "Organization name.") + a.Describe(&p.Stack, "Stack name.") + a.Describe(&p.Project, "Project name.") + a.Describe(&p.SourceContext, "Settings related to the source of the deployment.") + a.Describe(&p.ExecutorContext, "Settings related to the deployment executor.") + a.Describe(&p.Github, "GitHub settings for the deployment.") + a.Describe(&p.OperationContext, "Settings related to the Pulumi operation environment during the deployment.") + a.Describe(&p.AgentPoolId, "The agent pool identifier to use for the deployment.") } -func toGitHubConfig(inputMap resource.PropertyMap) *pulumiapi.GitHubConfiguration { - if !inputMap["github"].HasValue() || !inputMap["github"].IsObject() { +type DeploymentSettingsSourceContext struct { + Git *DeploymentSettingsGitSource `pulumi:"git,optional"` +} + +func (p *DeploymentSettingsSourceContext) Annotate(a infer.Annotator) { + a.Describe(&p, "Settings related to the source of the deployment.") + a.Describe(&p.Git, "Git source settings for a deployment.") +} + +func (p *DeploymentSettingsSourceContext) asAPI() *apitype.SourceContext { + if p == nil { return nil } + return &apitype.SourceContext{Git: p.Git.asAPI()} +} - githubInput := inputMap["github"].ObjectValue() - var github pulumiapi.GitHubConfiguration +type DeploymentSettingsGitSource struct { + RepoUrl string `pulumi:"repoUrl,optional"` + GitAuth *DeploymentSettingsGitSourceGitAuth `pulumi:"gitAuth,optional"` + Branch string `pulumi:"branch,optional"` + Commit string `pulumi:"commit,optional"` + RepoDir string `pulumi:"repoDir,optional"` +} - if githubInput["repository"].HasValue() { - github.Repository = getSecretOrStringValue(githubInput["repository"]) - } +func (p *DeploymentSettingsGitSource) Annotate(a infer.Annotator) { + a.Describe(&p, "Git source settings for a deployment.") + a.Describe(&p.RepoUrl, "The repository URL to use for git settings. Should not be specified if there are `gitHub` settings for this deployment.") + a.Describe(&p.GitAuth, "Git authentication configuration for this deployment. Should not be specified if there are `gitHub` settings for this deployment.") + a.Describe(&p.Branch, "The branch to deploy. One of either `branch` or `commit` must be specified.") + a.Describe(&p.Commit, "The commit to deploy. One of either `branch` or `commit` must be specified.") + a.Describe(&p.RepoDir, "The directory within the repository where the Pulumi.yaml is located.") +} - if githubInput["deployCommits"].HasValue() && githubInput["deployCommits"].IsBool() { - github.DeployCommits = githubInput["deployCommits"].BoolValue() - } - if githubInput["previewPullRequests"].HasValue() && githubInput["previewPullRequests"].IsBool() { - github.PreviewPullRequests = githubInput["previewPullRequests"].BoolValue() +func (p *DeploymentSettingsGitSource) asAPI() *apitype.SourceContextGit { + if p == nil { + return nil } - if githubInput["pullRequestTemplate"].HasValue() && githubInput["pullRequestTemplate"].IsBool() { - github.PullRequestTemplate = githubInput["pullRequestTemplate"].BoolValue() + return &apitype.SourceContextGit{ + RepoURL: p.RepoUrl, + Branch: p.Branch, + RepoDir: p.RepoDir, + Commit: p.Commit, + GitAuth: p.GitAuth.asAPI(), } - if githubInput["paths"].HasValue() && githubInput["paths"].IsArray() { - pathsInput := githubInput["paths"].ArrayValue() - paths := make([]string, len(pathsInput)) +} - for i, v := range pathsInput { - paths[i] = getSecretOrStringValue(v) - } +type DeploymentSettingsGitSourceGitAuth struct { + SshAuth *DeploymentSettingsGitAuthSSHAuth `pulumi:"sshAuth,optional"` + BasicAuth *DeploymentSettingsGitAuthBasicAuth `pulumi:"basicAuth,optional"` +} - github.Paths = paths - } +func (p *DeploymentSettingsGitSourceGitAuth) Annotate(a infer.Annotator) { + // TODO[DOCS] This is the same description as DeploymentSettingsGitSource. I don't think it should be + a.Describe(&p, "Git source settings for a deployment.") - return &github + // TODO[DOCS][BUG] The description says there are 3 options here, but I only see 2. + // + // Also, these types should be a OneOf, but I don't think that the + // pulumi-go-provider has a way to express that yes. + a.Describe(&p.SshAuth, "SSH auth for git authentication. Only one of `personalAccessToken`, `sshAuth`, or `basicAuth` must be defined.") + a.Describe(&p.BasicAuth, "Basic auth for git authentication. Only one of `personalAccessToken`, `sshAuth`, or `basicAuth` must be defined.") } -func toSourceContext(inputMap resource.PropertyMap) *apitype.SourceContext { - if !inputMap["sourceContext"].HasValue() || !inputMap["sourceContext"].IsObject() { +func (p *DeploymentSettingsGitSourceGitAuth) asAPI() *apitype.GitAuthConfig { + if p == nil { return nil } + return &apitype.GitAuthConfig{ + PersonalAccessToken: nil, + SSHAuth: p.SshAuth.asAPI(), + BasicAuth: p.BasicAuth.asAPI(), + } +} + +type DeploymentSettingsGitAuthSSHAuth struct { + SshPrivateKey string `pulumi:"sshPrivateKey" provider:"secret"` + Password *string `pulumi:"password,optional" provider:"secret"` +} - scInput := inputMap["sourceContext"].ObjectValue() - var sc apitype.SourceContext - - if scInput["git"].HasValue() && scInput["git"].IsObject() { - gitInput := scInput["git"].ObjectValue() - var g apitype.SourceContextGit - - if gitInput["repoUrl"].HasValue() { - g.RepoURL = getSecretOrStringValue(gitInput["repoUrl"]) - } - if gitInput["branch"].HasValue() { - g.Branch = getSecretOrStringValue(gitInput["branch"]) - } - if gitInput["repoDir"].HasValue() { - g.RepoDir = getSecretOrStringValue(gitInput["repoDir"]) - } - - if gitInput["gitAuth"].HasValue() && gitInput["gitAuth"].IsObject() { - authInput := gitInput["gitAuth"].ObjectValue() - var a apitype.GitAuthConfig - - if authInput["sshAuth"].HasValue() && authInput["sshAuth"].IsObject() { - sshInput := authInput["sshAuth"].ObjectValue() - var s apitype.SSHAuth - - if sshInput["sshPrivateKey"].HasValue() { - s.SSHPrivateKey = apitype.SecretValue{ - Secret: true, - Value: getSecretOrStringValue(sshInput["sshPrivateKey"]), - } - } - if sshInput["password"].HasValue() { - s.Password = &apitype.SecretValue{ - Secret: true, - Value: getSecretOrStringValue(sshInput["password"]), - } - } - - a.SSHAuth = &s - } - - if authInput["basicAuth"].HasValue() && authInput["basicAuth"].IsObject() { - basicInput := authInput["basicAuth"].ObjectValue() - var b apitype.BasicAuth - - if basicInput["username"].HasValue() { - b.UserName = apitype.SecretValue{ - Value: getSecretOrStringValue(basicInput["username"]), - Secret: false, - } - } - if basicInput["password"].HasValue() { - b.Password = apitype.SecretValue{ - Value: getSecretOrStringValue(basicInput["password"]), - Secret: true, - } - } - - a.BasicAuth = &b - } - - g.GitAuth = &a - } - - sc.Git = &g - } - - return &sc -} - -func toOperationContext(inputMap resource.PropertyMap) *pulumiapi.OperationContext { - if !inputMap["operationContext"].HasValue() || !inputMap["operationContext"].IsObject() { +func (p *DeploymentSettingsGitAuthSSHAuth) Annotate(a infer.Annotator) { + a.Describe(&p, "Git source settings for a deployment.") + a.Describe(&p.SshPrivateKey, "SSH private key.") + a.Describe(&p.Password, "Optional password for SSH authentication.") +} + +func (p *DeploymentSettingsGitAuthSSHAuth) asAPI() *apitype.SSHAuth { + if p == nil { return nil } - - ocInput := inputMap["operationContext"].ObjectValue() - var oc pulumiapi.OperationContext - - if ocInput["environmentVariables"].HasValue() && ocInput["environmentVariables"].IsObject() { - ev := map[string]apitype.SecretValue{} - evInput := ocInput["environmentVariables"].ObjectValue() - - for k, v := range evInput { - if v.IsSecret() { - ev[string(k)] = apitype.SecretValue{Secret: true, Value: v.SecretValue().Element.StringValue()} - } else { - ev[string(k)] = apitype.SecretValue{Secret: false, Value: v.StringValue()} - } - } - - oc.EnvironmentVariables = ev - } - - if ocInput["preRunCommands"].HasValue() && ocInput["preRunCommands"].IsArray() { - pcInput := ocInput["preRunCommands"].ArrayValue() - pc := make([]string, len(pcInput)) - - for i, v := range pcInput { - if v.IsString() { - pc[i] = v.StringValue() - } - } - - oc.PreRunCommands = pc + return &apitype.SSHAuth{ + SSHPrivateKey: apitype.SecretValue{Value: p.SshPrivateKey}, + Password: &apitype.SecretValue{Value: derefOrZero(p.Password)}, } +} - if ocInput["options"].HasValue() && ocInput["options"].IsObject() { - oInput := ocInput["options"].ObjectValue() - var o pulumiapi.OperationContextOptions - - if oInput["skipInstallDependencies"].HasValue() && oInput["skipInstallDependencies"].IsBool() { - o.SkipInstallDependencies = oInput["skipInstallDependencies"].BoolValue() - } - - if oInput["skipIntermediateDeployments"].HasValue() && oInput["skipIntermediateDeployments"].IsBool() { - o.SkipIntermediateDeployments = oInput["skipIntermediateDeployments"].BoolValue() - } +type DeploymentSettingsGitAuthBasicAuth struct { + Username string `pulumi:"username" provider:"secret"` + Password string `pulumi:"password" provider:"secret"` +} - if oInput["Shell"].HasValue() && oInput["Shell"].IsString() { - o.Shell = oInput["Shell"].StringValue() - } +func (p *DeploymentSettingsGitAuthBasicAuth) Annotate(a infer.Annotator) { + a.Describe(&p, "Git source settings for a deployment.") + a.Describe(&p.Username, "User name for git basic authentication.") + a.Describe(&p.Password, "Password for git basic authentication.") +} - oc.Options = &o +func (p *DeploymentSettingsGitAuthBasicAuth) asAPI() *apitype.BasicAuth { + if p == nil { + return nil } + return &apitype.BasicAuth{ + UserName: apitype.SecretValue{Value: p.Username}, + Password: apitype.SecretValue{Value: p.Password}, + } +} - if ocInput["oidc"].HasValue() && ocInput["oidc"].IsObject() { - oidcInput := ocInput["oidc"].ObjectValue() - var oidc pulumiapi.OIDCConfiguration - - if oidcInput["aws"].HasValue() && oidcInput["aws"].IsObject() { - awsInput := oidcInput["aws"].ObjectValue() - var aws pulumiapi.AWSOIDCConfiguration +// TODO[USABILITY]: We should embed [DeploymentSettingsInput] in [DeploymentSettingsState] +// so users can access their inputs as outputs, and to improve diffs. +type DeploymentSettingsState struct { + Organization string `pulumi:"organization"` + Project string `pulumi:"project"` + Stack string `pulumi:"stack"` +} - if awsInput["roleARN"].HasValue() { - aws.RoleARN = getSecretOrStringValue(awsInput["roleARN"]) - } - if awsInput["duration"].HasValue() { - aws.Duration = getSecretOrStringValue(awsInput["duration"]) - } - if awsInput["sessionName"].HasValue() { - aws.SessionName = getSecretOrStringValue(awsInput["sessionName"]) - } - if awsInput["policyARNs"].HasValue() && awsInput["policyARNs"].IsArray() { - policyARNsInput := awsInput["policyARNs"].ArrayValue() - policyARNs := make([]string, len(policyARNsInput)) +func (p DeploymentSettingsState) asStack() pulumiapi.StackName { + return pulumiapi.StackName{ + OrgName: p.Organization, + ProjectName: p.Project, + StackName: p.Stack, + } +} - for i, v := range policyARNsInput { - policyARNs[i] = getSecretOrStringValue(v) - } +func (p *DeploymentSettingsState) Annotate(a infer.Annotator) { + a.Describe(&p.Organization, "Organization name.") + a.Describe(&p.Stack, "Stack name.") + a.Describe(&p.Project, "Project name.") +} - aws.PolicyARNs = policyARNs - } +type DeploymentSettingsExecutorContext struct { + ExecutorImage string `pulumi:"executorImage"` +} - oidc.AWS = &aws - } +func (p *DeploymentSettingsExecutorContext) Annotate(a infer.Annotator) { + a.Describe(&p, "The executor context defines information about the executor where the deployment is executed. If unspecified, the default 'pulumi/pulumi' image is used.") + a.Describe(&p.ExecutorImage, "Allows overriding the default executor image with a custom image. E.g. 'pulumi/pulumi-nodejs:latest'") +} - if oidcInput["gcp"].HasValue() && oidcInput["gcp"].IsObject() { - gcpInput := oidcInput["gcp"].ObjectValue() - var gcp pulumiapi.GCPOIDCConfiguration +func (p *DeploymentSettingsExecutorContext) asAPI() *apitype.ExecutorContext { + if p == nil { + return nil + } + return &apitype.ExecutorContext{ + WorkingDirectory: "", // TODO[CHECK]: Do we set the working directory? + ExecutorImage: &apitype.DockerImage{ + Reference: p.ExecutorImage, + Credentials: nil, // TODO[CHECK]: Do we set Credentials? + }, + } +} - if gcpInput["projectId"].HasValue() { - gcp.ProjectID = getSecretOrStringValue(gcpInput["projectId"]) - } - if gcpInput["region"].HasValue() { - gcp.Region = getSecretOrStringValue(gcpInput["region"]) - } - if gcpInput["workloadPoolId"].HasValue() { - gcp.WorkloadPoolID = getSecretOrStringValue(gcpInput["workloadPoolId"]) - } - if gcpInput["providerId"].HasValue() { - gcp.ProviderID = getSecretOrStringValue(gcpInput["providerId"]) - } - if gcpInput["serviceAccount"].HasValue() { - gcp.ServiceAccount = getSecretOrStringValue(gcpInput["serviceAccount"]) - } - if gcpInput["tokenLifetime"].HasValue() { - gcp.TokenLifetime = getSecretOrStringValue(gcpInput["tokenLifetime"]) - } +type DeploymentSettingsGithub struct { + Repository *string `pulumi:"repository,optional"` + DeployCommits *bool `pulumi:"deployCommits,optional"` + PreviewPullRequests *bool `pulumi:"previewPullRequests,optional"` + PullRequestTemplate *bool `pulumi:"pullRequestTemplate,optional"` + Paths []string `pulumi:"paths,optional"` +} - oidc.GCP = &gcp - } +func (p *DeploymentSettingsGithub) Annotate(a infer.Annotator) { + a.Describe(&p, "GitHub settings for the deployment.") + + a.Describe(&p.Repository, "The GitHub repository in the format org/repo.") + a.Describe(&p.DeployCommits, "Trigger a deployment running `pulumi up` on commit.") + a.SetDefault(&p.DeployCommits, true) + a.Describe(&p.PreviewPullRequests, "Trigger a deployment running `pulumi preview` when a PR is opened.") + a.SetDefault(&p.PreviewPullRequests, true) + a.Describe(&p.PullRequestTemplate, "Use this stack as a template for pull request review stacks.") + a.SetDefault(&p.PullRequestTemplate, false) + a.Describe(&p.Paths, "The paths within the repo that deployments should be filtered to.") +} - if oidcInput["azure"].HasValue() && oidcInput["azure"].IsObject() { - azureInput := oidcInput["azure"].ObjectValue() - var azure pulumiapi.AzureOIDCConfiguration +func (p *DeploymentSettingsGithub) asAPI() *pulumiapi.GitHubConfiguration { + if p == nil { + return nil + } + return &pulumiapi.GitHubConfiguration{ + Repository: derefOrZero(p.Repository), + DeployCommits: derefOrZero(p.DeployCommits), + PreviewPullRequests: derefOrZero(p.PreviewPullRequests), + PullRequestTemplate: derefOrZero(p.PullRequestTemplate), + Paths: p.Paths, + } +} - if azureInput["tenantId"].HasValue() { - azure.TenantID = getSecretOrStringValue(azureInput["tenantId"]) - } - if azureInput["clientId"].HasValue() { - azure.ClientID = getSecretOrStringValue(azureInput["clientId"]) - } - if azureInput["subscriptionId"].HasValue() { - azure.SubscriptionID = getSecretOrStringValue(azureInput["subscriptionId"]) - } +type DeploymentSettingsOperationContext struct { + PreRunCommands []string `pulumi:"preRunCommands,optional"` + EnvironmentVariables map[string]string `pulumi:"environmentVariables,optional"` + Options *OperationContextOptions `pulumi:"options,optional"` + Oidc *OperationContextOIDC `pulumi:"oidc,optional"` +} - oidc.Azure = &azure - } +func (p *DeploymentSettingsOperationContext) Annotate(a infer.Annotator) { + a.Describe(&p, "Settings related to the Pulumi operation environment during the deployment.") + a.Describe(&p.PreRunCommands, "Shell commands to run before the Pulumi operation executes.") + a.Describe(&p.EnvironmentVariables, "Environment variables to set for the deployment.") + a.Describe(&p.Options, "Options to override default behavior during the deployment.") + a.Describe(&p.Oidc, "OIDC configuration to use during the deployment.") +} - oc.OIDC = &oidc +func (p *DeploymentSettingsOperationContext) asAPI() *pulumiapi.OperationContext { + if p == nil { + return nil } - return &oc + return &pulumiapi.OperationContext{ + Options: p.Options.asAPI(), + PreRunCommands: p.PreRunCommands, + EnvironmentVariables: map[string]apitype.SecretValue{}, // TODO + OIDC: p.Oidc.asAPI(), + } } -func getSecretOrStringValue(prop resource.PropertyValue) string { - switch prop.V.(type) { - case *resource.Secret: - return prop.SecretValue().Element.StringValue() - default: - return prop.StringValue() - } -} +type OperationContextOptions struct { + SkipInstallDependencies *bool `pulumi:"skipInstallDependencies,optional"` + SkipIntermediateDeployments *bool `pulumi:"skipIntermediateDeployments,optional"` + Shell *string `pulumi:"shell,optional"` +} -func (ds *PulumiServiceDeploymentSettingsResource) Diff(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - return considerAllChangesReplaces(req) -} +func (p *OperationContextOptions) Annotate(a infer.Annotator) { + a.Describe(&p.SkipInstallDependencies, "Skip the default dependency installation step "+ + "- use this to customize the dependency installation (e.g. if using yarn or poetry)") + a.Describe(&p.SkipIntermediateDeployments, "Skip intermediate deployments (Consolidate "+ + "multiple deployments of the same type into one deployment)") + a.Describe(&p.Shell, "The shell to use to run commands during the deployment. Defaults to 'bash'.") +} -func (ds *PulumiServiceDeploymentSettingsResource) Check(req *pulumirpc.CheckRequest) (*pulumirpc.CheckResponse, error) { - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err +func (p *OperationContextOptions) asAPI() *pulumiapi.OperationContextOptions { + if p == nil { + return nil } - - var failures []*pulumirpc.CheckFailure - for _, p := range []resource.PropertyKey{"organization", "project", "stack"} { - if !news[(p)].HasValue() { - failures = append(failures, &pulumirpc.CheckFailure{ - Reason: fmt.Sprintf("missing required property '%s'", p), - Property: string(p), - }) - } + return &pulumiapi.OperationContextOptions{ + SkipInstallDependencies: derefOrZero(p.SkipInstallDependencies), + SkipIntermediateDeployments: derefOrZero(p.SkipIntermediateDeployments), + Shell: derefOrZero(p.Shell), } +} - return &pulumirpc.CheckResponse{Inputs: req.News, Failures: failures}, nil +type OperationContextOIDC struct { + Aws *AWSOIDCConfiguration `pulumi:"aws,optional"` + Gcp *GCPOIDCConfiguration `pulumi:"gcp,optional"` + Azure *AzureOIDCConfiguration `pulumi:"azure,optional"` } -func (ds *PulumiServiceDeploymentSettingsResource) Read(req *pulumirpc.ReadRequest) (*pulumirpc.ReadResponse, error) { - ctx := context.Background() +func (p *OperationContextOIDC) Annotate(a infer.Annotator) { + a.Describe(&p.Aws, "AWS-specific OIDC configuration.") + a.Describe(&p.Gcp, "GCP-specific OIDC configuration.") + a.Describe(&p.Azure, "Azure-specific OIDC configuration.") +} - var stack pulumiapi.StackName - if err := stack.FromID(req.Id); err != nil { - return nil, err +func (p *OperationContextOIDC) asAPI() *pulumiapi.OIDCConfiguration { + if p == nil { + return nil } - settings, err := ds.client.GetDeploymentSettings(ctx, stack) - if err != nil { - return nil, err - } - - if settings == nil { - // Empty response causes the resource to be deleted from the state. - return &pulumirpc.ReadResponse{Id: "", Properties: nil}, nil + return &pulumiapi.OIDCConfiguration{ + AWS: p.Aws.asAPI(), + GCP: p.Gcp.asAPI(), + Azure: p.Azure.asAPI(), } +} - dsInput := PulumiServiceDeploymentSettingsInput{ - Stack: stack, - DeploymentSettings: *settings, - } +type AWSOIDCConfiguration struct { + Duration string `pulumi:"duration,optional"` + PolicyARNs []string `pulumi:"policyARNs,optional"` + RoleARN string `pulumi:"roleARN"` + SessionName string `pulumi:"sessionName"` +} - properties, err := plugin.MarshalProperties( - dsInput.ToPropertyMap(), - plugin.MarshalOptions{}, - ) +func (p *AWSOIDCConfiguration) Annotate(a infer.Annotator) { + a.Describe(&p.Duration, "Duration of the assume-role session in “XhYmZs” format") + a.Describe(&p.PolicyARNs, "Optional set of IAM policy ARNs that further restrict the assume-role session") + a.Describe(&p.RoleARN, "The ARN of the role to assume using the OIDC token.") + a.Describe(&p.SessionName, "The name of the assume-role session.") +} - if err != nil { - return nil, err +func (p *AWSOIDCConfiguration) asAPI() *pulumiapi.AWSOIDCConfiguration { + if p == nil { + return nil } + return &pulumiapi.AWSOIDCConfiguration{ + Duration: p.Duration, + PolicyARNs: p.PolicyARNs, + RoleARN: p.RoleARN, + SessionName: p.SessionName, + } +} - return &pulumirpc.ReadResponse{ - Id: req.Id, - Properties: properties, - Inputs: properties, - }, nil +type GCPOIDCConfiguration struct { + ProjectId string `pulumi:"projectId"` + Region string `pulumi:"region,optional"` + WorkloadPoolId string `pulumi:"workloadPoolId"` + ProviderId string `pulumi:"providerId"` + ServiceAccount string `pulumi:"serviceAccount"` + TokenLifetime string `pulumi:"tokenLifetime,optional"` } -func (ds *PulumiServiceDeploymentSettingsResource) Delete(req *pulumirpc.DeleteRequest) (*pbempty.Empty, error) { - ctx := context.Background() - inputsMap, err := plugin.UnmarshalProperties(req.GetProperties(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err - } - inputs := ds.ToPulumiServiceDeploymentSettingsInput(inputsMap) - if err != nil { - return nil, err - } - err = ds.client.DeleteDeploymentSettings(ctx, inputs.Stack) - if err != nil { - return nil, err - } - return &pbempty.Empty{}, nil +func (p *GCPOIDCConfiguration) Annotate(a infer.Annotator) { + a.Describe(&p.ProjectId, "The numerical ID of the GCP project.") + a.Describe(&p.Region, "The region of the GCP project.") + a.Describe(&p.WorkloadPoolId, "The ID of the workload pool to use.") + a.Describe(&p.ProviderId, "The ID of the identity provider associated with the workload pool.") + a.Describe(&p.ServiceAccount, "The email address of the service account to use.") + a.Describe(&p.TokenLifetime, "The lifetime of the temporary credentials in “XhYmZs” format.") } -func (ds *PulumiServiceDeploymentSettingsResource) Create(req *pulumirpc.CreateRequest) (*pulumirpc.CreateResponse, error) { - ctx := context.Background() - inputsMap, err := plugin.UnmarshalProperties(req.GetProperties(), - plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true, KeepSecrets: true}) - if err != nil { - return nil, err +func (p *GCPOIDCConfiguration) asAPI() *pulumiapi.GCPOIDCConfiguration { + if p == nil { + return nil } - inputs := ds.ToPulumiServiceDeploymentSettingsInput(inputsMap) - settings := inputs.DeploymentSettings - err = ds.client.CreateDeploymentSettings(ctx, inputs.Stack, settings) - if err != nil { - return nil, err + return &pulumiapi.GCPOIDCConfiguration{ + ProjectID: p.ProjectId, + Region: p.Region, + WorkloadPoolID: p.WorkloadPoolId, + ProviderID: p.ProjectId, + ServiceAccount: p.ServiceAccount, + TokenLifetime: p.TokenLifetime, } - return &pulumirpc.CreateResponse{ - Id: path.Join(inputs.Stack.OrgName, inputs.Stack.ProjectName, inputs.Stack.StackName), - Properties: req.GetProperties(), - }, nil } -func (ds *PulumiServiceDeploymentSettingsResource) Update(_ *pulumirpc.UpdateRequest) (*pulumirpc.UpdateResponse, error) { - // For simplicity, all updates are destructive, so we just call Create. - return nil, fmt.Errorf("unexpected call to update, expected create to be called instead") +type AzureOIDCConfiguration struct { + ClientId string `pulumi:"clientId"` + TenantId string `pulumi:"tenantId"` + SubscriptionId string `pulumi:"subscriptionId"` } -func (ds *PulumiServiceDeploymentSettingsResource) Name() string { - return "pulumiservice:index:DeploymentSettings" +func (p *AzureOIDCConfiguration) Annotate(a infer.Annotator) { + a.Describe(&p.ClientId, "The client ID of the federated workload identity.") + a.Describe(&p.TenantId, "The tenant ID of the federated workload identity.") + a.Describe(&p.SubscriptionId, "The subscription ID of the federated workload identity.") } -func considerAllChangesReplaces(req *pulumirpc.DiffRequest) (*pulumirpc.DiffResponse, error) { - olds, err := plugin.UnmarshalProperties(req.GetOlds(), plugin.MarshalOptions{KeepUnknowns: false, SkipNulls: true}) - if err != nil { - return nil, err +func (p *AzureOIDCConfiguration) asAPI() *pulumiapi.AzureOIDCConfiguration { + if p == nil { + return nil } - - news, err := plugin.UnmarshalProperties(req.GetNews(), plugin.MarshalOptions{KeepUnknowns: true, SkipNulls: true}) - if err != nil { - return nil, err + return &pulumiapi.AzureOIDCConfiguration{ + ClientID: p.ClientId, + TenantID: p.TenantId, + SubscriptionID: p.SubscriptionId, } +} - diffs := olds.Diff(news) - if diffs == nil { - return &pulumirpc.DiffResponse{ - Changes: pulumirpc.DiffResponse_DIFF_NONE, +type DeploymentSettingsStateOld struct { + pulumiapi.DeploymentSettings + Stack pulumiapi.StackName +} + +const FixMe = "" + +func (*DeploymentSettings) Read( + ctx p.Context, id string, inputs DeploymentSettingsInput, _ DeploymentSettingsState, +) (string, DeploymentSettingsInput, DeploymentSettingsState, error) { + + var stack pulumiapi.StackName + if err := stack.FromID(id); err != nil { + return "", DeploymentSettingsInput{}, DeploymentSettingsState{}, err + } + settings, err := GetConfig(ctx).Client.GetDeploymentSettings(ctx, stack) + if err != nil || settings == nil { + return "", DeploymentSettingsInput{}, DeploymentSettingsState{}, err + } + + return id, DeploymentSettingsInput{ + Organization: stack.OrgName, + Project: stack.ProjectName, + Stack: stack.StackName, + SourceContext: func() DeploymentSettingsSourceContext { panic("TODO") }(), + }, DeploymentSettingsState{ + Organization: stack.OrgName, + Project: stack.ProjectName, + Stack: stack.StackName, }, nil +} + +func (*DeploymentSettings) Delete(ctx p.Context, id string, props DeploymentSettingsState) error { + return GetConfig(ctx).Client.DeleteDeploymentSettings(ctx, props.asStack()) +} + +func (*DeploymentSettings) Create( + ctx p.Context, name string, inputs DeploymentSettingsInput, preview bool, +) (string, DeploymentSettingsState, error) { + if preview { + return "", DeploymentSettingsState{}, nil } - dd := plugin.NewDetailedDiffFromObjectDiff(diffs, false) + stack := inputs.asStack() - detailedDiffs := map[string]*pulumirpc.PropertyDiff{} - for k, v := range dd { - v.Kind = v.Kind.AsReplace() - detailedDiffs[k] = &pulumirpc.PropertyDiff{ - Kind: pulumirpc.PropertyDiff_Kind(v.Kind), - InputDiff: v.InputDiff, - } + err := GetConfig(ctx).Client.CreateDeploymentSettings(ctx, stack, inputs.asAPI()) + if err != nil { + return "", DeploymentSettingsState{}, err } - return &pulumirpc.DiffResponse{ - Changes: pulumirpc.DiffResponse_DIFF_SOME, - DetailedDiff: detailedDiffs, - DeleteBeforeReplace: true, - HasDetailedDiff: true, - }, nil + return path.Join(stack.OrgName, stack.ProjectName, stack.StackName), + DeploymentSettingsState{ + Organization: stack.OrgName, + Project: stack.ProjectName, + Stack: stack.StackName, + }, nil } diff --git a/provider/pkg/provider/provider.go b/provider/pkg/provider/provider.go index e7093158..2b651482 100644 --- a/provider/pkg/provider/provider.go +++ b/provider/pkg/provider/provider.go @@ -71,6 +71,7 @@ func makeProvider(host *provider.HostClient, name, version string) (pulumirpc.Re infer.Resource[*TeamAccessToken](), infer.Resource[*OrgAccessToken](), infer.Resource[*Webhook](), + infer.Resource[*DeploymentSettings](), }, }))(nil) }