diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 249387daf..a9e4f647d 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -16,19 +16,15 @@ jobs: uses: actions/setup-go@v3 with: go-version-file: 'go.mod' - - name: Prepare env - run: make init - - name: Prepare terraform tools + - name: Install terraform run: make tools.terraform - - name: Prepare dummy edgerc - run: make dummy-edgerc - - name: Run checks - run: make check + - name: Run linter + run: make lint - name: Create build run: make build - name: Run tests run: make test - - name: Run terraform-fmt - run: make terraform-fmt - - name: Run terraform lint + - name: Run terraform fmt check + run: make terraform-fmtcheck + - name: Run tflint run: make terraform-lint \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 27be0553b..75575535d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -26,7 +26,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v2 with: - go-version: 1.18 + go-version: 1.20 - name: Import GPG key id: import_gpg uses: crazy-max/ghaction-import-gpg@v5 @@ -41,7 +41,7 @@ jobs: - name: Run GoReleaser uses: goreleaser/goreleaser-action@v2 with: - version: v1.18.2 + version: v1.20.0 args: release --rm-dist env: GPG_FINGERPRINT: ${{ steps.import_gpg.outputs.fingerprint }} diff --git a/.gitignore b/.gitignore index a4d12a4bd..1757b6ca1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,11 @@ # testing and custom build code .terraform/ +.build/ terraform-provider-akamai terraform.tfstate terraform.tfstate.backup *.log +tools/bin/ # local files .DS_Store diff --git a/CHANGELOG.md b/CHANGELOG.md index d6773f1eb..d5ec1453d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,32 @@ # RELEASE NOTES +## 5.3.0 (Sep 26, 2023) + +#### FEATURES/ENHANCEMENTS: + +* Appsec + * Added `sync_point` value in `akamai_networklist_network_lists` data source + +* CPS + * Added `pending_changes` computed field to `akamai_cps_enrollment` data source ([#PR468](https://github.com/akamai/terraform-provider-akamai/pull/468)) + +* Cloud Wrapper + * Added support for `comments` argument modification in `akamai_cloudwrapper_configuration` resource + +#### BUG FIXES: + +* Appsec + * Fixed `akamai_networklist_network_list` import resulting in null `contract_id` and `group_id` + +* PAPI + * Added errors to `data_property_akamai_contract` and `data_property_akamai_group` data sources, when fetching groups returns multiple inconclusive results + * Fixed drift issue in `akamai_edge_hostname` resource [(#457)](https://github.com/akamai/terraform-provider-akamai/issues/457) + * Added missing fields to `akamai_property_builder` for `origin` and `siteShield` behaviors ([#465](https://github.com/akamai/terraform-provider-akamai/issues/465)) + * Improved `akamai_property_rules_builder` empty list transformation ([#438](https://github.com/akamai/terraform-provider-akamai/issues/438)) + +* GTM + * Added better drift handling in `akamai_gtm_property` - when property is removed without terraform knowledge, resource doesn't just error on refresh but suggests recreation + ## 5.2.0 (Aug 29, 2023) #### FEATURES/ENHANCEMENTS: @@ -1034,8 +1061,8 @@ These are the operations supported in the Network Lists API v2: These are the operations supported in the Identity Management: User Administration API v2: * Create a new user -* Update a user’s profile -* Update a user’s role assignments +* Update a user’s profile +* Update a user’s role assignments * Delete a user ## 1.1.1 (Jan 8, 2021) diff --git a/GNUmakefile b/GNUmakefile index 4043fc663..785495946 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -10,10 +10,25 @@ build_dir = .build TF_PLUGIN_DIR ?= ~/.terraform.d/plugins install_path = $(TF_PLUGIN_DIR)/$(registry_name)/$(namespace)/$(PKG_NAME)/$(version)/$$(go env GOOS)_$$(go env GOARCH) -# Tools versions -golangci-lint-version = v1.52.2 -tflint-version = v0.45.0 +# Developer tools +TOOLS_MOD_FILE := $(CURDIR)/tools/go.mod +TOOLS_BIN_DIR := $(CURDIR)/tools/bin +TOOL_PKGS := $(shell go list -f '{{join .Imports " "}}' tools/tools.go) +TOOLS := $(foreach TOOL,$(notdir $(TOOL_PKGS)),$(TOOLS_BIN_DIR)/$(TOOL)) +$(foreach TOOL,$(TOOLS),$(eval $(notdir $(TOOL)) := $(TOOL))) # Allows to use e.g. $(golangci-lint) instead of $(TOOLS_BIN_DIR)/golangci-lint +$(TOOLS_BIN_DIR): + @mkdir -p $(TOOLS_BIN_DIR) + +$(TOOLS_MOD_FILE): tidy + +$(TOOLS): $(TOOLS_MOD_FILE) | $(TOOLS_BIN_DIR) + $(eval TOOL := $(filter %/$(@F),$(TOOL_PKGS))) + $(eval TOOL_VERSION := $(shell grep -m 1 $(shell echo $(TOOL) | cut -d/ -f 1-3) $(TOOLS_MOD_FILE) | cut -d' ' -f2)) + @echo "Installing $(TOOL)@$(TOOL_VERSION)" + @GOBIN=$(TOOLS_BIN_DIR) go install -modfile=$(TOOLS_MOD_FILE) $(TOOL) + +# Targets default: build .PHONY: install @@ -24,10 +39,12 @@ install: build .PHONY: build build: mkdir -p $(build_dir) - go build -tags all -o $(build_dir)/$(bin_name) + go build -o $(build_dir)/$(bin_name) -.PHONY: check -check: fmtcheck lint vet +.PHONY: tidy +tidy: + @go mod tidy + @cd tools && go mod tidy .PHONY: test test: @@ -37,68 +54,35 @@ test: testacc: TF_ACC=1 go test $(TEST) -v $(TESTARGS) -timeout 300m -.PHONY: vet -vet: - @echo "==> Checking source code against vet" - @go vet $$(go list ./...); if [ $$? -ne 0 ]; then \ - echo ""; \ - echo "Vet found suspicious constructs. Please check the reported constructs"; \ - echo "and fix them if necessary before submitting the code for review."; \ - exit 1; \ - fi - .PHONY: fmt -fmt: |; $(info ==> Running goimports...) - goimports -w . +fmt: $(goimports) + $(goimports) -w . -.PHONY: terraform-fmt -terraform-fmt: +.PHONY: terraform-fmtcheck +terraform-fmtcheck: terraform fmt -recursive -check -.PHONY: fmtcheck -fmtcheck: |; $(info ==> Running format and imports check...) - $(eval OUTPUT = $(shell goimports -l .)) - @if [ "$(OUTPUT)" != "" ]; then\ - echo "Found following files with incorrect format and/or imports:";\ - echo "$(OUTPUT)";\ - false;\ - fi - .PHONY: lint -lint: - @echo "==> Checking source code against golangci-lint" - @$$(go env GOPATH)/bin/golangci-lint run +lint: $(golangci-lint) + $(golangci-lint) run .PHONY: terraform-lint -terraform-lint: - @echo "==> Checking source code against tflint" - @find ./examples -type f -name "*.tf" | xargs -I % dirname % | sort -u | xargs -I @ sh -c "echo @ && tflint @" +terraform-lint: $(tflint) + @find ./examples -type f -name "*.tf" | xargs -I % dirname % | sort -u | xargs -I @ sh -c "echo @ && $(tflint) @" .PHONY: test-compile test-compile: go test -c ./akamai $(TESTARGS) -.PHONY: tools.golangci-lint -tools.golangci-lint: - @echo Installing golangci-lint - @curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $$(go env GOPATH)/bin $(golangci-lint-version) - -.PHONY: tools.goimports -tools.goimports: - @echo Installing goimports - go install golang.org/x/tools/cmd/goimports@latest +.PHONY: tools +tools: $(TOOLS) -.PHONY: tools.tflint -tools.tflint: - @echo Installing tf-lint - @export TFLINT_VERSION=$(tflint-version) && curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash +.PHONY: clean-tools +clean-tools: + @rm -rf $(TOOLS_BIN_DIR) .PHONY: init -init: tools.golangci-lint tools.tflint tools.goimports - -.PHONY: dummy-edgerc -dummy-edgerc: - @sh -c "'$(CURDIR)/scripts/dummyedgerc.sh'" +init: tools tools.terraform .PHONY: tools.terraform tools.terraform: diff --git a/build/internal/docker_jenkins.bash b/build/internal/docker_jenkins.bash index db6b5ad9c..114e6ea3f 100755 --- a/build/internal/docker_jenkins.bash +++ b/build/internal/docker_jenkins.bash @@ -12,7 +12,7 @@ RELOAD_DOCKER_IMAGE="${3:-false}" # Recalculate DOCKER_IMAGE_SIZE if any changes to dockerfile. TIMEOUT="40m" -DOCKER_IMAGE_SIZE="651787326" +DOCKER_IMAGE_SIZE="554443852" SSH_PRV_KEY="$(cat ~/.ssh/id_rsa)" SSH_PUB_KEY="$(cat ~/.ssh/id_rsa.pub)" @@ -37,8 +37,6 @@ PROVIDER_BRANCH_HASH="$(git rev-parse --short HEAD)" echo "Making build on branch $PROVIDER_BRANCH_NAME at hash $PROVIDER_BRANCH_HASH with tag $eTAG" mkdir -p $COVERAGE_DIR -cp "$HOME"/.edgerc "$WORKDIR"/.edgerc -sed -i -e "1s/^.*$/[default]/" "$WORKDIR"/.edgerc docker rm -f akatf-container 2> /dev/null || true @@ -70,6 +68,7 @@ docker run -d -it --name akatf-container --entrypoint "/usr/bin/tail" \ -e SSH_KNOWN_HOSTS="${SSH_KNOWN_HOSTS}" \ -e SSH_CONFIG="${SSH_CONFIG}" \ -e TIMEOUT="$TIMEOUT" \ + -e TERRAFORM_VERSION="$TERRAFORM_VERSION" \ -v "$HOME"/.ssh/id_rsa=/root/id_rsa \ -v "$HOME"/.ssh/id_rsa.pub=/root/id_rsa.pub \ -v "$HOME"/.ssh/known_hosts=/root/known_hosts \ @@ -92,26 +91,22 @@ docker exec akatf-container sh -c 'git clone ssh://git@git.source.akamai.com:799 echo "Checkout branches" docker exec akatf-container sh -c 'cd edgegrid; git checkout ${EDGEGRID_BRANCH_NAME}; cd ../terraform-provider-akamai; git checkout ${PROVIDER_BRANCH_NAME}; - go mod edit -replace github.com/akamai/AkamaiOPEN-edgegrid-golang/v7=../edgegrid; - go mod tidy -compat=1.18' + go mod edit -replace github.com/akamai/AkamaiOPEN-edgegrid-golang/v7=../edgegrid' -echo "Running golangci-lint" -docker exec akatf-container sh -c 'cd terraform-provider-akamai; golangci-lint run' +echo "Installing terraform" +docker exec akatf-container sh -c 'cd terraform-provider-akamai; make tools.terraform' -echo "Running gofmt check" -if ! docker exec akatf-container sh -c 'cd terraform-provider-akamai; test -z $(gofmt -l .)'; then - echo "gofmt check failed" - exit 1 -fi +echo "Running golangci-lint" +docker exec akatf-container sh -c 'cd terraform-provider-akamai; make lint' echo "Running terraform fmt" -docker exec akatf-container sh -c 'cd terraform-provider-akamai; terraform fmt -recursive -check' +docker exec akatf-container sh -c 'cd terraform-provider-akamai; make terraform-fmtcheck' echo "Running tflint on examples" -docker exec akatf-container sh -c 'cd terraform-provider-akamai; find ./examples -type f -name "*.tf" | xargs -I % dirname % | sort -u | xargs -I @ sh -c "echo @ && tflint @"' +docker exec akatf-container sh -c 'cd terraform-provider-akamai; make terraform-lint' echo "Running tests with xUnit output" -docker exec akatf-container sh -c 'cd terraform-provider-akamai; go mod tidy -compat=1.18; +docker exec akatf-container sh -c 'cd terraform-provider-akamai; go mod tidy; 2>&1 go test -timeout $TIMEOUT -v -coverpkg=./... -coverprofile=../profile.out -covermode=$COVERMODE ./... | tee ../tests.output' docker exec akatf-container sh -c 'cat tests.output | go-junit-report' > test/tests.xml docker exec akatf-container sh -c 'cat tests.output' > test/tests.output @@ -125,8 +120,6 @@ docker exec akatf-container sh -c 'cat index.html' > "$COVERAGE_HTML" docker exec akatf-container sh -c 'cat coverage.xml' > "$COVERAGE_XML" echo "Creating docker build" -docker exec akatf-container sh -c 'cd terraform-provider-akamai; go install -tags all; - mkdir -p /root/.terraform.d/plugins/registry.terraform.io/akamai/akamai/${PROVIDER_VERSION}/linux_amd64; - cp /root/go/bin/terraform-provider-akamai /root/.terraform.d/plugins/registry.terraform.io/akamai/akamai/${PROVIDER_VERSION}/linux_amd64/terraform-provider-akamai_v${PROVIDER_VERSION}' +docker exec akatf-container sh -c 'cd terraform-provider-akamai; make build' docker rm -f akatf-container 2> /dev/null || true diff --git a/build/internal/package/Dockerfile b/build/internal/package/Dockerfile index fcee36dc4..3e89bdcb3 100644 --- a/build/internal/package/Dockerfile +++ b/build/internal/package/Dockerfile @@ -1,26 +1,21 @@ -# syntax=docker/dockerfile:1.0-experimental -ARG TERRAFORM_VERSION="1.4.6" -FROM alpine:3.16 +FROM golang:1.20-alpine3.18 + ENV PROVIDER_VERSION="1.0.0" \ CGO_ENABLED=0 \ GOOS="linux" \ GOARCH="amd64" \ - PATH=$PATH:/usr/local/go/bin:/root/go/bin \ - TFLINT_VERSION="v0.45.0" + PATH=$PATH:/usr/local/go/bin:/root/go/bin -ARG GOLANGCI_LINT_VERSION="v1.50.1" ARG SSH_PRV_KEY ARG SSH_PUB_KEY ARG SSH_KNOWN_HOSTS WORKDIR $GOPATH/src/github.com/akamai -RUN apk add --update git bash sudo openssh gcc go musl-dev openssl-dev ca-certificates unzip curl terraform && \ +RUN apk add --update git bash sudo openssh gcc go musl-dev openssl-dev ca-certificates unzip curl make && \ go install github.com/axw/gocov/gocov@latest && \ go install github.com/AlekSi/gocov-xml@latest && \ - curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(go env GOPATH)/bin ${GOLANGCI_LINT_VERSION} && \ go install github.com/jstemmer/go-junit-report@latest && \ - mkdir -p /root/.ssh && \ - curl -s https://raw.githubusercontent.com/terraform-linters/tflint/master/install_linux.sh | bash + mkdir -p /root/.ssh ADD build/internal/package/AkamaiCorpRoot-G1.pem /usr/local/share/ca-certificates/AkamaiCorpRoot-G1.pem RUN update-ca-certificates diff --git a/docs/data-sources/data-sources.md b/docs/data-sources/data-sources.md index 500b24d1c..76f078d4a 100644 --- a/docs/data-sources/data-sources.md +++ b/docs/data-sources/data-sources.md @@ -8,17 +8,17 @@ We’ve moved our documentation to the Akamai TechDocs site. Use the table to fi | Subprovider | Description | |---------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| -| [Application Security](https://techdocs.akamai.com/terraform/v5.2/docs/appsec-datasources) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | -| [Bot Manager](https://techdocs.akamai.com/terraform/v5.2/docs/botman-datasources) | Identify, track, and respond to bot activity on your domain or in your app. | -| [Certificates](https://techdocs.akamai.com/terraform/v5.2/docs/cps-datasources) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | -| [Client Lists](https://techdocs.akamai.com/terraform/v5.2/docs/cli-data-sources) | Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| -| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.2/docs/cw-data-sources) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| -| [Cloudlets](https://techdocs.akamai.com/terraform/v5.2/docs/cl-datasources) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | -| [DataStream](https://techdocs.akamai.com/terraform/v5.2/docs/ds-datasources) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | -| [Edge DNS](https://techdocs.akamai.com/terraform/v5.2/docs/edns-datasources) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | -| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.2/docs/ew-datasources) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | -| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.2/docs/gtm-datasources) | Use load balancing to manage website and mobile performance demands. | -| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.2/docs/iam-datasources) | Create users and groups, and define policies that manage access to your Akamai applications. | -| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.2/docs/ivm-datasources) | Automate image and video delivery optimizations for your website visitors. | -| [Network Lists](https://techdocs.akamai.com/terraform/v5.2/docs/nl-datasources) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | -| [Property](https://techdocs.akamai.com/terraform/v5.2/docs/pm-datasources) | Define rules and behaviors that govern your website delivery based on match criteria. | +| [Application Security](https://techdocs.akamai.com/terraform/v5.3/docs/appsec-datasources) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | +| [Bot Manager](https://techdocs.akamai.com/terraform/v5.3/docs/botman-datasources) | Identify, track, and respond to bot activity on your domain or in your app. | +| [Certificates](https://techdocs.akamai.com/terraform/v5.3/docs/cps-datasources) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | +| [Client Lists](https://techdocs.akamai.com/terraform/v5.3/docs/cli-data-sources) | Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| +| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.3/docs/cw-data-sources) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| +| [Cloudlets](https://techdocs.akamai.com/terraform/v5.3/docs/cl-datasources) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | +| [DataStream](https://techdocs.akamai.com/terraform/v5.3/docs/ds-datasources) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | +| [Edge DNS](https://techdocs.akamai.com/terraform/v5.3/docs/edns-datasources) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | +| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.3/docs/ew-datasources) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | +| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.3/docs/gtm-datasources) | Use load balancing to manage website and mobile performance demands. | +| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.3/docs/iam-datasources) | Create users and groups, and define policies that manage access to your Akamai applications. | +| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.3/docs/ivm-datasources) | Automate image and video delivery optimizations for your website visitors. | +| [Network Lists](https://techdocs.akamai.com/terraform/v5.3/docs/nl-datasources) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | +| [Property](https://techdocs.akamai.com/terraform/v5.3/docs/pm-datasources) | Define rules and behaviors that govern your website delivery based on match criteria. | diff --git a/docs/guides/get-started.md b/docs/guides/get-started.md index eba134bde..018516dac 100644 --- a/docs/guides/get-started.md +++ b/docs/guides/get-started.md @@ -99,20 +99,20 @@ Use the table to find information about the subprovider you’re using. | Subprovider | Description | |----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| -| [Application Security](https://techdocs.akamai.com/terraform/v5.2/docs/configure-appsec) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | -| [Bot Manager](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-botman) | Identify, track, and respond to bot activity on your domain or in your app. | -| [Certificates](https://techdocs.akamai.com/terraform/v5.2/docs/cps-integration-guide) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | -| [Client Lists](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-client-lists) | Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| -| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-cloud-wrapper) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| -| [Cloudlets](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-cloudlets) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | -| [DataStream](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-datastream) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | -| [Edge DNS](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-edgedns) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | -| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-edgeworkers) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | -| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-gtm) | Use load balancing to manage website and mobile performance demands. | -| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-iam) | Create users and groups, and define policies that manage access to your Akamai applications. | -| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-ivm) | Automate image and video delivery optimizations for your website visitors. | -| [Network Lists](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-network-lists) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | -| [Property](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-property-provisioning) | Define rules and behaviors that govern your website delivery based on match criteria. | +| [Application Security](https://techdocs.akamai.com/terraform/v5.3/docs/configure-appsec) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | +| [Bot Manager](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-botman) | Identify, track, and respond to bot activity on your domain or in your app. | +| [Certificates](https://techdocs.akamai.com/terraform/v5.3/docs/cps-integration-guide) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | +| [Client Lists](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-client-lists) | Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| +| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-cloud-wrapper) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| +| [Cloudlets](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-cloudlets) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | +| [DataStream](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-datastream) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | +| [Edge DNS](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-edgedns) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | +| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-edgeworkers) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | +| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-gtm) | Use load balancing to manage website and mobile performance demands. | +| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-iam) | Create users and groups, and define policies that manage access to your Akamai applications. | +| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-ivm) | Automate image and video delivery optimizations for your website visitors. | +| [Network Lists](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-network-lists) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | +| [Property](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-property-provisioning) | Define rules and behaviors that govern your website delivery based on match criteria. | ### Get contract and group IDs diff --git a/docs/index.md b/docs/index.md index 61ed6fb6b..a60b7b507 100644 --- a/docs/index.md +++ b/docs/index.md @@ -35,20 +35,20 @@ We’ve moved our documentation to the Akamai TechDocs site. Use the table to fi | Subprovider | Description | |----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| -| [Application Security](https://techdocs.akamai.com/terraform/v5.2/docs/configure-appsec) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | -| [Bot Manager](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-botman) | Identify, track, and respond to bot activity on your domain or in your app. | -| [Certificates](https://techdocs.akamai.com/terraform/v5.2/docs/cps-integration-guide) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | -| [Client Lists](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-client-lists) | Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| -| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-cloud-wrapper) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| -| [Cloudlets](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-cloudlets) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | -| [DataStream](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-datastream) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | -| [Edge DNS](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-edgedns) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | -| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-edgeworkers) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | -| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-gtm) | Use load balancing to manage website and mobile performance demands. | -| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-iam) | Create users and groups, and define policies that manage access to your Akamai applications. | -| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-ivm) | Automate image and video delivery optimizations for your website visitors. | -| [Network Lists](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-network-lists) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | -| [Property](https://techdocs.akamai.com/terraform/v5.2/docs/set-up-property-provisioning) | Define rules and behaviors that govern your website delivery based on match criteria. | +| [Application Security](https://techdocs.akamai.com/terraform/v5.3/docs/configure-appsec) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | +| [Bot Manager](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-botman) | Identify, track, and respond to bot activity on your domain or in your app. | +| [Certificates](https://techdocs.akamai.com/terraform/v5.3/docs/cps-integration-guide) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | +| [Client Lists](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-client-lists) | Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| +| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-cloud-wrapper) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| +| [Cloudlets](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-cloudlets) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | +| [DataStream](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-datastream) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | +| [Edge DNS](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-edgedns) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | +| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-edgeworkers) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | +| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-gtm) | Use load balancing to manage website and mobile performance demands. | +| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-iam) | Create users and groups, and define policies that manage access to your Akamai applications. | +| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-ivm) | Automate image and video delivery optimizations for your website visitors. | +| [Network Lists](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-network-lists) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | +| [Property](https://techdocs.akamai.com/terraform/v5.3/docs/set-up-property-provisioning) | Define rules and behaviors that govern your website delivery based on match criteria. | ## Links to resources diff --git a/docs/resources/resources.md b/docs/resources/resources.md index 4a2021a9b..94387f6dd 100644 --- a/docs/resources/resources.md +++ b/docs/resources/resources.md @@ -8,17 +8,17 @@ We’ve moved our documentation to the Akamai TechDocs site. Use the table to fi | Subprovider | Description | |-------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------| -| [Application Security](https://techdocs.akamai.com/terraform/v5.2/docs/appsec-resources) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | -| [Bot Manager](https://techdocs.akamai.com/terraform/v5.2/docs/botman-resources) | Identify, track, and respond to bot activity on your domain or in your app. | -| [Certificates](https://techdocs.akamai.com/terraform/v5.2/docs/cps-resources) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | -| [Client Lists](https://techdocs.akamai.com/terraform/v5.2/docs/cli-resources) |Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| -| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.2/docs/cw-resources) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| -| [Cloudlets](https://techdocs.akamai.com/terraform/v5.2/docs/cl-resources) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | -| [DataStream](https://techdocs.akamai.com/terraform/v5.2/docs/ds-resources) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | -| [Edge DNS](https://techdocs.akamai.com/terraform/v5.2/docs/edns-resources) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | -| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.2/docs/ew-resources) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | -| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.2/docs/gtm-resources) | Use load balancing to manage website and mobile performance demands. | -| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.2/docs/iam-resources) | Create users and groups, and define policies that manage access to your Akamai applications. | -| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.2/docs/ivm-resources) | Automate image and video delivery optimizations for your website visitors. | -| [Network Lists](https://techdocs.akamai.com/terraform/v5.2/docs/nl-resources) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | -| [Property](https://techdocs.akamai.com/terraform/v5.2/docs/pm-resources) | Define rules and behaviors that govern your website delivery based on match criteria. | +| [Application Security](https://techdocs.akamai.com/terraform/v5.3/docs/appsec-resources) | Manage security configurations, security policies, match targets, rate policies, and firewall rules. | +| [Bot Manager](https://techdocs.akamai.com/terraform/v5.3/docs/botman-resources) | Identify, track, and respond to bot activity on your domain or in your app. | +| [Certificates](https://techdocs.akamai.com/terraform/v5.3/docs/cps-resources) | Full life cycle management of SSL certificates for your ​Akamai​ CDN applications. | +| [Client Lists](https://techdocs.akamai.com/terraform/v5.3/docs/cli-resources) |Reduce harmful security attacks by allowing only trusted IP/CIDRs, locations, autonomous system numbers, and TLS fingerprints to access your services and content.| +| [Cloud Wrapper](https://techdocs.akamai.com/terraform/v5.3/docs/cw-resources) | Provide your customers with a more consistent user experience by adding a custom caching layer that improves the connection between your cloud infrastructure and the Akamai platform.| +| [Cloudlets](https://techdocs.akamai.com/terraform/v5.3/docs/cl-resources) | Solve specific business challenges using value-added apps that complement ​Akamai​'s core solutions. | +| [DataStream](https://techdocs.akamai.com/terraform/v5.3/docs/ds-resources) | Monitor activity on the ​Akamai​ platform and send live log data to a destination of your choice. | +| [Edge DNS](https://techdocs.akamai.com/terraform/v5.3/docs/edns-resources) | Replace or augment your DNS infrastructure with a cloud-based authoritative DNS solution. | +| [EdgeWorkers](https://techdocs.akamai.com/terraform/v5.3/docs/ew-resources) | Execute JavaScript functions at the edge to optimize site performance and customize web experiences. | +| [Global Traffic Management](https://techdocs.akamai.com/terraform/v5.3/docs/gtm-resources) | Use load balancing to manage website and mobile performance demands. | +| [Identity and Access Management](https://techdocs.akamai.com/terraform/v5.3/docs/iam-resources) | Create users and groups, and define policies that manage access to your Akamai applications. | +| [Image and Video Manager](https://techdocs.akamai.com/terraform/v5.3/docs/ivm-resources) | Automate image and video delivery optimizations for your website visitors. | +| [Network Lists](https://techdocs.akamai.com/terraform/v5.3/docs/nl-resources) | Automate the creation, deployment, and management of lists used in ​Akamai​ security products. | +| [Property](https://techdocs.akamai.com/terraform/v5.3/docs/pm-resources) | Define rules and behaviors that govern your website delivery based on match criteria. | diff --git a/go.mod b/go.mod index 4d324f0ce..808b22de7 100644 --- a/go.mod +++ b/go.mod @@ -1,52 +1,49 @@ module github.com/akamai/terraform-provider-akamai/v5 require ( - github.com/akamai/AkamaiOPEN-edgegrid-golang/v7 v7.2.1 + github.com/akamai/AkamaiOPEN-edgegrid-golang/v7 v7.3.0 github.com/allegro/bigcache/v2 v2.2.5 github.com/apex/log v1.9.0 + github.com/dlclark/regexp2 v1.10.0 github.com/go-ozzo/ozzo-validation/v4 v4.3.0 github.com/google/go-cmp v0.5.9 github.com/google/uuid v1.3.0 github.com/hashicorp/go-cty v1.4.1-0.20200414143053-d3edf31b6320 github.com/hashicorp/go-hclog v1.5.0 github.com/hashicorp/terraform-plugin-framework v1.3.3 + github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 github.com/hashicorp/terraform-plugin-framework-validators v0.11.0 github.com/hashicorp/terraform-plugin-go v0.18.0 + github.com/hashicorp/terraform-plugin-log v0.9.0 + github.com/hashicorp/terraform-plugin-mux v0.11.2 github.com/hashicorp/terraform-plugin-sdk/v2 v2.27.0 github.com/hashicorp/terraform-plugin-testing v1.4.0 + github.com/iancoleman/strcase v0.3.0 github.com/jedib0t/go-pretty/v6 v6.0.4 github.com/jinzhu/copier v0.3.2 - github.com/spf13/cast v1.3.1 - github.com/stretchr/testify v1.7.2 + github.com/spf13/cast v1.5.0 + github.com/stretchr/testify v1.8.4 github.com/tj/assert v0.0.3 golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 + golang.org/x/sync v0.3.0 ) require ( github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 // indirect - github.com/cloudflare/circl v1.3.3 // indirect - github.com/gopherjs/gopherjs v1.17.2 // indirect - github.com/hashicorp/go-plugin v1.4.10 // indirect - github.com/jtolds/gls v4.20.0+incompatible // indirect - github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect - github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - golang.org/x/mod v0.10.0 // indirect - google.golang.org/grpc v1.56.1 // indirect -) - -require ( - github.com/agext/levenshtein v1.2.2 // indirect + github.com/agext/levenshtein v1.2.3 // indirect github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 // indirect github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect github.com/asaskevich/govalidator v0.0.0-20200108200545-475eaeb16496 // indirect + github.com/cloudflare/circl v1.3.3 // indirect github.com/davecgh/go-spew v1.1.1 // indirect - github.com/dlclark/regexp2 v1.8.1 - github.com/fatih/color v1.13.0 // indirect + github.com/fatih/color v1.14.1 // indirect + github.com/go-test/deep v1.1.0 // indirect github.com/golang/protobuf v1.5.3 // indirect github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.4.10 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/hc-install v0.5.2 // indirect @@ -54,15 +51,11 @@ require ( github.com/hashicorp/logutils v1.0.0 // indirect github.com/hashicorp/terraform-exec v0.18.1 // indirect github.com/hashicorp/terraform-json v0.17.1 // indirect - github.com/hashicorp/terraform-plugin-framework-timeouts v0.4.1 - github.com/hashicorp/terraform-plugin-log v0.9.0 - github.com/hashicorp/terraform-plugin-mux v0.10.0 github.com/hashicorp/terraform-registry-address v0.2.1 // indirect github.com/hashicorp/terraform-svchost v0.1.1 // indirect github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect - github.com/iancoleman/strcase v0.2.0 - github.com/mattn/go-colorable v0.1.12 // indirect - github.com/mattn/go-isatty v0.0.14 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect github.com/mattn/go-runewidth v0.0.9 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect @@ -73,19 +66,24 @@ require ( github.com/oklog/run v1.0.0 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/stretchr/objx v0.1.1 // indirect + github.com/rogpeppe/go-internal v1.9.0 // indirect + github.com/stretchr/objx v0.5.0 // indirect github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vmihailenco/msgpack/v5 v5.3.5 // indirect + github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect github.com/zclconf/go-cty v1.13.2 // indirect go.uber.org/ratelimit v0.2.0 // indirect - golang.org/x/crypto v0.11.0 // indirect - golang.org/x/net v0.11.0 // indirect - golang.org/x/sync v0.2.0 - golang.org/x/sys v0.10.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230410155749-daa745c078e1 // indirect + google.golang.org/grpc v1.56.1 // indirect google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/ini.v1 v1.62.0 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index a1d240947..efc9e996d 100644 --- a/go.sum +++ b/go.sum @@ -2,10 +2,10 @@ github.com/Microsoft/go-winio v0.5.2 h1:a9IhgEQBCUEk6QCdml9CiJGhAws+YwffDHEMp1VM github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8 h1:wPbRQzjjwFc0ih8puEVAOFGELsn1zoIIYdxvML7mDxA= github.com/ProtonMail/go-crypto v0.0.0-20230217124315-7d5c6f04bbb8/go.mod h1:I0gYDMZ6Z5GRU7l58bNFSkPTFN6Yl12dsUlAZ8xy98g= github.com/acomagu/bufpipe v1.0.4 h1:e3H4WUzM3npvo5uv95QuJM3cQspFNtFBzvJ2oNjKIDQ= -github.com/agext/levenshtein v1.2.2 h1:0S/Yg6LYmFJ5stwQeRp6EeOcCbj7xiqQSdNelsXvaqE= -github.com/agext/levenshtein v1.2.2/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= -github.com/akamai/AkamaiOPEN-edgegrid-golang/v7 v7.2.1 h1:amPKOiXDgUXQcSMMg0XXvOZkF9sQcffZXZrZT4VJ3z0= -github.com/akamai/AkamaiOPEN-edgegrid-golang/v7 v7.2.1/go.mod h1:zZWAMUwE4q5sVPgnjz9jiqtXA01tM3m9HYd6Wk0ev90= +github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo= +github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= +github.com/akamai/AkamaiOPEN-edgegrid-golang/v7 v7.3.0 h1:eiPKdmGPXJCfnavOVhJ2vNDHwNilLzdXfn/CqnPmfZ4= +github.com/akamai/AkamaiOPEN-edgegrid-golang/v7 v7.3.0/go.mod h1:+8Nc6CkB/hiTEvoxxZwvY3whU5QsXxW4RhSARTMnAfI= github.com/allegro/bigcache/v2 v2.2.5 h1:mRc8r6GQjuJsmSKQNPsR5jQVXc8IJ1xsW5YXUYMLfqI= github.com/allegro/bigcache/v2 v2.2.5/go.mod h1:FppZsIO+IZk7gCuj5FiIDHGygD9xvWQcqg1uIPMb6tY= github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 h1:MzBOUgng9orim59UnfUTLRjMpd09C5uEVQ6RPGeCaVI= @@ -29,12 +29,14 @@ github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUK 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/dlclark/regexp2 v1.8.1 h1:6Lcdwya6GjPUNsBct8Lg/yRPwMhABj269AAzdGSiR+0= -github.com/dlclark/regexp2 v1.8.1/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0= +github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/emirpasic/gods v1.18.1 h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/go-git/gcfg v1.5.0 h1:Q5ViNfGF8zFgyJWPqYwA7qGFoMTEiBmdlkcfRmpIMa4= github.com/go-git/go-billy/v5 v5.4.1 h1:Uwp5tDRkPr+l/TnbHOQzp+tmJfLceOlbVucgpTz8ix4= @@ -42,7 +44,8 @@ github.com/go-git/go-git/v5 v5.6.1 h1:q4ZRqQl4pR/ZJHc1L5CFjGA1a10u76aV1iC+nh+bHs github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= github.com/go-ozzo/ozzo-validation/v4 v4.3.0 h1:byhDUpfEwjsVQb1vBunvIjh2BHQ9ead57VkAEY4V+Es= github.com/go-ozzo/ozzo-validation/v4 v4.3.0/go.mod h1:2NKgrcHl3z6cJs+3Oo940FPRiTzuqKbvfrL2RxCj6Ew= -github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -56,8 +59,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/gopherjs/gopherjs v1.17.2 h1:fQnZVsXk8uxXIStYb0N4bGk7jeyTalG/wsZjQ25dO0g= -github.com/gopherjs/gopherjs v1.17.2/go.mod h1:pRRIvn/QzFLrKfvEz3qUuEhtE/zLCWfreZ6J5gM2i+k= github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-checkpoint v0.5.0 h1:MFYpPZCnQqQTE18jFwSII6eUQrD/oxMFp3mlgcqk5mU= @@ -98,8 +99,8 @@ github.com/hashicorp/terraform-plugin-go v0.18.0 h1:IwTkOS9cOW1ehLd/rG0y+u/TGLK9 github.com/hashicorp/terraform-plugin-go v0.18.0/go.mod h1:l7VK+2u5Kf2y+A+742GX0ouLut3gttudmvMgN0PA74Y= github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow= -github.com/hashicorp/terraform-plugin-mux v0.10.0 h1:VejY1BffxGy2iYOaa8DDHavY4k9jbvAE8F3lhruspKY= -github.com/hashicorp/terraform-plugin-mux v0.10.0/go.mod h1:9sdnpmY20xIsl4ItsfODZYE+MgpSy/osXpSf+RwaZCY= +github.com/hashicorp/terraform-plugin-mux v0.11.2 h1:XMkAmWQN+6F+l4jwNeqdPom/8Vly6ZNDxHoKjiRHx5c= +github.com/hashicorp/terraform-plugin-mux v0.11.2/go.mod h1:qjoF/pI49rILSNQzKIuDtU+ZX9mpQD0B8YNE1GceLPc= github.com/hashicorp/terraform-plugin-sdk/v2 v2.27.0 h1:I8efBnjuDrgPjNF1MEypHy48VgcTIUY4X6rOFunrR3Y= github.com/hashicorp/terraform-plugin-sdk/v2 v2.27.0/go.mod h1:cUEP4ly/nxlHy5HzD6YRrHydtlheGvGRJDhiWqqVik4= github.com/hashicorp/terraform-plugin-testing v1.4.0 h1:DVIXxw7VHZvnwWVik4HzhpC2yytaJ5FpiHxz5debKmE= @@ -111,8 +112,8 @@ github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv2 github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= -github.com/iancoleman/strcase v0.2.0 h1:05I4QRnGpI0m37iZQRuskXh+w77mr6Z41lwQzuHLwW0= -github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/iancoleman/strcase v0.3.0 h1:nTXanmYxhfFAMjZL34Ov6gkzEsSJZ5DbhxWjvSASxEI= +github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/jbenet/go-context v0.0.0-20150711004518-d14ea06fba99 h1:BQSFePA1RWJOlocH6Fxy8MmwDt+yVQYULKfN0RoTN8A= github.com/jedib0t/go-pretty/v6 v6.0.4 h1:7WaHUeKo5yc2vABlsh30p4VWxQoXaWktBY/nR/2qnPg= @@ -122,13 +123,12 @@ github.com/jinzhu/copier v0.3.2 h1:QdBOCbaouLDYaIPFfi1bKv5F5tPpeTwXe4sD0jqtz5w= github.com/jinzhu/copier v0.3.2/go.mod h1:24xnZezI2Yqac9J61UC6/dG/k76ttpq0DdJI3QmUvro= github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= github.com/jpillora/backoff v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgbbvHEiQClaW2NsSzMyGHqN+rDFqY705q49KG0= -github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= -github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs= github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -136,13 +136,16 @@ github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0 github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-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.5/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.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= @@ -158,7 +161,6 @@ github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyua github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= @@ -171,25 +173,29 @@ github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6J github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rogpeppe/fastuuid v1.1.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= github.com/skeema/knownhosts v1.1.0 h1:Wvr9V0MxhjRbl3f9nMnKnFfiWTJmtECJ9Njkea3ysW0= -github.com/smartystreets/assertions v1.0.0 h1:UVQPSSmc3qtTi+zPPkCXvZX9VvW/xT/NsRvKfwY81a8= github.com/smartystreets/assertions v1.0.0/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= -github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s= github.com/smartystreets/gunit v1.0.0/go.mod h1:qwPWnhz6pn0NnRBP++URONOVyNkPyr4SauJk4cUOwJs= -github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= -github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1 h1:2vfRuCMp5sSVIDSqO8oNnWJq7mPa6KVP3iPIwFBuy8A= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= +github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.2 h1:4jaiDzPyXQvSd7D0EjG45355tLlV3VOECpq10pLC+8s= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= +github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLDRpvE+3b7gP/C2YyLFYxNmcLnPTMe0= github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk= github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk= @@ -215,23 +221,22 @@ go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6m golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.11.0 h1:6Ewdq3tDic1mg5xRO4milcWCfMVQhI4NkqWWvqejpuA= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= -golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1 h1:k/i9J1pBpvlfR+9QsetwPyERsqu1GIbi967PQMq3Ivc= golang.org/x/exp v0.0.0-20230522175609-2e198f4a06a1/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= -golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= -golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.11.0 h1:Gi2tvZIJyBtO9SDr1q9h5hEQCp/4L2RQ+ar0qjx2oNU= -golang.org/x/net v0.11.0/go.mod h1:2L/ixqYpgIVXmeoSA/4Lu7BzTG4KIyPIryS4IsOd1oQ= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= -golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20180816055513-1c9583448a9c/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-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -245,16 +250,15 @@ golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBc 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-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0 h1:SqMFp9UcQJZa+pmYuAKjd9xq1f0j5rLcDIk0mj4qAsA= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -271,10 +275,11 @@ google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqw gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= -gopkg.in/ini.v1 v1.62.0 h1:duBzk771uxoUuOlyRLkHsygud9+5lrlGjdFBb4mSKDU= -gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.2 h1:wFXVbFY8DY5/xOe1ECiWdKCzZlxgshcYVNkBHstARME= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= diff --git a/pkg/akamai/akamai.go b/pkg/akamai/akamai.go index 682a3bbed..003e0fdb8 100644 --- a/pkg/akamai/akamai.go +++ b/pkg/akamai/akamai.go @@ -17,5 +17,6 @@ const ( ) func userAgent(terraformVersion string) string { - return fmt.Sprintf("Terraform/%s (+https://www.terraform.io) %s/%s", terraformVersion, ProviderName, version.ProviderVersion) + return fmt.Sprintf("Terraform/%s (+https://www.terraform.io) %s/%s", terraformVersion, + ProviderName, version.ProviderVersion) } diff --git a/pkg/akamai/dummy_provider_test.go b/pkg/akamai/akamai_test.go similarity index 84% rename from pkg/akamai/dummy_provider_test.go rename to pkg/akamai/akamai_test.go index de454f069..eba9f54c5 100644 --- a/pkg/akamai/dummy_provider_test.go +++ b/pkg/akamai/akamai_test.go @@ -2,7 +2,10 @@ package akamai_test import ( "context" + "os" + "testing" + "github.com/akamai/terraform-provider-akamai/v5/pkg/akamai" "github.com/akamai/terraform-provider-akamai/v5/pkg/subprovider" "github.com/hashicorp/terraform-plugin-framework/datasource" "github.com/hashicorp/terraform-plugin-framework/datasource/schema" @@ -10,6 +13,19 @@ import ( "github.com/hashicorp/terraform-plugin-framework/types" ) +func TestMain(m *testing.M) { + const testDefaultEdgercPath = "./testdata/edgerc" + + oldConfigFilePath := akamai.DefaultConfigFilePath + akamai.DefaultConfigFilePath = testDefaultEdgercPath + + exitCode := m.Run() + + akamai.DefaultConfigFilePath = oldConfigFilePath + + os.Exit(exitCode) +} + // dummy subprovider has only one datasource: "akamai_dummy" // that itself does nothing and is used only for test purposes // to trigger provider configuration diff --git a/pkg/akamai/edgegrid.go b/pkg/akamai/edgegrid.go index dd9bc414b..a7c5c69eb 100644 --- a/pkg/akamai/edgegrid.go +++ b/pkg/akamai/edgegrid.go @@ -10,7 +10,8 @@ import ( // ErrWrongEdgeGridConfiguration is returned when the configuration could not be read var ErrWrongEdgeGridConfiguration = errors.New("error reading Akamai EdgeGrid configuration") -var defaultConfigFile = edgegrid.DefaultConfigFile +// DefaultConfigFilePath is the default path for edgerc config file +var DefaultConfigFilePath = edgegrid.DefaultConfigFile type configBearer struct { accessToken string @@ -84,7 +85,7 @@ func validateEdgerc(edgerc *edgegrid.Config) (*edgegrid.Config, error) { func edgercPathOrDefault(path string) string { if path == "" { - return defaultConfigFile + return DefaultConfigFilePath } return path } diff --git a/pkg/akamai/edgegrid_test.go b/pkg/akamai/edgegrid_test.go index 88fa5d8bf..4837e6a9a 100644 --- a/pkg/akamai/edgegrid_test.go +++ b/pkg/akamai/edgegrid_test.go @@ -27,11 +27,6 @@ func TestNewEdgegridConfig(t *testing.T) { clientSecret: clientSecret, } - defer func(oldDefault string) { - defaultConfigFile = oldDefault - }(defaultConfigFile) - defaultConfigFile = edgercPath - t.Run("env is prioritized over config", func(t *testing.T) { t.Setenv("AKAMAI_HOST", envHost) t.Setenv("AKAMAI_ACCESS_TOKEN", accessToken) @@ -118,7 +113,7 @@ func TestEdgercPathOrDefault(t *testing.T) { path := "testdata/edgerc" assert.Equal(t, path, edgercPathOrDefault(path)) - assert.Equal(t, defaultConfigFile, edgercPathOrDefault("")) + assert.Equal(t, DefaultConfigFilePath, edgercPathOrDefault("")) } func TestEdgercSectionOrDefault(t *testing.T) { diff --git a/pkg/akamai/framework_provider_test.go b/pkg/akamai/framework_provider_test.go index 7cd39711c..9e9562c35 100644 --- a/pkg/akamai/framework_provider_test.go +++ b/pkg/akamai/framework_provider_test.go @@ -69,23 +69,21 @@ func TestFramework_ConfigureCache_EnabledInContext(t *testing.T) { func TestFramework_ConfigureEdgercInContext(t *testing.T) { tests := map[string]struct { - key string - value string + edgerc string + configSection string expectedError *regexp.Regexp }{ - "file with EdgeGrid configuration does not exist": { - key: "edgerc", - value: "not_existing_file_path", + "edgerc file does not exist": { + edgerc: "not_existing_file_path", expectedError: regexp.MustCompile("error reading Akamai EdgeGrid configuration: loading config file: open not_existing_file_path: no such file or directory"), }, "config section does not exist": { - key: "config_section", - value: "not_existing_config_section", + configSection: "not_existing_config_section", expectedError: regexp.MustCompile("error reading Akamai EdgeGrid configuration: provided config section does not exist: section \"not_existing_config_section\" does not exist"), }, - "with empty edgerc path, default path is used": { - key: "edgerc", - value: "", + "uses defaults with empty edgerc and config_section": { + edgerc: "", + configSection: "", expectedError: nil, }, } @@ -100,10 +98,11 @@ func TestFramework_ConfigureEdgercInContext(t *testing.T) { ExpectError: testcase.expectedError, Config: fmt.Sprintf(` provider "akamai" { - %v = "%v" + edgerc = "%v" + config_section = "%v" } data "akamai_dummy" "test" {} - `, testcase.key, testcase.value), + `, testcase.edgerc, testcase.configSection), }, }, }) @@ -112,7 +111,6 @@ func TestFramework_ConfigureEdgercInContext(t *testing.T) { } func TestFramework_EdgercValidate(t *testing.T) { - tests := map[string]struct { expectedError *regexp.Regexp configSection string diff --git a/pkg/akamai/plugin_provider_test.go b/pkg/akamai/plugin_provider_test.go index 8ea779c7a..fdc9e6194 100644 --- a/pkg/akamai/plugin_provider_test.go +++ b/pkg/akamai/plugin_provider_test.go @@ -43,10 +43,9 @@ func TestConfigureCache_EnabledInContext(t *testing.T) { for name, test := range tests { ctx := context.Background() t.Run(name, func(t *testing.T) { - prov := akamai.NewPluginProvider() _, diagnostics := prov().ConfigureContextFunc(ctx, test.resourceLocalData) - require.False(t, diagnostics.HasError()) + require.False(t, diagnostics.HasError(), fmt.Sprintf("unexpected error in diagnostics: %v", diagnostics)) assert.Equal(t, test.expectedCacheEnabledState, cache.IsEnabled()) }) @@ -69,7 +68,7 @@ func TestConfigureEdgercInContext(t *testing.T) { expectedDiagnostics: diag.Errorf("%s: %s: %s", akamai.ErrWrongEdgeGridConfiguration, edgegrid.ErrSectionDoesNotExist, "section \"not_existing_config_section\" does not exist"), withError: true, }, - "with empty edgerc path, default path is used": { + "uses defaults with empty edgerc and config_section": { resourceLocalData: getResourceLocalData(t, "edgerc", ""), expectedDiagnostics: diag.Diagnostics(nil), withError: false, diff --git a/pkg/common/framework/modifiers/prevent_string_update.go b/pkg/common/framework/modifiers/prevent_string_update.go deleted file mode 100644 index 22d423171..000000000 --- a/pkg/common/framework/modifiers/prevent_string_update.go +++ /dev/null @@ -1,37 +0,0 @@ -package modifiers - -import ( - "context" - "fmt" - - "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" -) - -// PreventStringUpdate returns a plan modifier that ensures given field cannot be updated after creation. -func PreventStringUpdate() planmodifier.String { - return preventStringUpdateModifier{} -} - -// preventStringUpdateModifier implements the plan modifier. -type preventStringUpdateModifier struct{} - -// Description returns a human-readable description of the plan modifier. -func (m preventStringUpdateModifier) Description(_ context.Context) string { - return "Use if you want to ensure that no update " + - "is available for given field." -} - -// MarkdownDescription returns a markdown description of the plan modifier. -func (m preventStringUpdateModifier) MarkdownDescription(ctx context.Context) string { - return m.Description(ctx) -} - -// PlanModifyString implements the plan modification logic. -func (m preventStringUpdateModifier) PlanModifyString(_ context.Context, req planmodifier.StringRequest, resp *planmodifier.StringResponse) { - if req.StateValue.IsNull() { - return - } - if req.PlanValue != req.StateValue { - resp.Diagnostics.AddError("Update not Supported", fmt.Sprintf("updating field `%s` is not possible", req.Path.String())) - } -} diff --git a/pkg/common/tf/raw_config.go b/pkg/common/tf/raw_config.go index 16b78fa45..148b4ff29 100644 --- a/pkg/common/tf/raw_config.go +++ b/pkg/common/tf/raw_config.go @@ -103,17 +103,18 @@ func (rc RawConfig) transformMap(val cty.Value) (any, bool) { } func (rc RawConfig) transformSlice(val cty.Value) (any, bool) { - vals := val.AsValueSlice() - if vals == nil { - return nil, true - } - slc := make([]any, 0) - for _, v := range vals { + slc := make([]any, 0, val.LengthInt()) + for it := val.ElementIterator(); it.Next(); { + _, v := it.Element() if v, ok := rc.transform(v); ok { slc = append(slc, v) } else { return nil, ok } } + if val.LengthInt() == 0 && val.Type().ListElementType().IsObjectType() { + return nil, true + } + return slc, true } diff --git a/pkg/providers/clientlists/testData/TestResActivation/activation_create.tf b/pkg/providers/clientlists/testData/TestResActivation/activation_create.tf index b053b473f..822860d64 100644 --- a/pkg/providers/clientlists/testData/TestResActivation/activation_create.tf +++ b/pkg/providers/clientlists/testData/TestResActivation/activation_create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_activation" "activation_ASN_LIST_1" { list_id = "12_AB" version = 2 diff --git a/pkg/providers/clientlists/testData/TestResActivation/activation_missing_param.tf b/pkg/providers/clientlists/testData/TestResActivation/activation_missing_param.tf index 8748f316c..62712dce8 100644 --- a/pkg/providers/clientlists/testData/TestResActivation/activation_missing_param.tf +++ b/pkg/providers/clientlists/testData/TestResActivation/activation_missing_param.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_activation" "activation_ASN_LIST_1" { version = 2 network = "STAGING" diff --git a/pkg/providers/clientlists/testData/TestResActivation/activation_update.tf b/pkg/providers/clientlists/testData/TestResActivation/activation_update.tf index f3262f1bc..66f37a584 100644 --- a/pkg/providers/clientlists/testData/TestResActivation/activation_update.tf +++ b/pkg/providers/clientlists/testData/TestResActivation/activation_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_activation" "activation_ASN_LIST_1" { list_id = "12_AB" version = 3 diff --git a/pkg/providers/clientlists/testData/TestResActivation/activation_update_comments_suppressed.tf b/pkg/providers/clientlists/testData/TestResActivation/activation_update_comments_suppressed.tf index 07014f2d7..9c8e78a72 100644 --- a/pkg/providers/clientlists/testData/TestResActivation/activation_update_comments_suppressed.tf +++ b/pkg/providers/clientlists/testData/TestResActivation/activation_update_comments_suppressed.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_activation" "activation_ASN_LIST_1" { list_id = "12_AB" version = 2 diff --git a/pkg/providers/clientlists/testData/TestResActivation/activation_update_siebelTicketId.tf b/pkg/providers/clientlists/testData/TestResActivation/activation_update_siebelTicketId.tf index 18b128450..943888ac3 100644 --- a/pkg/providers/clientlists/testData/TestResActivation/activation_update_siebelTicketId.tf +++ b/pkg/providers/clientlists/testData/TestResActivation/activation_update_siebelTicketId.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_activation" "activation_ASN_LIST_1" { list_id = "12_AB" version = 2 diff --git a/pkg/providers/clientlists/testData/TestResActivation/activation_update_version_only.tf b/pkg/providers/clientlists/testData/TestResActivation/activation_update_version_only.tf index bf09e5cf7..366bd43a0 100644 --- a/pkg/providers/clientlists/testData/TestResActivation/activation_update_version_only.tf +++ b/pkg/providers/clientlists/testData/TestResActivation/activation_update_version_only.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_activation" "activation_ASN_LIST_1" { list_id = "12_AB" version = 3 diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_and_duplicate_items_create.tf b/pkg/providers/clientlists/testData/TestResClientList/list_and_duplicate_items_create.tf index da607f3b8..fb0ed14e3 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_and_duplicate_items_create.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_and_duplicate_items_create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create.tf b/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create.tf index b1b33a99f..223c0ec7c 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create_one_item.tf b/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create_one_item.tf index 4da2eb579..0a0115318 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create_one_item.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_and_items_create_one_item.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_and_items_update.tf b/pkg/providers/clientlists/testData/TestResClientList/list_and_items_update.tf index c71d124ea..9ae6383a0 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_and_items_update.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_and_items_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name Updated" tags = ["a", "c", "d"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_create.tf b/pkg/providers/clientlists/testData/TestResClientList/list_create.tf index a065cfd17..505bd9112 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_create.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_create_empty_tags.tf b/pkg/providers/clientlists/testData/TestResClientList/list_create_empty_tags.tf index b63b42623..aaa793e1c 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_create_empty_tags.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_create_empty_tags.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = [] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_items_only_update.tf b/pkg/providers/clientlists/testData/TestResClientList/list_items_only_update.tf index 9731fa2f8..7e918f423 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_items_only_update.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_items_only_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_items_update_compute_version.tf b/pkg/providers/clientlists/testData/TestResClientList/list_items_update_compute_version.tf index 99051123b..f976e1a21 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_items_update_compute_version.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_items_update_compute_version.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_items_update_not_compute_version.tf b/pkg/providers/clientlists/testData/TestResClientList/list_items_update_not_compute_version.tf index 04792b598..e3443a849 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_items_update_not_compute_version.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_items_update_not_compute_version.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" tags = ["a", "b"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_update.tf b/pkg/providers/clientlists/testData/TestResClientList/list_update.tf index cf0a11993..1addc2b33 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_update.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name Updated" tags = ["a", "c", "d"] diff --git a/pkg/providers/clientlists/testData/TestResClientList/list_update_remove_tags.tf b/pkg/providers/clientlists/testData/TestResClientList/list_update_remove_tags.tf index 5220d6b50..29eea7eaa 100644 --- a/pkg/providers/clientlists/testData/TestResClientList/list_update_remove_tags.tf +++ b/pkg/providers/clientlists/testData/TestResClientList/list_update_remove_tags.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_clientlist_list" "test_list" { name = "List Name" notes = "List Notes" diff --git a/pkg/providers/cloudlets/testdata/TestDataCloudletsApplicationLoadBalancer/application_load_balancer_version.tf b/pkg/providers/cloudlets/testdata/TestDataCloudletsApplicationLoadBalancer/application_load_balancer_version.tf index ee12cff56..84e417b14 100644 --- a/pkg/providers/cloudlets/testdata/TestDataCloudletsApplicationLoadBalancer/application_load_balancer_version.tf +++ b/pkg/providers/cloudlets/testdata/TestDataCloudletsApplicationLoadBalancer/application_load_balancer_version.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudlets_application_load_balancer" "test" { origin_id = "alb_test_krk_dc1" version = 10 diff --git a/pkg/providers/cloudwrapper/data_akamai_cloudwrapper_capacities_test.go b/pkg/providers/cloudwrapper/data_akamai_cloudwrapper_capacities_test.go index 7d133af66..c65087b21 100644 --- a/pkg/providers/cloudwrapper/data_akamai_cloudwrapper_capacities_test.go +++ b/pkg/providers/cloudwrapper/data_akamai_cloudwrapper_capacities_test.go @@ -156,6 +156,10 @@ func dataCloudWrapperCapacityConfig(contracts []string) string { } return fmt.Sprintf(` +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_capacities" "test" { contract_ids = [%s] }`, contractIDs) diff --git a/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration.go b/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration.go index 5913c23d6..42d22e082 100644 --- a/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration.go +++ b/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration.go @@ -103,9 +103,6 @@ func (r *ConfigurationResource) Schema(ctx context.Context, _ resource.SchemaReq Validators: []validator.String{ stringvalidator.LengthAtLeast(1), }, - PlanModifiers: []planmodifier.String{ - modifiers.PreventStringUpdate(), - }, }, "retain_idle_objects": schema.BoolAttribute{ Optional: true, diff --git a/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration_test.go b/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration_test.go index 152c6f14e..c891d939d 100644 --- a/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration_test.go +++ b/pkg/providers/cloudwrapper/resource_akamai_cloudwrapper_configuration_test.go @@ -605,82 +605,6 @@ func TestConfigurationResource(t *testing.T) { }, }) }) - t.Run("update comments - expect an error", func(t *testing.T) { - t.Parallel() - client := &cloudwrapper.Mock{} - - configuration := cloudwrapper.CreateConfigurationRequest{ - Body: cloudwrapper.CreateConfigurationBody{ - Comments: "test", - ContractID: "ctr_123", - Locations: []cloudwrapper.ConfigLocationReq{ - { - Comments: "test", - TrafficTypeID: 1, - Capacity: cloudwrapper.Capacity{ - Value: 1, - Unit: cloudwrapper.UnitGB, - }, - }, - }, - NotificationEmails: []string{"test@akamai.com"}, - ConfigName: "testname", - PropertyIDs: []string{"200200200"}, - RetainIdleObjects: false, - }, - } - - expecter := newExpecter(t, client) - - expecter.ExpectCreate(configuration) - - expecter.ExpectRefresh() - - configUpdate := cloudwrapper.UpdateConfigurationRequest{ - ConfigID: expecter.config.ConfigID, - Body: cloudwrapper.UpdateConfigurationBody{ - Comments: "test-updated", - Locations: []cloudwrapper.ConfigLocationReq{ - { - Comments: "test", - TrafficTypeID: 1, - Capacity: cloudwrapper.Capacity{ - Value: 1, - Unit: cloudwrapper.UnitGB, - }, - }, - }, - NotificationEmails: []string{"test@akamai.com"}, - PropertyIDs: []string{"200200200"}, - RetainIdleObjects: false, - }, - } - - expecter.ExpectRefresh() - expecter.ExpectUpdate(configUpdate) - - expecter.ExpectRefresh() - expecter.ExpectDelete() - - resource.Test(t, resource.TestCase{ - IsUnitTest: true, - ProtoV5ProviderFactories: newProviderFactory(withMockClient(client)), - Steps: []resource.TestStep{ - { - Config: testutils.LoadFixtureString(t, "testdata/TestResConfiguration/create.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("akamai_cloudwrapper_configuration.test", "id", "123"), - resource.TestCheckResourceAttr("akamai_cloudwrapper_configuration.test", "config_name", "testname"), - resource.TestCheckResourceAttr("akamai_cloudwrapper_configuration.test", "contract_id", "ctr_123"), - ), - }, - { - Config: testutils.LoadFixtureString(t, "testdata/TestResConfiguration/update_comments_error.tf"), - ExpectError: regexp.MustCompile("updating field `comments` is not possible"), - }, - }, - }) - }) t.Run("drift - config got removed", func(t *testing.T) { t.Parallel() client := &cloudwrapper.Mock{} diff --git a/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/default.tf b/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/default.tf index 5c74f6886..b91562c57 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/default.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/default.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_configuration" "test" { id = 1 } \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/no_config_id.tf b/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/no_config_id.tf index afb78fab1..143be10fc 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/no_config_id.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataConfiguration/no_config_id.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_configuration" "test" {} \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestDataConfigurations/default.tf b/pkg/providers/cloudwrapper/testdata/TestDataConfigurations/default.tf index 87232418b..0cd5a2f01 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataConfigurations/default.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataConfigurations/default.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_configurations" "test" {} \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestDataLocation/invalid_type.tf b/pkg/providers/cloudwrapper/testdata/TestDataLocation/invalid_type.tf index 928595db1..f27072d8a 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataLocation/invalid_type.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataLocation/invalid_type.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_location" "test" { location_name = "US West" traffic_type = "TEST" diff --git a/pkg/providers/cloudwrapper/testdata/TestDataLocation/location.tf b/pkg/providers/cloudwrapper/testdata/TestDataLocation/location.tf index bc4688ac5..e52614629 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataLocation/location.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataLocation/location.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_location" "test" { location_name = "US West" traffic_type = "LIVE_VOD" diff --git a/pkg/providers/cloudwrapper/testdata/TestDataLocation/no_location.tf b/pkg/providers/cloudwrapper/testdata/TestDataLocation/no_location.tf index acc2acafd..49ccc8dc7 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataLocation/no_location.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataLocation/no_location.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_location" "test" { location_name = "US West" traffic_type = "WEB_ENHANCED_TLS" diff --git a/pkg/providers/cloudwrapper/testdata/TestDataLocations/location.tf b/pkg/providers/cloudwrapper/testdata/TestDataLocations/location.tf index 8b6b0151f..f221f002c 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataLocations/location.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataLocations/location.tf @@ -1,2 +1,5 @@ -data "akamai_cloudwrapper_locations" "test" { -} \ No newline at end of file +provider "akamai" { + edgerc = "../../test/edgerc" +} + +data "akamai_cloudwrapper_locations" "test" {} \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_false.tf b/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_false.tf index 8ff85f3f7..1f2918c25 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_false.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_false.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_properties" "test" { unused = false contract_ids = ["ctr_1", "ctr_2"] diff --git a/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_true.tf b/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_true.tf index 7ffe42f9b..b7d59d145 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_true.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataProperties/default_unused_true.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_properties" "test" { unused = true } \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestDataProperties/missing_contract_ids.tf b/pkg/providers/cloudwrapper/testdata/TestDataProperties/missing_contract_ids.tf index ab6d35996..bb353c081 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataProperties/missing_contract_ids.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataProperties/missing_contract_ids.tf @@ -1,2 +1,5 @@ -data "akamai_cloudwrapper_properties" "test" { -} \ No newline at end of file +provider "akamai" { + edgerc = "../../test/edgerc" +} + +data "akamai_cloudwrapper_properties" "test" {} \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestDataProperties/no_attributes.tf b/pkg/providers/cloudwrapper/testdata/TestDataProperties/no_attributes.tf index 1f4802833..bb353c081 100644 --- a/pkg/providers/cloudwrapper/testdata/TestDataProperties/no_attributes.tf +++ b/pkg/providers/cloudwrapper/testdata/TestDataProperties/no_attributes.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cloudwrapper_properties" "test" {} \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestResActivation/create.tf b/pkg/providers/cloudwrapper/testdata/TestResActivation/create.tf index f684bcd6b..48c75b4e0 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResActivation/create.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResActivation/create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_activation" "act" { config_id = 123 revision = "5fe7963eb7270e69c5e8" diff --git a/pkg/providers/cloudwrapper/testdata/TestResActivation/create_missing_required.tf b/pkg/providers/cloudwrapper/testdata/TestResActivation/create_missing_required.tf index 2dd7538e1..965e444b9 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResActivation/create_missing_required.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResActivation/create_missing_required.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_activation" "act" { config_id = 123 } \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestResActivation/create_timeout.tf b/pkg/providers/cloudwrapper/testdata/TestResActivation/create_timeout.tf index 78688c8fd..d2685072d 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResActivation/create_timeout.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResActivation/create_timeout.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_activation" "act" { config_id = 123 revision = "5fe7963eb7270e69c5e8" diff --git a/pkg/providers/cloudwrapper/testdata/TestResActivation/update.tf b/pkg/providers/cloudwrapper/testdata/TestResActivation/update.tf index 7ddd0ccb7..9758f0701 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResActivation/update.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResActivation/update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_activation" "act" { config_id = 123 revision = "8b92934d68d69621153c" diff --git a/pkg/providers/cloudwrapper/testdata/TestResActivation/update_forcenew.tf b/pkg/providers/cloudwrapper/testdata/TestResActivation/update_forcenew.tf index ea080e6ac..a8cdfa00c 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResActivation/update_forcenew.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResActivation/update_forcenew.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_activation" "act" { config_id = 321 revision = "5fe7963eb7270e69c5e8" diff --git a/pkg/providers/cloudwrapper/testdata/TestResActivation/update_timeout.tf b/pkg/providers/cloudwrapper/testdata/TestResActivation/update_timeout.tf index 4a684dc0f..fdc71e493 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResActivation/update_timeout.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResActivation/update_timeout.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_activation" "act" { config_id = 123 revision = "8b92934d68d69621153c" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_email.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_email.tf index e6a80b27a..c1fd7a461 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_email.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_email.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_retain_idle_obj.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_retain_idle_obj.tf index dac94c6cf..d580b8169 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_retain_idle_obj.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/computed_retain_idle_obj.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/contract_id_no_prefix.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/contract_id_no_prefix.tf index f505cf9ca..60ebe6cc0 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/contract_id_no_prefix.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/contract_id_no_prefix.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/create.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/create.tf index 4508ad93f..9f346914a 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/create.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_capacity.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_capacity.tf index 9055c43bf..8dd5428bf 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_capacity.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_capacity.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location.tf index b04093d1b..a83f2b6b2 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location_comments.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location_comments.tf index 431cc2df4..b709c5ad1 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location_comments.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_location_comments.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_required.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_required.tf index 65e21901b..85371c44a 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_required.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/missing_required.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { location { capacity { diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/property_ids_with_prefix.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/property_ids_with_prefix.tf index 9a8ca48dc..fc1d3100b 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/property_ids_with_prefix.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/property_ids_with_prefix.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_alerts_threshold.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_alerts_threshold.tf index 2c73799dd..8df0de903 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_alerts_threshold.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_alerts_threshold.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_comments_error.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_comments_error.tf deleted file mode 100644 index 3d33236e0..000000000 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_comments_error.tf +++ /dev/null @@ -1,16 +0,0 @@ -resource "akamai_cloudwrapper_configuration" "test" { - config_name = "testname" - contract_id = "ctr_123" - property_ids = ["200200200"] - notification_emails = ["test@akamai.com"] - comments = "test-updated" - retain_idle_objects = false - location { - traffic_type_id = 1 - comments = "test" - capacity { - value = 1 - unit = "GB" - } - } -} \ No newline at end of file diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_config_name.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_config_name.tf index ab97180da..962aadec6 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_config_name.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_config_name.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "newname" contract_id = "ctr_123" diff --git a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_contract_id.tf b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_contract_id.tf index a545b731e..517f27ebf 100644 --- a/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_contract_id.tf +++ b/pkg/providers/cloudwrapper/testdata/TestResConfiguration/update_contract_id.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_cloudwrapper_configuration" "test" { config_name = "testname" contract_id = "ctr_234" diff --git a/pkg/providers/cps/testdata/TestDataCPSCSR/default.tf b/pkg/providers/cps/testdata/TestDataCPSCSR/default.tf index 8206a0686..e48b2a6a5 100644 --- a/pkg/providers/cps/testdata/TestDataCPSCSR/default.tf +++ b/pkg/providers/cps/testdata/TestDataCPSCSR/default.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_csr" "test" { enrollment_id = 2 } \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataCPSCSR/no_algorithms.tf b/pkg/providers/cps/testdata/TestDataCPSCSR/no_algorithms.tf index c4c3adffd..f2f3a1264 100644 --- a/pkg/providers/cps/testdata/TestDataCPSCSR/no_algorithms.tf +++ b/pkg/providers/cps/testdata/TestDataCPSCSR/no_algorithms.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_csr" "test" { enrollment_id = 1 } \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataCPSCSR/no_enrollment_id.tf b/pkg/providers/cps/testdata/TestDataCPSCSR/no_enrollment_id.tf index f18f09d27..2a101ea6b 100644 --- a/pkg/providers/cps/testdata/TestDataCPSCSR/no_enrollment_id.tf +++ b/pkg/providers/cps/testdata/TestDataCPSCSR/no_enrollment_id.tf @@ -1,3 +1,5 @@ -data "akamai_cps_csr" "test" { +provider "akamai" { + edgerc = "../../test/edgerc" +} -} \ No newline at end of file +data "akamai_cps_csr" "test" {} \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataDeployments/deployments.tf b/pkg/providers/cps/testdata/TestDataDeployments/deployments.tf index c38c09846..e125a7203 100644 --- a/pkg/providers/cps/testdata/TestDataDeployments/deployments.tf +++ b/pkg/providers/cps/testdata/TestDataDeployments/deployments.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_deployments" "test" { enrollment_id = 123 } \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_challenges.tf b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_challenges.tf index 878347069..fcddc375a 100644 --- a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_challenges.tf +++ b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_challenges.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_enrollment" "test" { enrollment_id = 2 } \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_ev_challenges.tf b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_ev_challenges.tf index 792f775ff..eddc619f4 100644 --- a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_ev_challenges.tf +++ b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_ev_challenges.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_enrollment" "test" { enrollment_id = 4 } \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_third_party_challenges.tf b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_third_party_challenges.tf index 26f11591f..fb39a786c 100644 --- a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_third_party_challenges.tf +++ b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_with_third_party_challenges.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_enrollment" "test" { enrollment_id = 3 } \ No newline at end of file diff --git a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_without_challenges.tf b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_without_challenges.tf index cd09fdc33..aab49e7c3 100644 --- a/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_without_challenges.tf +++ b/pkg/providers/cps/testdata/TestDataEnrollment/enrollment_without_challenges.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_enrollment" "test" { enrollment_id = 1 } diff --git a/pkg/providers/cps/testdata/TestDataEnrollments/enrollments.tf b/pkg/providers/cps/testdata/TestDataEnrollments/enrollments.tf index 90bf39b58..ece924257 100644 --- a/pkg/providers/cps/testdata/TestDataEnrollments/enrollments.tf +++ b/pkg/providers/cps/testdata/TestDataEnrollments/enrollments.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_enrollments" "test" { contract_id = "testing" } diff --git a/pkg/providers/cps/testdata/TestDataWarnings/warnings.tf b/pkg/providers/cps/testdata/TestDataWarnings/warnings.tf index 92d61c1ad..c5328e355 100644 --- a/pkg/providers/cps/testdata/TestDataWarnings/warnings.tf +++ b/pkg/providers/cps/testdata/TestDataWarnings/warnings.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_cps_warnings" "test" {} diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/incorrect_network.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/incorrect_network.tf index 6d85f7788..44b503d10 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/incorrect_network.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/incorrect_network.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_group_items" "test" { namespace_name = "test_namespace" network = "incorrect_network" diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_group.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_group.tf index ad52d2855..10a8b522f 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_group.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_group.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_group_items" "test" { namespace_name = "test_namespace" network = "staging" diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_namespace_name.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_namespace_name.tf index 8f7606c10..3c49a6001 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_namespace_name.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_namespace_name.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_group_items" "test" { network = "staging" group_name = "TestGroup" diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_network.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_network.tf index 653052026..1cd2ee89a 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_network.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVGroupItems/missed_network.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_group_items" "test" { namespace_name = "test_namespace" group_name = "TestGroup" diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/incorrect_network.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/incorrect_network.tf index d6cb5a91f..6aafbfd67 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/incorrect_network.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/incorrect_network.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_groups" "test" { namespace_name = "test_namespace" network = "incorrect_network" diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_namespace_name.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_namespace_name.tf index 4ba9b1073..f84e43864 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_namespace_name.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_namespace_name.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_groups" "test" { network = "staging" } \ No newline at end of file diff --git a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_network.tf b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_network.tf index abe71462a..1ffe3bf02 100644 --- a/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_network.tf +++ b/pkg/providers/edgeworkers/testdata/TestDataEdgeKVNamespaceGroups/missed_network.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_edgekv_groups" "test" { namespace_name = "test_namespace" } \ No newline at end of file diff --git a/pkg/providers/gtm/resource_akamai_gtm_property.go b/pkg/providers/gtm/resource_akamai_gtm_property.go index 2215ef9ec..71fa35ca9 100644 --- a/pkg/providers/gtm/resource_akamai_gtm_property.go +++ b/pkg/providers/gtm/resource_akamai_gtm_property.go @@ -515,6 +515,10 @@ func resourceGTMv1PropertyRead(ctx context.Context, d *schema.ResourceData, m in return diag.FromErr(err) } prop, err := inst.Client(meta).GetProperty(ctx, property, domain) + if errors.Is(err, gtm.ErrNotFound) { + d.SetId("") + return nil + } if err != nil { logger.Errorf("Property Read failed: %s", err.Error()) return diag.Errorf("property Read failed: %s", err.Error()) diff --git a/pkg/providers/iam/testdata/TestDataContactTypes/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataContactTypes/fail_path/step0.tf index 36368979a..ae0898313 100644 --- a/pkg/providers/iam/testdata/TestDataContactTypes/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataContactTypes/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_contact_types" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataContactTypes/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataContactTypes/happy_path/step0.tf index 36368979a..ae0898313 100644 --- a/pkg/providers/iam/testdata/TestDataContactTypes/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataContactTypes/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_contact_types" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataCountries/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataCountries/fail_path/step0.tf index a6fc82574..f276223d4 100644 --- a/pkg/providers/iam/testdata/TestDataCountries/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataCountries/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_countries" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataCountries/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataCountries/happy_path/step0.tf index a6fc82574..f276223d4 100644 --- a/pkg/providers/iam/testdata/TestDataCountries/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataCountries/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_countries" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataGroups/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataGroups/fail_path/step0.tf index 90e61b20e..e5b7103df 100644 --- a/pkg/providers/iam/testdata/TestDataGroups/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataGroups/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_groups" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataGroups/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataGroups/happy_path/step0.tf index 90e61b20e..e5b7103df 100644 --- a/pkg/providers/iam/testdata/TestDataGroups/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataGroups/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_groups" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataNotificationProds/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataNotificationProds/happy_path/step0.tf index b010fa4ba..f1605a1dc 100644 --- a/pkg/providers/iam/testdata/TestDataNotificationProds/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataNotificationProds/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_notification_prods" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataRoles/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataRoles/fail_path/step0.tf index 111e45eab..269edfe9d 100644 --- a/pkg/providers/iam/testdata/TestDataRoles/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataRoles/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_roles" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataRoles/happy_path/no_args.tf b/pkg/providers/iam/testdata/TestDataRoles/happy_path/no_args.tf index 111e45eab..269edfe9d 100644 --- a/pkg/providers/iam/testdata/TestDataRoles/happy_path/no_args.tf +++ b/pkg/providers/iam/testdata/TestDataRoles/happy_path/no_args.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_roles" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataStates/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataStates/fail_path/step0.tf index 0ecce3af7..5f6e9be36 100644 --- a/pkg/providers/iam/testdata/TestDataStates/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataStates/fail_path/step0.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_states" "test" { country = "test country" } diff --git a/pkg/providers/iam/testdata/TestDataStates/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataStates/happy_path/step0.tf index 0ecce3af7..5f6e9be36 100644 --- a/pkg/providers/iam/testdata/TestDataStates/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataStates/happy_path/step0.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_states" "test" { country = "test country" } diff --git a/pkg/providers/iam/testdata/TestDataSupportedLangs/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataSupportedLangs/fail_path/step0.tf index fda26a736..26156b6e2 100644 --- a/pkg/providers/iam/testdata/TestDataSupportedLangs/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataSupportedLangs/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_supported_langs" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataSupportedLangs/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataSupportedLangs/happy_path/step0.tf index fda26a736..26156b6e2 100644 --- a/pkg/providers/iam/testdata/TestDataSupportedLangs/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataSupportedLangs/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_supported_langs" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataTimeoutPolicies/fail_path/step0.tf b/pkg/providers/iam/testdata/TestDataTimeoutPolicies/fail_path/step0.tf index ff30a7a6e..7161f67b2 100644 --- a/pkg/providers/iam/testdata/TestDataTimeoutPolicies/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataTimeoutPolicies/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_timeout_policies" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataTimeoutPolicies/happy_path/step0.tf b/pkg/providers/iam/testdata/TestDataTimeoutPolicies/happy_path/step0.tf index ff30a7a6e..7161f67b2 100644 --- a/pkg/providers/iam/testdata/TestDataTimeoutPolicies/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestDataTimeoutPolicies/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_timeout_policies" "test" {} diff --git a/pkg/providers/iam/testdata/TestDataTimezones/timezones.tf b/pkg/providers/iam/testdata/TestDataTimezones/timezones.tf index dcd34eab9..e4aab68b1 100644 --- a/pkg/providers/iam/testdata/TestDataTimezones/timezones.tf +++ b/pkg/providers/iam/testdata/TestDataTimezones/timezones.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_timezones" "test" {} \ No newline at end of file diff --git a/pkg/providers/iam/testdata/TestGrantableRoles/fail_path/step0.tf b/pkg/providers/iam/testdata/TestGrantableRoles/fail_path/step0.tf index e16075e01..10098ff80 100644 --- a/pkg/providers/iam/testdata/TestGrantableRoles/fail_path/step0.tf +++ b/pkg/providers/iam/testdata/TestGrantableRoles/fail_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_grantable_roles" "test" {} diff --git a/pkg/providers/iam/testdata/TestGrantableRoles/happy_path/step0.tf b/pkg/providers/iam/testdata/TestGrantableRoles/happy_path/step0.tf index e16075e01..10098ff80 100644 --- a/pkg/providers/iam/testdata/TestGrantableRoles/happy_path/step0.tf +++ b/pkg/providers/iam/testdata/TestGrantableRoles/happy_path/step0.tf @@ -1 +1,5 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + data "akamai_iam_grantable_roles" "test" {} diff --git a/pkg/providers/iam/testdata/TestResGroup/basic/basic.tf b/pkg/providers/iam/testdata/TestResGroup/basic/basic.tf index d179cda35..9c251da81 100644 --- a/pkg/providers/iam/testdata/TestResGroup/basic/basic.tf +++ b/pkg/providers/iam/testdata/TestResGroup/basic/basic.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_group" "test" { parent_group_id = 1 name = "test" diff --git a/pkg/providers/iam/testdata/TestResGroup/update/update.tf b/pkg/providers/iam/testdata/TestResGroup/update/update.tf index 9c56b2b1e..2b4c2cc1e 100644 --- a/pkg/providers/iam/testdata/TestResGroup/update/update.tf +++ b/pkg/providers/iam/testdata/TestResGroup/update/update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_group" "test" { parent_group_id = 7 name = "another test" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with grants.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with grants.tf index a496ca093..7e07440b1 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with grants.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with grants.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications A.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications A.tf index a496ca093..7e07440b1 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications A.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications A.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications B.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications B.tf index a496ca093..7e07440b1 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications B.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications B.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C and grants.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C and grants.tf index a496ca093..7e07440b1 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C and grants.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C and grants.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C.tf index a496ca093..7e07440b1 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A with notifications C.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A.tf index a496ca093..7e07440b1 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-all basic info A.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-minimum basic info A.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-minimum basic info A.tf index 313c66ae4..30aecf0f6 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step00-minimum basic info A.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step00-minimum basic info A.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name A" last_name = "last name A" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step01.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step01.tf index a67e0e0fe..e9ce37918 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step01.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step01.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step02.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step02.tf index 17d8ca82d..cf7381e4f 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step02.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step02.tf @@ -1,4 +1,7 @@ -# all basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step03.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step03.tf index b0d9ac562..bfafe004b 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step03.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step03.tf @@ -1,4 +1,7 @@ -# all basic info B with notifications C and grants +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step04.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step04.tf index 052c70c6c..cf7381e4f 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step04.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step04.tf @@ -1,4 +1,7 @@ -# all basic info B with notifications B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step05.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step05.tf index 02e66d0ba..cf7381e4f 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step05.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step05.tf @@ -1,4 +1,7 @@ -# all basic info B with notifications A +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step06.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step06.tf index 17d8ca82d..cf7381e4f 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step06.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step06.tf @@ -1,4 +1,7 @@ -# all basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResUserLifecycle/step07.tf b/pkg/providers/iam/testdata/TestResUserLifecycle/step07.tf index 6c4a42226..b714fb9c0 100644 --- a/pkg/providers/iam/testdata/TestResUserLifecycle/step07.tf +++ b/pkg/providers/iam/testdata/TestResUserLifecycle/step07.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "first name B" last_name = "last name B" diff --git a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create-empty-properties.tf b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create-empty-properties.tf index bf2636ed6..f665c7250 100644 --- a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create-empty-properties.tf +++ b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create-empty-properties.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_blocked_user_properties" "test" { identity_id = "test_identity_id" group_id = 12345 diff --git a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create.tf b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create.tf index 7fe502e96..67a6e97f6 100644 --- a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create.tf +++ b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_blocked_user_properties" "test" { identity_id = "test_identity_id" group_id = 12345 diff --git a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update-group-id.tf b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update-group-id.tf index 3b905b0cc..cd2fb2e9b 100644 --- a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update-group-id.tf +++ b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update-group-id.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_blocked_user_properties" "test" { identity_id = "test_identity_id" group_id = 23456 diff --git a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update.tf b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update.tf index 6d4444730..25e2843c5 100644 --- a/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update.tf +++ b/pkg/providers/iam/testdata/TestResourceIAMBlockedUserProperties/update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_blocked_user_properties" "test" { identity_id = "test_identity_id" group_id = 12345 diff --git a/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_create.tf b/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_create.tf index 67951f379..6601e5a38 100644 --- a/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_create.tf +++ b/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_create.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_role" "role" { name = "role name" description = "role description" diff --git a/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_update.tf b/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_update.tf index 9d0ef080a..db5eedcda 100644 --- a/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_update.tf +++ b/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_role" "role" { name = "role name update" description = "role description update" diff --git a/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_with_reordered_granted_roles.tf b/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_with_reordered_granted_roles.tf index cb5b52ab7..7573463d3 100644 --- a/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_with_reordered_granted_roles.tf +++ b/pkg/providers/iam/testdata/TestResourceRoleLifecycle/role_with_reordered_granted_roles.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_role" "role" { name = "role name" description = "role description" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/auth_grants_interpolated.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/auth_grants_interpolated.tf index 4e3027818..0a5f863c9 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/auth_grants_interpolated.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/auth_grants_interpolated.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_auth_grants.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_auth_grants.tf index 598971f9a..4c9fbd885 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_auth_grants.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_auth_grants.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic.tf index 772192cbc..016f378f5 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants.tf index 997f9c564..de5f5b756 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants_swap.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants_swap.tf index 8a4098cd6..3925f2b1b 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants_swap.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_grants_swap.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_lock.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_lock.tf index cf27e08db..a7bf8897a 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_lock.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/create_basic_lock.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/invalid_auth_grants.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/invalid_auth_grants.tf index f5eb92f08..64ea229c0 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/invalid_auth_grants.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/invalid_auth_grants.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_auth_grants.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_auth_grants.tf index db9f2a267..f5622eadf 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_auth_grants.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_auth_grants.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_email.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_email.tf index 7f306db1f..7f4df34a0 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_email.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_email.tf @@ -1,4 +1,7 @@ -# minimum basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_user_info.tf b/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_user_info.tf index c8cb46da5..8d7400ccf 100644 --- a/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_user_info.tf +++ b/pkg/providers/iam/testdata/TestResourceUserLifecycle/update_user_info.tf @@ -1,4 +1,7 @@ -# all basic info B +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_iam_user" "test" { first_name = "John" last_name = "Smith" diff --git a/pkg/providers/imaging/testdata/TestDataPolicyImage/composite_post_policy/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyImage/composite_post_policy/policy.tf index f03af05f1..371383de4 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyImage/composite_post_policy/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyImage/composite_post_policy/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_breakpoints/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_breakpoints/policy.tf index 069004176..22ca8677f 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_breakpoints/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_breakpoints/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_policy/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_policy/policy.tf index f94444085..0a18e06c8 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_policy/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyImage/empty_policy/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyImage/imquery_transformation/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyImage/imquery_transformation/policy.tf index ee2f7b148..c956c9197 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyImage/imquery_transformation/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyImage/imquery_transformation/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyImage/policy_with_nested_transformations/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyImage/policy_with_nested_transformations/policy.tf index 161c7f8a0..a12a4940f 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyImage/policy_with_nested_transformations/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyImage/policy_with_nested_transformations/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyImage/regular_policy/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyImage/regular_policy/policy.tf index e78c4d325..73153b7ec 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyImage/regular_policy/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyImage/regular_policy/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyVideo/empty_policy/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyVideo/empty_policy/policy.tf index 998580666..7ebb7b27d 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyVideo/empty_policy/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyVideo/empty_policy/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_video" "policy" { diff --git a/pkg/providers/imaging/testdata/TestDataPolicyVideo/regular_policy/policy.tf b/pkg/providers/imaging/testdata/TestDataPolicyVideo/regular_policy/policy.tf index bc975d410..8a053b011 100644 --- a/pkg/providers/imaging/testdata/TestDataPolicyVideo/regular_policy/policy.tf +++ b/pkg/providers/imaging/testdata/TestDataPolicyVideo/regular_policy/policy.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_imaging_policy_video" "policy" { diff --git a/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_import/policy_create.tf b/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_import/policy_create.tf index 045c760c3..f2318d311 100644 --- a/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_import/policy_create.tf +++ b/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_import/policy_create.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } resource "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_create.tf b/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_create.tf index 407ea2c1c..8a1937c42 100644 --- a/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_create.tf +++ b/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_create.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } resource "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_update.tf b/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_update.tf index 1edbea213..ebd4b8760 100644 --- a/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_update.tf +++ b/pkg/providers/imaging/testdata/TestResPolicyImage/regular_policy_update_rollout_duration/policy_update.tf @@ -1,5 +1,5 @@ provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } resource "akamai_imaging_policy_image" "policy" { diff --git a/pkg/providers/networklists/data_akamai_network_network_lists.go b/pkg/providers/networklists/data_akamai_network_network_lists.go index 68d414b6c..001509c62 100644 --- a/pkg/providers/networklists/data_akamai_network_network_lists.go +++ b/pkg/providers/networklists/data_akamai_network_network_lists.go @@ -60,6 +60,11 @@ func dataSourceNetworkList() *schema.Resource { Elem: &schema.Schema{Type: schema.TypeString}, Computed: true, }, + "sync_point": { + Type: schema.TypeInt, + Computed: true, + Description: "Sync Point identifies each version of the network list, which increments each time it's modified", + }, }, } } @@ -101,6 +106,9 @@ func dataSourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m in if err := d.Set("contract_id", networkList.ContractID); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tf.ErrValueSet, err.Error())) } + if err := d.Set("sync_point", networkList.SyncPoint); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tf.ErrValueSet, err.Error())) + } jsonBody, err := json.MarshalIndent(networkList, "", " ") if err != nil { @@ -148,6 +156,10 @@ func dataSourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m in } if len(networkLists.NetworkLists) > 0 { d.SetId(networkLists.NetworkLists[0].UniqueID) + + if err := d.Set("sync_point", networkLists.NetworkLists[0].SyncPoint); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tf.ErrValueSet, err.Error())) + } } jsonBody, err := json.MarshalIndent(networkLists, "", " ") if err != nil { diff --git a/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go b/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go index 49d4492ce..88152196e 100644 --- a/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go +++ b/pkg/providers/networklists/data_akamai_networklist_network_lists_test.go @@ -67,6 +67,7 @@ func TestAccAkamaiNetworkList_data_by_uniqueID(t *testing.T) { resource.TestCheckResourceAttr("data.akamai_networklist_network_lists.test", "id", "86093_AGEOLIST"), resource.TestCheckResourceAttr("data.akamai_networklist_network_lists.test", "contract_id", "3-4168BG"), resource.TestCheckResourceAttr("data.akamai_networklist_network_lists.test", "group_id", "17240"), + resource.TestCheckResourceAttr("data.akamai_networklist_network_lists.test", "sync_point", "1"), ), }, }, diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list.go b/pkg/providers/networklists/resource_akamai_networklist_network_list.go index 8982baea1..cf1720369 100644 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list.go +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list.go @@ -85,14 +85,16 @@ func resourceNetworkList() *schema.Resource { Description: "sync point", }, "contract_id": { - Type: schema.TypeString, - Optional: true, - Description: "contract ID", + Type: schema.TypeString, + Optional: true, + DiffSuppressFunc: suppressDiffContractID, + Description: "contract ID", }, "group_id": { - Type: schema.TypeInt, - Optional: true, - Description: "group ID", + Type: schema.TypeInt, + Optional: true, + DiffSuppressFunc: suppressDiffGroupID, + Description: "group ID", }, }, } @@ -376,6 +378,14 @@ func resourceNetworkListRead(ctx context.Context, d *schema.ResourceData, m inte } } + if err := d.Set("contract_id", networklist.ContractID); err != nil { + return diag.Errorf("%s: %s", tf.ErrValueSet, err.Error()) + } + + if err := d.Set("group_id", networklist.GroupID); err != nil { + return diag.Errorf("%s: %s", tf.ErrValueSet, err.Error()) + } + if err := d.Set("description", networklist.Description); err != nil { return diag.Errorf("%s: %s", tf.ErrValueSet, err.Error()) } @@ -520,7 +530,7 @@ func verifyContractGroupUnchanged(_ context.Context, d *schema.ResourceDiff, m i oldContract, newContract := d.GetChange("contract_id") oldvalue := oldContract.(string) newvalue := newContract.(string) - if len(oldvalue) > 0 { + if len(oldvalue) > 0 && len(newvalue) > 0 { logger.Errorf("%s value %s specified in configuration differs from resource ID's value %s", "contract_id", newvalue, oldvalue) return fmt.Errorf("%s value %s specified in configuration differs from resource ID's value %s", "contract_id", newvalue, oldvalue) } @@ -530,7 +540,7 @@ func verifyContractGroupUnchanged(_ context.Context, d *schema.ResourceDiff, m i oldGroup, newGroup := d.GetChange("group_id") oldvalue := oldGroup.(int) newvalue := newGroup.(int) - if oldvalue > 0 { + if oldvalue > 0 && newvalue > 0 { logger.Errorf("%s value %d specified in configuration differs from resource ID's value %d", "group_id", newvalue, oldvalue) return fmt.Errorf("%s value %d specified in configuration differs from resource ID's value %d", "group_id", newvalue, oldvalue) } @@ -551,6 +561,44 @@ func markSyncPointComputedIfListModified(_ context.Context, d *schema.ResourceDi return nil } +// suppress the diff if contract id if state file has some value +// and if nothing is passed in terraform config +func suppressDiffContractID(_, _, _ string, d *schema.ResourceData) bool { + key := "contract_id" + + oldValue, newValue := d.GetChange(key) + oldContractID := oldValue.(string) + newContractID := newValue.(string) + if len(oldContractID) > 0 && len(newContractID) == 0 { + return false + } + + if len(oldContractID) == 0 && len(newContractID) > 0 { + return false + } + + return true +} + +// suppress the diff if contract id if state file has some value +// and if nothing is passed in terraform config +func suppressDiffGroupID(_, _, _ string, d *schema.ResourceData) bool { + key := "group_id" + + oldValue, newValue := d.GetChange(key) + oldGroupID := oldValue.(int) + newGroupID := newValue.(int) + if oldGroupID > 0 && newGroupID == 0 { + return false + } + + if oldGroupID == 0 && newGroupID > 0 { + return false + } + + return true +} + // Append Replace Remove mode flags const ( Append = "APPEND" diff --git a/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go b/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go index e3f0c244e..c9b15d0f4 100644 --- a/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go +++ b/pkg/providers/networklists/resource_akamai_networklist_network_list_test.go @@ -2,6 +2,7 @@ package networklists import ( "encoding/json" + "regexp" "testing" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/networklists" @@ -12,63 +13,64 @@ import ( ) func TestAccAkamaiNetworkList_res_basic(t *testing.T) { - t.Run("match by NetworkList ID", func(t *testing.T) { - client := &networklists.Mock{} - - createResponse := networklists.CreateNetworkListResponse{} - err := json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkList.json"), &createResponse) - require.NoError(t, err) - - crl := networklists.GetNetworkListsResponse{} - err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkLists.json"), &crl) - require.NoError(t, err) - - getResponse := networklists.GetNetworkListResponse{} - err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkList.json"), &getResponse) - require.NoError(t, err) - - updateResponse := networklists.UpdateNetworkListResponse{} - err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkListUpdated.json"), &updateResponse) - require.NoError(t, err) - - getResponseAfterUpdate := networklists.GetNetworkListResponse{} - err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkListUpdated.json"), &getResponseAfterUpdate) - require.NoError(t, err) - - cd := networklists.RemoveNetworkListResponse{} - err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/empty.json"), &cd) - require.NoError(t, err) - - client.On("CreateNetworkList", - mock.Anything, - networklists.CreateNetworkListRequest{Name: "Voyager Call Center Whitelist", Type: "IP", Description: "Notes about this network list", List: []string{"10.1.8.23", "10.3.5.67"}, ContractID: "C-1FRYVV3", GroupID: 64867}, - ).Return(&createResponse, nil) - - client.On("GetNetworkLists", - mock.Anything, - networklists.GetNetworkListsRequest{Name: "Voyager Call Center Whitelist", Type: "IP"}, - ).Return(&crl, nil) - - client.On("GetNetworkList", - mock.Anything, - networklists.GetNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, - ).Return(&getResponse, nil).Times(3) - - client.On("UpdateNetworkList", - mock.Anything, - networklists.UpdateNetworkListRequest{Name: "Voyager Call Center Whitelist", Type: "IP", Description: "New notes about this network list", SyncPoint: 0, List: []string{"10.1.8.23", "10.3.5.67"}, UniqueID: "2275_VOYAGERCALLCENTERWHITELI", ContractID: "C-1FRYVV3", GroupID: 64867}, - ).Return(&updateResponse, nil) - - client.On("GetNetworkList", - mock.Anything, - networklists.GetNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, - ).Return(&getResponseAfterUpdate, nil).Times(3) - - client.On("RemoveNetworkList", - mock.Anything, - networklists.RemoveNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, - ).Return(&cd, nil) + client := &networklists.Mock{} + + createResponse := networklists.CreateNetworkListResponse{} + err := json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkList.json"), &createResponse) + require.NoError(t, err) + + crl := networklists.GetNetworkListsResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkLists.json"), &crl) + require.NoError(t, err) + + getResponse := networklists.GetNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkList.json"), &getResponse) + require.NoError(t, err) + + updateResponse := networklists.UpdateNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkListUpdated.json"), &updateResponse) + require.NoError(t, err) + + getResponseAfterUpdate := networklists.GetNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkListUpdated.json"), &getResponseAfterUpdate) + require.NoError(t, err) + + cd := networklists.RemoveNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/empty.json"), &cd) + require.NoError(t, err) + + client.On("CreateNetworkList", + mock.Anything, + networklists.CreateNetworkListRequest{Name: "Voyager Call Center Whitelist", Type: "IP", Description: "Notes about this network list", List: []string{"10.1.8.23", "10.3.5.67"}}, + ).Return(&createResponse, nil) + + client.On("GetNetworkLists", + mock.Anything, + networklists.GetNetworkListsRequest{Name: "Voyager Call Center Whitelist", Type: "IP"}, + ).Return(&crl, nil) + + client.On("GetNetworkList", + mock.Anything, + networklists.GetNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, + ).Return(&getResponse, nil).Times(3) + + client.On("UpdateNetworkList", + mock.Anything, + networklists.UpdateNetworkListRequest{Name: "Voyager Call Center Whitelist", Type: "IP", Description: "New notes about this network list", SyncPoint: 0, List: []string{"10.1.8.23", "10.3.5.67"}, UniqueID: "2275_VOYAGERCALLCENTERWHITELI", ContractID: "C-1FRYVV3", GroupID: 64867}, + ).Return(&updateResponse, nil) + + client.On("GetNetworkList", + mock.Anything, + networklists.GetNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, + ).Return(&getResponseAfterUpdate, nil).Times(3) + + client.On("RemoveNetworkList", + mock.Anything, + networklists.RemoveNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, + ).Return(&cd, nil) + + t.Run("match by NetworkList ID", func(t *testing.T) { useClient(client, func() { resource.Test(t, resource.TestCase{ IsUnitTest: true, @@ -78,6 +80,8 @@ func TestAccAkamaiNetworkList_res_basic(t *testing.T) { Config: testutils.LoadFixtureString(t, "testdata/TestResNetworkList/match_by_id.tf"), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "name", "Voyager Call Center Whitelist"), + resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "group_id", "64867"), + resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "contract_id", "C-1FRYVV3"), ), }, { @@ -90,6 +94,83 @@ func TestAccAkamaiNetworkList_res_basic(t *testing.T) { }) }) + client.AssertExpectations(t) + }) +} + +// Negative test case for checking changed groupID and contractID in config +func TestAccAkamaiNetworkListConfigChanged(t *testing.T) { + + client := &networklists.Mock{} + + createResponse := networklists.CreateNetworkListResponse{} + err := json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkList.json"), &createResponse) + require.NoError(t, err) + + crl := networklists.GetNetworkListsResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkLists.json"), &crl) + require.NoError(t, err) + + getResponse := networklists.GetNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkList.json"), &getResponse) + require.NoError(t, err) + + updateResponse := networklists.UpdateNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkListUpdated.json"), &updateResponse) + require.NoError(t, err) + + getResponseAfterUpdate := networklists.GetNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/NetworkListUpdated.json"), &getResponseAfterUpdate) + require.NoError(t, err) + + cd := networklists.RemoveNetworkListResponse{} + err = json.Unmarshal(testutils.LoadFixtureBytes(t, "testdata/TestResNetworkList/empty.json"), &cd) + require.NoError(t, err) + + client.On("CreateNetworkList", + mock.Anything, + networklists.CreateNetworkListRequest{Name: "Voyager Call Center Whitelist", Type: "IP", Description: "Notes about this network list", List: []string{"10.1.8.23", "10.3.5.67"}}, + ).Return(&createResponse, nil) + + client.On("GetNetworkLists", + mock.Anything, + networklists.GetNetworkListsRequest{Name: "Voyager Call Center Whitelist", Type: "IP"}, + ).Return(&crl, nil) + + client.On("GetNetworkList", + mock.Anything, + networklists.GetNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, + ).Return(&getResponse, nil).Times(4) + + client.On("RemoveNetworkList", + mock.Anything, + networklists.RemoveNetworkListRequest{UniqueID: "2275_VOYAGERCALLCENTERWHITELI"}, + ).Return(&cd, nil) + + t.Run("changed contractID and groupID", func(t *testing.T) { + useClient(client, func() { + resource.Test(t, resource.TestCase{ + IsUnitTest: true, + ProviderFactories: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testutils.LoadFixtureString(t, "testdata/TestResNetworkList/match_by_id.tf"), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_networklist_network_list.test", "name", "Voyager Call Center Whitelist"), + ), + }, + { + Config: testutils.LoadFixtureString(t, "testdata/TestResNetworkList/changed_contract_id.tf"), + ExpectError: regexp.MustCompile("contract_id value C-1FRYVV5 specified in configuration differs from resource ID's value C-1FRYVV3"), + }, + { + Config: testutils.LoadFixtureString(t, "testdata/TestResNetworkList/changed_group_id.tf"), + ExpectError: regexp.MustCompile("group_id value 64865 specified in configuration differs from resource ID's value 64867"), + }, + }, + }) + }) + client.AssertExpectations(t) }) diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/changed_contract_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/changed_contract_id.tf new file mode 100644 index 000000000..bb5f72ee8 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkList/changed_contract_id.tf @@ -0,0 +1,14 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + +resource "akamai_networklist_network_list" "test" { + name = "Voyager Call Center Whitelist" + type = "IP" + description = "Notes about this network list" + list = ["10.1.8.23", "10.3.5.67"] + mode = "REPLACE" + contract_id = "C-1FRYVV5" + group_id = 64867 +} + diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/changed_group_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/changed_group_id.tf new file mode 100644 index 000000000..10302ee02 --- /dev/null +++ b/pkg/providers/networklists/testdata/TestResNetworkList/changed_group_id.tf @@ -0,0 +1,14 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + +resource "akamai_networklist_network_list" "test" { + name = "Voyager Call Center Whitelist" + type = "IP" + description = "Notes about this network list" + list = ["10.1.8.23", "10.3.5.67"] + mode = "REPLACE" + contract_id = "C-1FRYVV3" + group_id = 64865 +} + diff --git a/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf b/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf index 8f6e0a932..0c4170670 100644 --- a/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf +++ b/pkg/providers/networklists/testdata/TestResNetworkList/match_by_id.tf @@ -8,7 +8,5 @@ resource "akamai_networklist_network_list" "test" { description = "Notes about this network list" list = ["10.1.8.23", "10.3.5.67"] mode = "REPLACE" - contract_id = "C-1FRYVV3" - group_id = 64867 } diff --git a/pkg/providers/property/data_akamai_property_products_test.go b/pkg/providers/property/data_akamai_property_products_test.go index e326eba7d..3e996ce97 100644 --- a/pkg/providers/property/data_akamai_property_products_test.go +++ b/pkg/providers/property/data_akamai_property_products_test.go @@ -55,7 +55,7 @@ func TestOutputProductsDataSource(t *testing.T) { func testConfig(contractIDConfig string) string { return fmt.Sprintf(` provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } data "akamai_property_products" "example" { %s } diff --git a/pkg/providers/property/data_property_akamai_contract.go b/pkg/providers/property/data_property_akamai_contract.go index e57eae15d..cec7dd063 100644 --- a/pkg/providers/property/data_property_akamai_contract.go +++ b/pkg/providers/property/data_property_akamai_contract.go @@ -4,13 +4,13 @@ import ( "context" "errors" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - + "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/papi" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/session" "github.com/akamai/terraform-provider-akamai/v5/pkg/common/tf" - "github.com/akamai/terraform-provider-akamai/v5/pkg/meta" + akameta "github.com/akamai/terraform-provider-akamai/v5/pkg/meta" "github.com/akamai/terraform-provider-akamai/v5/pkg/tools" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" ) func dataSourcePropertyContract() *schema.Resource { @@ -34,8 +34,7 @@ func dataSourcePropertyContract() *schema.Resource { } func dataPropertyContractRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { - meta := meta.Must(m) - + meta := akameta.Must(m) log := meta.Log("PAPI", "dataPropertyContractRead") // create a context with logging for api calls @@ -70,24 +69,34 @@ func dataPropertyContractRead(ctx context.Context, d *schema.ResourceData, m int return diag.FromErr(err) } + var foundGroups []*papi.Group for _, g := range groups.Groups.Items { - if g.GroupID != group && g.GroupID != tools.AddPrefix(group, "grp_") && g.GroupName != group { - continue - } - if len(g.ContractIDs) == 0 { - return diag.Errorf("%v: %v", ErrLookingUpContract, group) + if isGroupEqual(g, group) { + foundGroups = append(foundGroups, g) } + } - // set group_id/group_name/group in state. - if err := d.Set("group_id", tools.AddPrefix(g.GroupID, "grp_")); err != nil { - return diag.Errorf("%v: %s", tf.ErrValueSet, err.Error()) - } - if err := d.Set("group_name", g.GroupName); err != nil { - return diag.Errorf("%v: %s", tf.ErrValueSet, err.Error()) - } - d.SetId(g.ContractIDs[0]) - return nil + if len(foundGroups) > 1 { + return diag.Errorf("there is more than 1 group with the same name. Based on provided data, it is impossible to determine which one should be returned. Please use group_id attribute") + } else if len(foundGroups) == 0 { + return diag.Errorf("%v; groupID: %v", ErrNoContractsFound, group) + } + if len(foundGroups[0].ContractIDs) == 0 { + return diag.Errorf("%v: %v", ErrLookingUpContract, group) + } + + if err = d.Set("group_id", tools.AddPrefix(foundGroups[0].GroupID, "grp_")); err != nil { + return diag.Errorf("%v: %s", tf.ErrValueSet, err.Error()) } + if err = d.Set("group_name", foundGroups[0].GroupName); err != nil { + return diag.Errorf("%v: %s", tf.ErrValueSet, err.Error()) + } + + d.SetId(foundGroups[0].ContractIDs[0]) + + return nil +} - return diag.Errorf("%v; groupID: %v", ErrNoContractsFound, group) +func isGroupEqual(group *papi.Group, target string) bool { + return group.GroupID == target || group.GroupID == tools.AddPrefix(target, "grp_") || group.GroupName == target } diff --git a/pkg/providers/property/data_property_akamai_contract_test.go b/pkg/providers/property/data_property_akamai_contract_test.go index e93e72f7b..fbf9a3cb0 100644 --- a/pkg/providers/property/data_property_akamai_contract_test.go +++ b/pkg/providers/property/data_property_akamai_contract_test.go @@ -4,142 +4,182 @@ import ( "regexp" "testing" - "github.com/hashicorp/terraform-plugin-testing/helper/resource" - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/papi" "github.com/akamai/terraform-provider-akamai/v5/pkg/common/testutils" + "github.com/hashicorp/terraform-plugin-testing/helper/resource" ) func Test_DSReadContract(t *testing.T) { - t.Run("read contract with group name and group ID conflict", func(t *testing.T) { - client := &papi.Mock{} - client.On("GetGroups") - client.On("GetGroups", AnyCTX).Return(&papi.GetGroupsResponse{ - AccountID: "act_1-1TJZFB", AccountName: "example.com", - Groups: papi.GroupItems{Items: []*papi.Group{ - { - GroupID: "grp_12345", - GroupName: "Example.com-1-1TJZH5", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, - }, - { - GroupID: "grp_12346", - GroupName: "default", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, + tests := map[string]struct { + init func(*testing.T, *papi.Mock, testDataForPAPIGroups) + mockData testDataForPAPIGroups + configPath string + error *regexp.Regexp + }{ + "read contract with group name and group ID conflict": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) {}, + configPath: "testdata/TestDSContractRequired/ds_contract_with_group_name_and_group.tf", + error: regexp.MustCompile("only one of `group_id,group_name` can be specified"), + }, + "read contract with group id provided": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "", + accountName: "", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_12346", + GroupName: "default", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + }, }, - }}}, nil) - useClient(client, nil, func() { - resource.UnitTest(t, resource.TestCase{ - ProtoV5ProviderFactories: testAccProviders, - Steps: []resource.TestStep{{ - Config: testutils.LoadFixtureString(t, "testdata/TestDSContractRequired/ds_contract_with_group_name_and_group.tf"), - ExpectError: regexp.MustCompile("only one of `group_id,group_name` can be specified"), - }}, - }) - }) - }) - - t.Run("read contract with group id provided", func(t *testing.T) { - client := &papi.Mock{} - client.On("GetGroups") - client.On("GetGroups", AnyCTX).Return(&papi.GetGroupsResponse{ - AccountID: "act_1-1TJZFB", AccountName: "example.com", - Groups: papi.GroupItems{Items: []*papi.Group{ - { - GroupID: "grp_12345", - GroupName: "Example.com-1-1TJZH5", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, + }, + configPath: "testdata/TestDSContractRequired/ds_contract_with_group_id.tf", + error: nil, + }, + "read contract with group id without prefix": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "act_1-1TJZFB", + accountName: "example.com", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_12346", + GroupName: "default", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + }, }, - { - GroupID: "grp_12346", - GroupName: "default", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, + }, + configPath: "testdata/TestDSContractRequired/ds_contract_with_group_id_without_prefix.tf", + error: nil, + }, + "read contract with group name": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "act_1-1TJZFB", + accountName: "example.com", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_12346", + GroupName: "default", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + }, }, - }}}, nil) - useClient(client, nil, func() { - resource.UnitTest(t, resource.TestCase{ - ProtoV5ProviderFactories: testAccProviders, - Steps: []resource.TestStep{{ - Config: testutils.LoadFixtureString(t, "testdata/TestDSContractRequired/ds_contract_with_group_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "id", "ctr_1234"), - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_id", "grp_12345"), - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_name", "Example.com-1-1TJZH5"), - ), - }}, - }) - }) - }) - - t.Run("read contract with group id without prefix", func(t *testing.T) { - client := &papi.Mock{} - client.On("GetGroups") - client.On("GetGroups", AnyCTX).Return(&papi.GetGroupsResponse{ - AccountID: "act_1-1TJZFB", AccountName: "example.com", - Groups: papi.GroupItems{Items: []*papi.Group{ - { - GroupID: "grp_12345", - GroupName: "Example.com-1-1TJZH5", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, + }, + configPath: "testdata/TestDSContractRequired/ds_contract_with_group_name.tf", + error: nil, + }, + "multiple groups with the same name - expect an error": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "act_1-1TJZFB", + accountName: "example.com", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_12346", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + }, }, - { - GroupID: "grp_12346", - GroupName: "default", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, + }, + configPath: "testdata/TestDSContractRequired/ds_contract_with_group_name.tf", + error: regexp.MustCompile("there is more than 1 group with the same name. Based on provided data, it is impossible to determine which one should be returned. Please use group_id attribute"), + }, + "multiple groups with the same name, distinguished by group_id": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "act_1-1TJZFB", + accountName: "example.com", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_12346", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + }, }, - }}}, nil) - useClient(client, nil, func() { - resource.UnitTest(t, resource.TestCase{ - ProtoV5ProviderFactories: testAccProviders, - Steps: []resource.TestStep{{ - Config: testutils.LoadFixtureString(t, "testdata/TestDSContractRequired/ds_contract_with_group_id_without_prefix.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "id", "ctr_1234"), - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_id", "grp_12345"), - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_name", "Example.com-1-1TJZH5"), - ), - }}, - }) - }) - }) + }, + configPath: "testdata/TestDSContractRequired/ds_contract_with_group_id.tf", + error: nil, + }, + } - t.Run("read contract with group name", func(t *testing.T) { - client := &papi.Mock{} - client.On("GetGroups") - client.On("GetGroups", AnyCTX).Return(&papi.GetGroupsResponse{ - AccountID: "act_1-1TJZFB", AccountName: "example.com", - Groups: papi.GroupItems{Items: []*papi.Group{ - { - GroupID: "grp_12345", - GroupName: "Example.com-1-1TJZH5", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, - }, - { - GroupID: "grp_12346", - GroupName: "default", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, - }, - }}}, nil) - useClient(client, nil, func() { - resource.UnitTest(t, resource.TestCase{ - ProtoV5ProviderFactories: testAccProviders, - Steps: []resource.TestStep{{ - Config: testutils.LoadFixtureString(t, "testdata/TestDSContractRequired/ds_contract_with_group_name.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "id", "ctr_1234"), - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_id", "grp_12345"), - resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_name", "Example.com-1-1TJZH5"), - ), - }}, + for name, test := range tests { + t.Run(name, func(t *testing.T) { + client := &papi.Mock{} + test.init(t, client, test.mockData) + useClient(client, nil, func() { + resource.UnitTest(t, resource.TestCase{ + ProtoV5ProviderFactories: testAccProviders, + IsUnitTest: true, + Steps: []resource.TestStep{ + { + Config: testutils.LoadFixtureString(t, test.configPath), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "id", "ctr_1234"), + resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_id", "grp_12345"), + resource.TestCheckResourceAttr("data.akamai_contract.akacontract", "group_name", "Example.com-1-1TJZH5"), + ), + ExpectError: test.error, + }, + }, + }) }) + client.AssertExpectations(t) }) - }) + } } diff --git a/pkg/providers/property/data_property_akamai_group.go b/pkg/providers/property/data_property_akamai_group.go index bead52bff..cd1f2b206 100644 --- a/pkg/providers/property/data_property_akamai_group.go +++ b/pkg/providers/property/data_property_akamai_group.go @@ -6,14 +6,13 @@ import ( "fmt" "strings" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/papi" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/session" - "github.com/akamai/terraform-provider-akamai/v5/pkg/cache" "github.com/akamai/terraform-provider-akamai/v5/pkg/common/tf" akameta "github.com/akamai/terraform-provider-akamai/v5/pkg/meta" + "github.com/hashicorp/terraform-plugin-sdk/v2/diag" + "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "golang.org/x/exp/slices" ) func dataSourcePropertyGroup() *schema.Resource { @@ -68,14 +67,14 @@ func dataPropertyGroupRead(ctx context.Context, d *schema.ResourceData, m interf return diag.Errorf("%v: %v: %v", ErrLookingUpGroupByName, groupName, err) } - if err := d.Set("group_name", group.GroupName); err != nil { + if err = d.Set("group_name", group.GroupName); err != nil { return diag.Errorf("%v: %s", tf.ErrValueSet, err.Error()) } if len(group.ContractIDs) != 0 { contractID = group.ContractIDs[0] } - if err := d.Set("contract_id", contractID); err != nil { + if err = d.Set("contract_id", contractID); err != nil { return diag.Errorf("%v: %s", tf.ErrValueSet, err.Error()) } @@ -125,11 +124,22 @@ func findGroupByName(name, contract string, groups *papi.GetGroupsResponse, isDe } var foundGroups []*papi.Group - for _, group := range groups.Groups.Items { + for _, group = range groups.Groups.Items { if group.GroupName == name { foundGroups = append(foundGroups, group) } } + + contractMap := make(map[string][]string) + for _, grp := range foundGroups { + if ctrs, ok := contractMap[grp.GroupName]; ok { + if slices.Equal(ctrs, grp.ContractIDs) { + return nil, fmt.Errorf("there is more than 1 group with the same name and contract combination. Based on provided data, it is impossible to determine which one should be returned") + } + } + contractMap[grp.GroupName] = grp.ContractIDs + } + // Make sure the group belongs to the specified contract for _, foundGroup := range foundGroups { for _, c := range foundGroup.ContractIDs { @@ -138,24 +148,14 @@ func findGroupByName(name, contract string, groups *papi.GetGroupsResponse, isDe } } } + return nil, fmt.Errorf("%v: %s", ErrGroupNotInContract, contract) } func getGroups(ctx context.Context, meta akameta.Meta) (*papi.GetGroupsResponse, error) { - groups := &papi.GetGroupsResponse{} - if err := cache.Get(cache.BucketName(SubproviderName), "groups", groups); err != nil { - if !errors.Is(err, cache.ErrEntryNotFound) && !errors.Is(err, cache.ErrDisabled) { - return nil, err - } - groups, err = Client(meta).GetGroups(ctx) - if err != nil { - return nil, err - } - if err := cache.Set(cache.BucketName(SubproviderName), "groups", groups); err != nil { - if !errors.Is(err, cache.ErrDisabled) { - return nil, err - } - } + groups, err := Client(meta).GetGroups(ctx) + if err != nil { + return nil, err } return groups, nil diff --git a/pkg/providers/property/data_property_akamai_group_test.go b/pkg/providers/property/data_property_akamai_group_test.go index a00cdc65f..eb9d33373 100644 --- a/pkg/providers/property/data_property_akamai_group_test.go +++ b/pkg/providers/property/data_property_akamai_group_test.go @@ -1,40 +1,186 @@ package property import ( + "regexp" "testing" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/papi" "github.com/akamai/terraform-provider-akamai/v5/pkg/common/testutils" "github.com/hashicorp/terraform-plugin-testing/helper/resource" + "github.com/stretchr/testify/mock" ) func Test_DSReadGroup(t *testing.T) { - t.Run("read group with group_name and contract_id provided", func(t *testing.T) { - client := &papi.Mock{} - client.On("GetGroups") - client.On("GetGroups", AnyCTX).Return(&papi.GetGroupsResponse{ - AccountID: "act_1-1TJZFB", AccountName: "example.com", - Groups: papi.GroupItems{Items: []*papi.Group{ - { - GroupID: "grp_12345", - GroupName: "Example.com-1-1TJZH5", - ParentGroupID: "grp_parent", - ContractIDs: []string{"ctr_1234"}, + tests := map[string]struct { + init func(*testing.T, *papi.Mock, testDataForPAPIGroups) + mockData testDataForPAPIGroups + configPath string + error *regexp.Regexp + }{ + "read group with group_name and contract_id provided": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "testAccountID", + accountName: "testAccountName", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + }, }, - }}}, nil) - useClient(client, nil, func() { - resource.UnitTest(t, resource.TestCase{ - ProtoV5ProviderFactories: testAccProviders, - IsUnitTest: true, - Steps: []resource.TestStep{{ - Config: testutils.LoadFixtureString(t, "testdata/TestDSGroup/ds-group-w-group-name-and-contract_id.tf"), - Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr("data.akamai_group.akagroup", "id", "grp_12345"), - resource.TestCheckResourceAttr("data.akamai_group.akagroup", "group_name", "Example.com-1-1TJZH5"), - resource.TestCheckResourceAttr("data.akamai_group.akagroup", "contract_id", "ctr_1234"), - ), - }}, + }, + configPath: "testdata/TestDSGroup/ds-group-w-group-name-and-contract_id.tf", + }, + "multiple groups distinguished by contract_id": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "testAccountID", + accountName: "testAccountName", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_123456", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent2", + ContractIDs: []string{"ctr_12345"}, + }, + }, + }, + }, + configPath: "testdata/TestDSGroup/ds-group-w-group-name-and-contract_id.tf", + }, + "multiple groups with the same group names and multiple distinguishable contracts": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "testAccountID", + accountName: "testAccountName", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_123456", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_12345", "ctr_123456"}, + }, + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent2", + ContractIDs: []string{"ctr_1234", "ctr_12345"}, + }, + }, + }, + }, + configPath: "testdata/TestDSGroup/ds-group-w-group-name-and-contract_id.tf", + }, + "multiple groups with the same group_name and contract - expect an error": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "testAccountID", + accountName: "testAccountName", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234"}, + }, + { + GroupID: "grp_123456", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent2", + ContractIDs: []string{"ctr_1234"}, + }, + }, + }, + }, + configPath: "testdata/TestDSGroup/ds-group-w-group-name-and-contract_id.tf", + error: regexp.MustCompile("there is more than 1 group with the same name and contract combination. Based on provided data, it is impossible to determine which one should be returned"), + }, + "multiple groups with the same multiple contracts and the same group names - expect an error": { + init: func(t *testing.T, m *papi.Mock, testData testDataForPAPIGroups) { + expectGetGroups(m, testData, 5) + }, + mockData: testDataForPAPIGroups{ + accountID: "testAccountID", + accountName: "testAccountName", + groups: papi.GroupItems{ + Items: []*papi.Group{ + { + GroupID: "grp_12345", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent", + ContractIDs: []string{"ctr_1234", "ctr_12345"}, + }, + { + GroupID: "grp_123456", + GroupName: "Example.com-1-1TJZH5", + ParentGroupID: "grp_parent2", + ContractIDs: []string{"ctr_1234", "ctr_12345"}, + }, + }, + }, + }, + configPath: "testdata/TestDSGroup/ds-group-w-group-name-and-contract_id.tf", + error: regexp.MustCompile("there is more than 1 group with the same name and contract combination. Based on provided data, it is impossible to determine which one should be returned"), + }, + } + + for name, test := range tests { + t.Run(name, func(t *testing.T) { + client := &papi.Mock{} + test.init(t, client, test.mockData) + useClient(client, nil, func() { + resource.UnitTest(t, resource.TestCase{ + ProtoV5ProviderFactories: testAccProviders, + IsUnitTest: true, + Steps: []resource.TestStep{ + { + Config: testutils.LoadFixtureString(t, test.configPath), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("data.akamai_group.akagroup", "id", "grp_12345"), + resource.TestCheckResourceAttr("data.akamai_group.akagroup", "group_name", "Example.com-1-1TJZH5"), + resource.TestCheckResourceAttr("data.akamai_group.akagroup", "contract_id", "ctr_1234"), + ), + ExpectError: test.error, + }, + }, + }) }) + client.AssertExpectations(t) }) - }) + } +} + +type testDataForPAPIGroups struct { + accountID string + accountName string + groups papi.GroupItems +} + +var expectGetGroups = func(client *papi.Mock, data testDataForPAPIGroups, timesToRun int) { + client.On("GetGroups", mock.Anything).Return(&papi.GetGroupsResponse{ + AccountID: data.accountID, + AccountName: data.accountName, + Groups: data.groups, + }, nil) } diff --git a/pkg/providers/property/data_property_akamai_groups_test.go b/pkg/providers/property/data_property_akamai_groups_test.go index 8b8f68fb2..1a39ad8bd 100644 --- a/pkg/providers/property/data_property_akamai_groups_test.go +++ b/pkg/providers/property/data_property_akamai_groups_test.go @@ -83,11 +83,10 @@ func TestGroup_ContractNotFoundInState(t *testing.T) { func testAccDataSourceMultipleGroupsBasic() string { return ` provider "akamai" { - edgerc = "~/.edgerc" + edgerc = "../../test/edgerc" } - data "akamai_groups" "test" { - } + data "akamai_groups" "test" {} output "group_id1" { value = "${data.akamai_groups.test.groups[0].group_id}" diff --git a/pkg/providers/property/resource_akamai_edge_hostname.go b/pkg/providers/property/resource_akamai_edge_hostname.go index d041b8822..e5b0a4a89 100644 --- a/pkg/providers/property/resource_akamai_edge_hostname.go +++ b/pkg/providers/property/resource_akamai_edge_hostname.go @@ -6,6 +6,7 @@ import ( "errors" "fmt" "strings" + "time" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/hapi" "github.com/akamai/AkamaiOPEN-edgegrid-golang/v7/pkg/papi" @@ -255,6 +256,11 @@ func resourceSecureEdgeHostNameRead(ctx context.Context, d *schema.ResourceData, if err := d.Set("edge_hostname", foundEdgeHostname.Domain); err != nil { return diag.FromErr(fmt.Errorf("%w: %s", tf.ErrValueSet, err.Error())) } + + if err := d.Set("ip_behavior", foundEdgeHostname.IPVersionBehavior); err != nil { + return diag.FromErr(fmt.Errorf("%w: %s", tf.ErrValueSet, err.Error())) + } + d.SetId(foundEdgeHostname.ID) return nil @@ -292,7 +298,8 @@ func resourceSecureEdgeHostNameUpdate(ctx context.Context, d *schema.ResourceDat ipBehavior = "IPV6_IPV4_DUALSTACK" } - if _, err = HapiClient(meta).UpdateEdgeHostname(ctx, hapi.UpdateEdgeHostnameRequest{ + hapiClient := HapiClient(meta) + resp, err := hapiClient.UpdateEdgeHostname(ctx, hapi.UpdateEdgeHostnameRequest{ DNSZone: dnsZone, RecordName: strings.ReplaceAll(edgeHostname, "."+dnsZone, ""), Comments: fmt.Sprintf("change /ipVersionBehavior to %s", ipBehavior), @@ -304,7 +311,8 @@ func resourceSecureEdgeHostNameUpdate(ctx context.Context, d *schema.ResourceDat Value: ipBehavior, }, }, - }); err != nil { + }) + if err != nil { if err2 := tf.RestoreOldValues(d, []string{"ip_behavior"}); err2 != nil { return diag.Errorf(`%s failed. No changes were written to server: %s @@ -314,11 +322,38 @@ Failed to restore previous local schema values. The schema will remain in tainte } return diag.FromErr(err) } + + if err = waitForChange(ctx, hapiClient, resp.ChangeID); err != nil { + return diag.FromErr(err) + } } return resourceSecureEdgeHostNameRead(ctx, d, m) } +func waitForChange(ctx context.Context, client hapi.HAPI, changeID int) error { + for { + change, err := client.GetChangeRequest(ctx, hapi.GetChangeRequest{ + ChangeID: changeID, + }) + if err != nil { + return err + } + if change.Status == "PENDING" { + select { + case <-time.After(time.Second * 10): + case <-ctx.Done(): + return ctx.Err() + } + continue + } + if change.Status == "SUCCEEDED" { + return nil + } + return fmt.Errorf("unexpected change status: %s", change.Status) + } +} + func resourceSecureEdgeHostNameDelete(_ context.Context, d *schema.ResourceData, m interface{}) diag.Diagnostics { meta := meta.Must(m) logger := meta.Log("PAPI", "resourceSecureEdgeHostNameDelete") diff --git a/pkg/providers/property/resource_akamai_edge_hostname_test.go b/pkg/providers/property/resource_akamai_edge_hostname_test.go index 28ec6bc62..1c86bcf2b 100644 --- a/pkg/providers/property/resource_akamai_edge_hostname_test.go +++ b/pkg/providers/property/resource_akamai_edge_hostname_test.go @@ -122,18 +122,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test2", - DomainSuffix: "edgesuite.net", + ID: "eh_123", + Domain: "test.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test2", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV6_PERFORMANCE", }, { - ID: "eh_2", - Domain: "test.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test3", - DomainSuffix: "edgesuite.net", + ID: "eh_2", + Domain: "test.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test3", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV6_PERFORMANCE", }, }}, }, nil).Once() @@ -160,25 +162,28 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test2", - DomainSuffix: "edgesuite.net", + ID: "eh_123", + Domain: "test.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test2", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test3.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test3", - DomainSuffix: "edgesuite.net", + ID: "eh_2", + Domain: "test3.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test3", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_123", - Domain: "test.edgekey.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "edgekey.net", + ID: "eh_123", + Domain: "test.edgekey.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "edgekey.net", + IPVersionBehavior: "IPV6_PERFORMANCE", }, }}, }, nil) @@ -207,18 +212,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test2", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test2", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test3", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test3", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Once() @@ -243,25 +250,28 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test2", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test2", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test3", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test3", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", }, }}, }, nil) @@ -289,18 +299,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.aka.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test2", - DomainSuffix: "aka.net.net", + ID: "eh_123", + Domain: "test.aka.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test2", + DomainSuffix: "aka.net.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test3", - DomainSuffix: "edgesuite.net", + ID: "eh_2", + Domain: "test.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test3", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Once() @@ -332,25 +344,28 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_1", - Domain: "test2.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test2", - DomainSuffix: "edgesuite.net", + ID: "eh_1", + Domain: "test2.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test2", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test3.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test3", - DomainSuffix: "edgesuite.net", + ID: "eh_2", + Domain: "test3.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test3", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_123", - Domain: "test.aka.edgesuite.net", - ProductID: "prd_2", - DomainPrefix: "test.aka", - DomainSuffix: "edgesuite.net", + ID: "eh_123", + Domain: "test.aka.edgesuite.net", + ProductID: "prd_2", + DomainPrefix: "test.aka", + DomainSuffix: "edgesuite.net", + IPVersionBehavior: "IPV4", UseCases: []papi.UseCase{ { UseCase: "Download_Mode", @@ -387,18 +402,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", }, }}, }, nil).Times(3) @@ -428,18 +445,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Times(3) @@ -453,18 +472,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Once() @@ -483,7 +504,13 @@ func TestResourceEdgeHostname(t *testing.T) { Value: "IPV6_IPV4_DUALSTACK", }, }, - }).Return(&hapi.UpdateEdgeHostnameResponse{}, nil).Once() + }).Return(&hapi.UpdateEdgeHostnameResponse{ + ChangeID: 123, + }, nil).Once() + + mh.On("GetChangeRequest", mock.Anything, hapi.GetChangeRequest{ChangeID: 123}).Return(&hapi.ChangeRequest{ + Status: "SUCCEEDED", + }, nil) // read mp.On("GetEdgeHostnames", mock.Anything, papi.GetEdgeHostnamesRequest{ @@ -494,18 +521,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Twice() @@ -533,6 +562,139 @@ func TestResourceEdgeHostname(t *testing.T) { }, }, }, + "edge hostname - ip_behavior drift": { + init: func(mp *papi.Mock, mh *hapi.Mock) { + // 1st step + // 1. call from create method + // 2. and 3. call from read method + mp.On("GetEdgeHostnames", mock.Anything, papi.GetEdgeHostnamesRequest{ + ContractID: "ctr_2", + GroupID: "grp_2", + }).Return(&papi.GetEdgeHostnamesResponse{ + ContractID: "ctr_2", + GroupID: "grp_2", + EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ + { + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", + }, + { + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", + }, + }}, + }, nil).Times(3) + + // refresh + mp.On("GetEdgeHostnames", mock.Anything, papi.GetEdgeHostnamesRequest{ + ContractID: "ctr_2", + GroupID: "grp_2", + }).Return(&papi.GetEdgeHostnamesResponse{ + ContractID: "ctr_2", + GroupID: "grp_2", + EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ + { + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", // drift happens here + }, + { + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", + }, + }}, + }, nil).Once() + + // 2nd step + // update + mh.On("UpdateEdgeHostname", mock.Anything, hapi.UpdateEdgeHostnameRequest{ + DNSZone: "akamaized.net", + RecordName: "test", + Comments: "change /ipVersionBehavior to IPV4", + StatusUpdateEmail: []string{"hello@akamai.com"}, + Body: []hapi.UpdateEdgeHostnameRequestBody{ + { + Op: "replace", + Path: "/ipVersionBehavior", + Value: "IPV4", + }, + }, + }).Return(&hapi.UpdateEdgeHostnameResponse{ + ChangeID: 123, + }, nil).Once() + + mh.On("GetChangeRequest", mock.Anything, hapi.GetChangeRequest{ChangeID: 123}).Return(&hapi.ChangeRequest{ + Status: "PENDING", + }, nil).Once() + mh.On("GetChangeRequest", mock.Anything, hapi.GetChangeRequest{ChangeID: 123}).Return(&hapi.ChangeRequest{ + Status: "SUCCEEDED", + }, nil).Once() + + // read + mp.On("GetEdgeHostnames", mock.Anything, papi.GetEdgeHostnamesRequest{ + ContractID: "ctr_2", + GroupID: "grp_2", + }).Return(&papi.GetEdgeHostnamesResponse{ + ContractID: "ctr_2", + GroupID: "grp_2", + EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ + { + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", + }, + { + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV6_COMPLIANCE", + }, + }}, + }, nil).Twice() + }, + steps: []resource.TestStep{ + { + Config: testutils.LoadFixtureString(t, fmt.Sprintf("%s/%s", testDir, "new_akamaized_ipv4.tf")), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "id", "eh_123"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "contract_id", "ctr_2"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "group_id", "grp_2"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "edge_hostname", "test.akamaized.net"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "ip_behavior", "IPV4"), + ), + }, + { + Config: testutils.LoadFixtureString(t, fmt.Sprintf("%s/%s", testDir, "new_akamaized_ipv4_with_email.tf")), + Check: resource.ComposeAggregateTestCheckFunc( + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "id", "eh_123"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "contract_id", "ctr_2"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "group_id", "grp_2"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "edge_hostname", "test.akamaized.net"), + resource.TestCheckResourceAttr("akamai_edge_hostname.edgehostname", "ip_behavior", "IPV4"), + ), + }, + }, + }, "error - update ip_behavior to ipv6_performance": { init: func(mp *papi.Mock, mh *hapi.Mock) { // 1. call from create method and refresh 2. update ip_behvior to improper value @@ -545,18 +707,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Times(3) @@ -570,18 +734,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Once() @@ -631,18 +797,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Times(3) @@ -656,18 +824,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Once() @@ -702,18 +872,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Times(3) @@ -727,18 +899,20 @@ func TestResourceEdgeHostname(t *testing.T) { GroupID: "grp_2", EdgeHostnames: papi.EdgeHostnameItems{Items: []papi.EdgeHostnameGetItem{ { - ID: "eh_123", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_123", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, { - ID: "eh_2", - Domain: "test.akamaized.net", - ProductID: "prd_2", - DomainPrefix: "test", - DomainSuffix: "akamaized.net", + ID: "eh_2", + Domain: "test.akamaized.net", + ProductID: "prd_2", + DomainPrefix: "test", + DomainSuffix: "akamaized.net", + IPVersionBehavior: "IPV4", }, }}, }, nil).Once() @@ -998,7 +1172,7 @@ func TestResourceEdgeHostnames_WithImport(t *testing.T) { ImportStateId: id, ResourceName: "akamai_edge_hostname.importedgehostname", ImportStateVerify: true, - ImportStateVerifyIgnore: []string{"ip_behavior", "product_id"}, + ImportStateVerifyIgnore: []string{"product_id"}, }, }, }) diff --git a/pkg/providers/property/ruleformats/builder.go b/pkg/providers/property/ruleformats/builder.go index 337e219e2..340e6b876 100644 --- a/pkg/providers/property/ruleformats/builder.go +++ b/pkg/providers/property/ruleformats/builder.go @@ -297,9 +297,17 @@ func (r RulesBuilder) remapOptionValues(behaviorName string, options papi.RuleOp } else { newRom[optionName] = v } + // for array with elements which potentially should be flattened + if items, ok := newRom[optionName].([]interface{}); ok { + for i, item := range items { + if opt, ok := item.(map[string]interface{}); ok { + newRom[optionName].([]interface{})[i] = r.remapOptionValues(optKey, opt) + } + } + } - if v, ok := newRom[optionName].(map[string]interface{}); ok { - newRom[optionName] = r.remapOptionValues(optKey, v) + if opt, ok := newRom[optionName].(map[string]interface{}); ok { + newRom[optionName] = r.remapOptionValues(optKey, opt) } } diff --git a/pkg/providers/property/ruleformats/rule_format_v2023_01_05.gen.go b/pkg/providers/property/ruleformats/rule_format_v2023_01_05.gen.go index 70b1a8a28..5d17a3bad 100644 --- a/pkg/providers/property/ruleformats/rule_format_v2023_01_05.gen.go +++ b/pkg/providers/property/ruleformats/rule_format_v2023_01_05.gen.go @@ -11,8 +11,8 @@ func init() { behaviorsSchemas: getBehaviorsSchemaV20230105(), criteriaSchemas: getCriteriaSchemaV20230105(), typeMappings: map[string]interface{}{"adScalerCircuitBreaker.returnErrorResponseCodeBased.408": 408, "adScalerCircuitBreaker.returnErrorResponseCodeBased.500": 500, "adScalerCircuitBreaker.returnErrorResponseCodeBased.502": 502, "adScalerCircuitBreaker.returnErrorResponseCodeBased.504": 504}, - nameMappings: map[string]string{"allowFcmParentOverride": "allowFCMParentOverride", "allowHttpsCacheKeySharing": "allowHTTPSCacheKeySharing", "allowHttpsDowngrade": "allowHTTPSDowngrade", "allowHttpsUpgrade": "allowHTTPSUpgrade", "conditionalHttpStatus": "conditionalHTTPStatus", "contentCharacteristicsAmd": "contentCharacteristicsAMD", "contentCharacteristicsDd": "contentCharacteristicsDD", "dcpAuthHmacTransformation": "dcpAuthHMACTransformation", "detectSmartDnsProxy": "detectSmartDNSProxy", "detectSmartDnsProxyAction": "detectSmartDNSProxyAction", "detectSmartDnsProxyRedirecturl": "detectSmartDNSProxyRedirecturl", "enableEs256": "enableES256", "enableIpAvoidance": "enableIPAvoidance", "enableIpProtection": "enableIPProtection", "enableIpRedirectOnDeny": "enableIPRedirectOnDeny", "enableRs256": "enableRS256", "enableTokenInUri": "enableTokenInURI", "g2OToken": "g2oToken", "g2Oheader": "g2oheader", "i18NCharset": "i18nCharset", "i18NStatus": "i18nStatus", "isCertificateSniOnly": "isCertificateSNIOnly", "logEdgeIp": "logEdgeIP", "originSettings": "origin_settings", "overrideIpAddresses": "overrideIPAddresses", "segmentDurationDash": "segmentDurationDASH", "segmentDurationDashCustom": "segmentDurationDASHCustom", "segmentDurationHds": "segmentDurationHDS", "segmentDurationHdsCustom": "segmentDurationHDSCustom", "segmentDurationHls": "segmentDurationHLS", "segmentDurationHlsCustom": "segmentDurationHLSCustom", "segmentSizeDash": "segmentSizeDASH", "segmentSizeHds": "segmentSizeHDS", "segmentSizeHls": "segmentSizeHLS", "sf3COriginHost": "sf3cOriginHost", "sf3COriginHostHeader": "sf3cOriginHostHeader", "smartDnsProxy": "smartDNSProxy", "standardTlsMigration": "standardTLSMigration", "standardTlsMigrationOverride": "standardTLSMigrationOverride", "titleAicMobile": "title_aic_mobile", "titleAicNonmobile": "title_aic_nonmobile", "tokenAuthHlsTitle": "tokenAuthHLSTitle"}, - shouldFlatten: []string{"apiPrioritization.cloudletPolicy", "apiPrioritization.throttledCpCode", "apiPrioritization.throttledCpCode.cpCodeLimits", "apiPrioritization.netStorage", "applicationLoadBalancer.cloudletPolicy", "applicationLoadBalancer.allDownNetStorage", "audienceSegmentation.cloudletPolicy", "cpCode.value", "cpCode.value.cpCodeLimits", "edgeRedirector.cloudletPolicy", "failAction.netStorageHostname", "failAction.cpCode", "failAction.cpCode.cpCodeLimits", "firstPartyMarketing.cloudletPolicy", "firstPartyMarketingPlus.cloudletPolicy", "forwardRewrite.cloudletPolicy", "imageAndVideoManager.cpCodeOriginal", "imageAndVideoManager.cpCodeOriginal.cpCodeLimits", "imageAndVideoManager.cpCodeTransformed", "imageAndVideoManager.cpCodeTransformed.cpCodeLimits", "imageManager.cpCodeOriginal", "imageManager.cpCodeOriginal.cpCodeLimits", "imageManager.cpCodeTransformed", "imageManager.cpCodeTransformed.cpCodeLimits", "imageManagerVideo.cpCodeOriginal", "imageManagerVideo.cpCodeOriginal.cpCodeLimits", "imageManagerVideo.cpCodeTransformed", "imageManagerVideo.cpCodeTransformed.cpCodeLimits", "inputValidation.cloudletPolicy", "inputValidation.penaltyNetStorage", "origin.netStorage", "phasedRelease.cloudletPolicy", "requestControl.cloudletPolicy", "requestControl.netStorage", "siteShield.ssmap", "visitorPrioritization.cloudletPolicy", "visitorPrioritization.waitingRoomCpCode", "visitorPrioritization.waitingRoomCpCode.cpCodeLimits", "visitorPrioritization.waitingRoomNetStorage", "webApplicationFirewall.firewallConfiguration", "matchCpCode.value", "matchCpCode.value.cpCodeLimits"}, + nameMappings: map[string]string{"allowFcmParentOverride": "allowFCMParentOverride", "allowHttpsCacheKeySharing": "allowHTTPSCacheKeySharing", "allowHttpsDowngrade": "allowHTTPSDowngrade", "allowHttpsUpgrade": "allowHTTPSUpgrade", "c": "C", "canBeCa": "canBeCA", "cn": "CN", "conditionalHttpStatus": "conditionalHTTPStatus", "contentCharacteristicsAmd": "contentCharacteristicsAMD", "contentCharacteristicsDd": "contentCharacteristicsDD", "dcpAuthHmacTransformation": "dcpAuthHMACTransformation", "detectSmartDnsProxy": "detectSmartDNSProxy", "detectSmartDnsProxyAction": "detectSmartDNSProxyAction", "detectSmartDnsProxyRedirecturl": "detectSmartDNSProxyRedirecturl", "enableEs256": "enableES256", "enableIpAvoidance": "enableIPAvoidance", "enableIpProtection": "enableIPProtection", "enableIpRedirectOnDeny": "enableIPRedirectOnDeny", "enableRs256": "enableRS256", "enableTokenInUri": "enableTokenInURI", "g2OToken": "g2oToken", "g2Oheader": "g2oheader", "i18NCharset": "i18nCharset", "i18NStatus": "i18nStatus", "isCertificateSniOnly": "isCertificateSNIOnly", "issuerRdns": "issuerRDNs", "logEdgeIp": "logEdgeIP", "o": "O", "originSettings": "origin_settings", "ou": "OU", "overrideIpAddresses": "overrideIPAddresses", "segmentDurationDash": "segmentDurationDASH", "segmentDurationDashCustom": "segmentDurationDASHCustom", "segmentDurationHds": "segmentDurationHDS", "segmentDurationHdsCustom": "segmentDurationHDSCustom", "segmentDurationHls": "segmentDurationHLS", "segmentDurationHlsCustom": "segmentDurationHLSCustom", "segmentSizeDash": "segmentSizeDASH", "segmentSizeHds": "segmentSizeHDS", "segmentSizeHls": "segmentSizeHLS", "sf3COriginHost": "sf3cOriginHost", "sf3COriginHostHeader": "sf3cOriginHostHeader", "smartDnsProxy": "smartDNSProxy", "standardTlsMigration": "standardTLSMigration", "standardTlsMigrationOverride": "standardTLSMigrationOverride", "subjectCn": "subjectCN", "subjectRdns": "subjectRDNs", "titleAicMobile": "title_aic_mobile", "titleAicNonmobile": "title_aic_nonmobile", "tokenAuthHlsTitle": "tokenAuthHLSTitle"}, + shouldFlatten: []string{"apiPrioritization.cloudletPolicy", "apiPrioritization.throttledCpCode", "apiPrioritization.throttledCpCode.cpCodeLimits", "apiPrioritization.netStorage", "applicationLoadBalancer.cloudletPolicy", "applicationLoadBalancer.allDownNetStorage", "audienceSegmentation.cloudletPolicy", "cpCode.value", "cpCode.value.cpCodeLimits", "edgeRedirector.cloudletPolicy", "failAction.netStorageHostname", "failAction.cpCode", "failAction.cpCode.cpCodeLimits", "firstPartyMarketing.cloudletPolicy", "firstPartyMarketingPlus.cloudletPolicy", "forwardRewrite.cloudletPolicy", "imageAndVideoManager.cpCodeOriginal", "imageAndVideoManager.cpCodeOriginal.cpCodeLimits", "imageAndVideoManager.cpCodeTransformed", "imageAndVideoManager.cpCodeTransformed.cpCodeLimits", "imageManager.cpCodeOriginal", "imageManager.cpCodeOriginal.cpCodeLimits", "imageManager.cpCodeTransformed", "imageManager.cpCodeTransformed.cpCodeLimits", "imageManagerVideo.cpCodeOriginal", "imageManagerVideo.cpCodeOriginal.cpCodeLimits", "imageManagerVideo.cpCodeTransformed", "imageManagerVideo.cpCodeTransformed.cpCodeLimits", "inputValidation.cloudletPolicy", "inputValidation.penaltyNetStorage", "origin.netStorage", "origin.customCertificateAuthorities.subjectRDNs", "origin.customCertificateAuthorities.issuerRDNs", "origin.customCertificates.subjectRDNs", "origin.customCertificates.issuerRDNs", "phasedRelease.cloudletPolicy", "requestControl.cloudletPolicy", "requestControl.netStorage", "siteShield.ssmap", "visitorPrioritization.cloudletPolicy", "visitorPrioritization.waitingRoomCpCode", "visitorPrioritization.waitingRoomCpCode.cpCodeLimits", "visitorPrioritization.waitingRoomNetStorage", "webApplicationFirewall.firewallConfiguration", "matchCpCode.value", "matchCpCode.value.cpCodeLimits"}, }) } @@ -7289,7 +7289,7 @@ func getBehaviorsSchemaV20230105() map[string]*schema.Schema { "large_file_optimization": { Optional: true, Type: schema.TypeList, - Description: "The `Large File Optimization` feature improves performance and reliability when delivering large files. You need this behavior for objects larger than 1.8GB, and it's recommended for anything over 100MB. You should apply it only to the specific content to be optimized, such as a download directory's `.gz` files, and enable the `useVersioning` option while enforcing your own filename versioning policy. Note that it is best to use `NetStorage` for objects larger than 1.8GB. This behavior can be used in includes.", + Description: "The `Large File Optimization` (LFO) feature improves performance and reliability when delivering large files. You need this behavior for objects larger than 1.8GB, and you should apply it to anything over 100MB. You should apply it only to the specific content to be optimized, such as a download directory's `.gz` files, and enable the `useVersioning` option while enforcing your own filename versioning policy. Make sure you meet all the `requirements and best practices` for the LFO delivery. This behavior can be used in includes.", MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -8831,18 +8831,146 @@ func getBehaviorsSchemaV20230105() map[string]*schema.Schema { Type: schema.TypeList, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ - "pem_encoded_cert": { - ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), + "subject_cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "subject_alternative_names": { + Optional: true, + Description: "", + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "subject_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "issuer_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "not_before": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "not_after": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sig_alg_name": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_algorithm": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_format": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "serial_number": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "version": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sha1_fingerprint": { + ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), Optional: true, Description: "", Type: schema.TypeString, }, - "sha1_fingerprint": { - ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), + "pem_encoded_cert": { + ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), Optional: true, Description: "", Type: schema.TypeString, }, + "can_be_leaf": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "can_be_ca": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "self_signed": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, }, }, }, @@ -8852,18 +8980,146 @@ func getBehaviorsSchemaV20230105() map[string]*schema.Schema { Type: schema.TypeList, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ - "pem_encoded_cert": { - ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), + "subject_cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "subject_alternative_names": { + Optional: true, + Description: "", + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "subject_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "issuer_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "not_before": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "not_after": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sig_alg_name": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_algorithm": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_format": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "serial_number": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "version": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sha1_fingerprint": { + ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), Optional: true, Description: "", Type: schema.TypeString, }, - "sha1_fingerprint": { - ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), + "pem_encoded_cert": { + ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), Optional: true, Description: "", Type: schema.TypeString, }, + "can_be_leaf": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "can_be_ca": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "self_signed": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, }, }, }, @@ -11973,6 +12229,22 @@ func getBehaviorsSchemaV20230105() map[string]*schema.Schema { Description: "", Type: schema.TypeString, }, + "china_cdn_map": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "has_mixed_hosts": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "src": { + ValidateDiagFunc: validation.ToDiagFunc(validation.StringInSlice([]string{"FALLBACK", "PROTECTED_HOST_MATCH", "ORIGIN_MATCH", "PREVIOUS_MAP", "PROPERTY_MATCH"}, false)), + Optional: true, + Description: "", + Type: schema.TypeString, + }, }, }, }, diff --git a/pkg/providers/property/ruleformats/rule_format_v2023_05_30.gen.go b/pkg/providers/property/ruleformats/rule_format_v2023_05_30.gen.go index 13268fbe7..2b7f57430 100644 --- a/pkg/providers/property/ruleformats/rule_format_v2023_05_30.gen.go +++ b/pkg/providers/property/ruleformats/rule_format_v2023_05_30.gen.go @@ -11,8 +11,8 @@ func init() { behaviorsSchemas: getBehaviorsSchemaV20230530(), criteriaSchemas: getCriteriaSchemaV20230530(), typeMappings: map[string]interface{}{"adScalerCircuitBreaker.returnErrorResponseCodeBased.408": 408, "adScalerCircuitBreaker.returnErrorResponseCodeBased.500": 500, "adScalerCircuitBreaker.returnErrorResponseCodeBased.502": 502, "adScalerCircuitBreaker.returnErrorResponseCodeBased.504": 504}, - nameMappings: map[string]string{"allowFcmParentOverride": "allowFCMParentOverride", "allowHttpsCacheKeySharing": "allowHTTPSCacheKeySharing", "allowHttpsDowngrade": "allowHTTPSDowngrade", "allowHttpsUpgrade": "allowHTTPSUpgrade", "conditionalHttpStatus": "conditionalHTTPStatus", "contentCharacteristicsAmd": "contentCharacteristicsAMD", "contentCharacteristicsDd": "contentCharacteristicsDD", "dcpAuthHmacTransformation": "dcpAuthHMACTransformation", "detectSmartDnsProxy": "detectSmartDNSProxy", "detectSmartDnsProxyAction": "detectSmartDNSProxyAction", "detectSmartDnsProxyRedirecturl": "detectSmartDNSProxyRedirecturl", "enableCmcdSegmentPrefetch": "enableCMCDSegmentPrefetch", "enableEs256": "enableES256", "enableIpAvoidance": "enableIPAvoidance", "enableIpProtection": "enableIPProtection", "enableIpRedirectOnDeny": "enableIPRedirectOnDeny", "enableRs256": "enableRS256", "enableTokenInUri": "enableTokenInURI", "g2OToken": "g2oToken", "g2Oheader": "g2oheader", "i18NCharset": "i18nCharset", "i18NStatus": "i18nStatus", "isCertificateSniOnly": "isCertificateSNIOnly", "logEdgeIp": "logEdgeIP", "originSettings": "origin_settings", "overrideIpAddresses": "overrideIPAddresses", "segmentDurationDash": "segmentDurationDASH", "segmentDurationDashCustom": "segmentDurationDASHCustom", "segmentDurationHds": "segmentDurationHDS", "segmentDurationHdsCustom": "segmentDurationHDSCustom", "segmentDurationHls": "segmentDurationHLS", "segmentDurationHlsCustom": "segmentDurationHLSCustom", "segmentSizeDash": "segmentSizeDASH", "segmentSizeHds": "segmentSizeHDS", "segmentSizeHls": "segmentSizeHLS", "sf3COriginHost": "sf3cOriginHost", "sf3COriginHostHeader": "sf3cOriginHostHeader", "smartDnsProxy": "smartDNSProxy", "standardTlsMigration": "standardTLSMigration", "standardTlsMigrationOverride": "standardTLSMigrationOverride", "titleAicMobile": "title_aic_mobile", "titleAicNonmobile": "title_aic_nonmobile", "tokenAuthHlsTitle": "tokenAuthHLSTitle"}, - shouldFlatten: []string{"apiPrioritization.cloudletPolicy", "apiPrioritization.throttledCpCode", "apiPrioritization.throttledCpCode.cpCodeLimits", "apiPrioritization.netStorage", "applicationLoadBalancer.cloudletPolicy", "applicationLoadBalancer.allDownNetStorage", "audienceSegmentation.cloudletPolicy", "cpCode.value", "cpCode.value.cpCodeLimits", "edgeRedirector.cloudletPolicy", "failAction.netStorageHostname", "failAction.cpCode", "failAction.cpCode.cpCodeLimits", "firstPartyMarketing.cloudletPolicy", "firstPartyMarketingPlus.cloudletPolicy", "forwardRewrite.cloudletPolicy", "imageAndVideoManager.cpCodeOriginal", "imageAndVideoManager.cpCodeOriginal.cpCodeLimits", "imageAndVideoManager.cpCodeTransformed", "imageAndVideoManager.cpCodeTransformed.cpCodeLimits", "imageManager.cpCodeOriginal", "imageManager.cpCodeOriginal.cpCodeLimits", "imageManager.cpCodeTransformed", "imageManager.cpCodeTransformed.cpCodeLimits", "imageManagerVideo.cpCodeOriginal", "imageManagerVideo.cpCodeOriginal.cpCodeLimits", "imageManagerVideo.cpCodeTransformed", "imageManagerVideo.cpCodeTransformed.cpCodeLimits", "origin.netStorage", "phasedRelease.cloudletPolicy", "requestControl.cloudletPolicy", "requestControl.netStorage", "siteShield.ssmap", "visitorPrioritization.cloudletPolicy", "visitorPrioritization.waitingRoomCpCode", "visitorPrioritization.waitingRoomCpCode.cpCodeLimits", "visitorPrioritization.waitingRoomNetStorage", "webApplicationFirewall.firewallConfiguration", "matchCpCode.value", "matchCpCode.value.cpCodeLimits"}, + nameMappings: map[string]string{"allowFcmParentOverride": "allowFCMParentOverride", "allowHttpsCacheKeySharing": "allowHTTPSCacheKeySharing", "allowHttpsDowngrade": "allowHTTPSDowngrade", "allowHttpsUpgrade": "allowHTTPSUpgrade", "c": "C", "canBeCa": "canBeCA", "cn": "CN", "conditionalHttpStatus": "conditionalHTTPStatus", "contentCharacteristicsAmd": "contentCharacteristicsAMD", "contentCharacteristicsDd": "contentCharacteristicsDD", "dcpAuthHmacTransformation": "dcpAuthHMACTransformation", "detectSmartDnsProxy": "detectSmartDNSProxy", "detectSmartDnsProxyAction": "detectSmartDNSProxyAction", "detectSmartDnsProxyRedirecturl": "detectSmartDNSProxyRedirecturl", "enableCmcdSegmentPrefetch": "enableCMCDSegmentPrefetch", "enableEs256": "enableES256", "enableIpAvoidance": "enableIPAvoidance", "enableIpProtection": "enableIPProtection", "enableIpRedirectOnDeny": "enableIPRedirectOnDeny", "enableRs256": "enableRS256", "enableTokenInUri": "enableTokenInURI", "g2OToken": "g2oToken", "g2Oheader": "g2oheader", "i18NCharset": "i18nCharset", "i18NStatus": "i18nStatus", "isCertificateSniOnly": "isCertificateSNIOnly", "issuerRdns": "issuerRDNs", "logEdgeIp": "logEdgeIP", "o": "O", "originSettings": "origin_settings", "ou": "OU", "overrideIpAddresses": "overrideIPAddresses", "segmentDurationDash": "segmentDurationDASH", "segmentDurationDashCustom": "segmentDurationDASHCustom", "segmentDurationHds": "segmentDurationHDS", "segmentDurationHdsCustom": "segmentDurationHDSCustom", "segmentDurationHls": "segmentDurationHLS", "segmentDurationHlsCustom": "segmentDurationHLSCustom", "segmentSizeDash": "segmentSizeDASH", "segmentSizeHds": "segmentSizeHDS", "segmentSizeHls": "segmentSizeHLS", "sf3COriginHost": "sf3cOriginHost", "sf3COriginHostHeader": "sf3cOriginHostHeader", "smartDnsProxy": "smartDNSProxy", "standardTlsMigration": "standardTLSMigration", "standardTlsMigrationOverride": "standardTLSMigrationOverride", "subjectCn": "subjectCN", "subjectRdns": "subjectRDNs", "titleAicMobile": "title_aic_mobile", "titleAicNonmobile": "title_aic_nonmobile", "tokenAuthHlsTitle": "tokenAuthHLSTitle"}, + shouldFlatten: []string{"apiPrioritization.cloudletPolicy", "apiPrioritization.throttledCpCode", "apiPrioritization.throttledCpCode.cpCodeLimits", "apiPrioritization.netStorage", "applicationLoadBalancer.cloudletPolicy", "applicationLoadBalancer.allDownNetStorage", "audienceSegmentation.cloudletPolicy", "cpCode.value", "cpCode.value.cpCodeLimits", "edgeRedirector.cloudletPolicy", "failAction.netStorageHostname", "failAction.cpCode", "failAction.cpCode.cpCodeLimits", "firstPartyMarketing.cloudletPolicy", "firstPartyMarketingPlus.cloudletPolicy", "forwardRewrite.cloudletPolicy", "imageAndVideoManager.cpCodeOriginal", "imageAndVideoManager.cpCodeOriginal.cpCodeLimits", "imageAndVideoManager.cpCodeTransformed", "imageAndVideoManager.cpCodeTransformed.cpCodeLimits", "imageManager.cpCodeOriginal", "imageManager.cpCodeOriginal.cpCodeLimits", "imageManager.cpCodeTransformed", "imageManager.cpCodeTransformed.cpCodeLimits", "imageManagerVideo.cpCodeOriginal", "imageManagerVideo.cpCodeOriginal.cpCodeLimits", "imageManagerVideo.cpCodeTransformed", "imageManagerVideo.cpCodeTransformed.cpCodeLimits", "origin.netStorage", "origin.customCertificateAuthorities.subjectRDNs", "origin.customCertificateAuthorities.issuerRDNs", "origin.customCertificates.subjectRDNs", "origin.customCertificates.issuerRDNs", "phasedRelease.cloudletPolicy", "requestControl.cloudletPolicy", "requestControl.netStorage", "siteShield.ssmap", "visitorPrioritization.cloudletPolicy", "visitorPrioritization.waitingRoomCpCode", "visitorPrioritization.waitingRoomCpCode.cpCodeLimits", "visitorPrioritization.waitingRoomNetStorage", "webApplicationFirewall.firewallConfiguration", "matchCpCode.value", "matchCpCode.value.cpCodeLimits"}, }) } @@ -7094,7 +7094,7 @@ func getBehaviorsSchemaV20230530() map[string]*schema.Schema { "large_file_optimization": { Optional: true, Type: schema.TypeList, - Description: "The `Large File Optimization` feature improves performance and reliability when delivering large files. You need this behavior for objects larger than 1.8GB, and it's recommended for anything over 100MB. You should apply it only to the specific content to be optimized, such as a download directory's `.gz` files, and enable the `useVersioning` option while enforcing your own filename versioning policy. Note that it is best to use `NetStorage` for objects larger than 1.8GB. This behavior can be used in includes.", + Description: "The `Large File Optimization` (LFO) feature improves performance and reliability when delivering large files. You need this behavior for objects larger than 1.8GB, and you should apply it to anything over 100MB. You should apply it only to the specific content to be optimized, such as a download directory's `.gz` files, and enable the `useVersioning` option while enforcing your own filename versioning policy. Make sure you meet all the `requirements and best practices` for the LFO delivery. This behavior can be used in includes.", MaxItems: 1, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -8636,18 +8636,146 @@ func getBehaviorsSchemaV20230530() map[string]*schema.Schema { Type: schema.TypeList, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ - "pem_encoded_cert": { - ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), + "subject_cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "subject_alternative_names": { + Optional: true, + Description: "", + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "subject_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "issuer_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "not_before": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "not_after": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sig_alg_name": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_algorithm": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_format": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "serial_number": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "version": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sha1_fingerprint": { + ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), Optional: true, Description: "", Type: schema.TypeString, }, - "sha1_fingerprint": { - ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), + "pem_encoded_cert": { + ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), Optional: true, Description: "", Type: schema.TypeString, }, + "can_be_leaf": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "can_be_ca": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "self_signed": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, }, }, }, @@ -8657,18 +8785,146 @@ func getBehaviorsSchemaV20230530() map[string]*schema.Schema { Type: schema.TypeList, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ - "pem_encoded_cert": { - ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), + "subject_cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "subject_alternative_names": { + Optional: true, + Description: "", + Type: schema.TypeList, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, + }, + "subject_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "issuer_rdns": { + Optional: true, + Description: "", + Type: schema.TypeList, + MaxItems: 1, + Elem: &schema.Resource{ + Schema: map[string]*schema.Schema{ + "c": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "ou": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "o": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "cn": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + }, + }, + }, + "not_before": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "not_after": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sig_alg_name": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_algorithm": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "public_key_format": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "serial_number": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "version": { + Optional: true, + Description: "", + Type: schema.TypeInt, + }, + "sha1_fingerprint": { + ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), Optional: true, Description: "", Type: schema.TypeString, }, - "sha1_fingerprint": { - ValidateDiagFunc: validateRegexOrVariable("^[a-f0-9]{40}$"), + "pem_encoded_cert": { + ValidateDiagFunc: validateRegexOrVariable("^-----BEGIN CERTIFICATE-----(.|\\s)*-----END CERTIFICATE-----\\s*$"), Optional: true, Description: "", Type: schema.TypeString, }, + "can_be_leaf": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "can_be_ca": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "self_signed": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, }, }, }, @@ -11800,6 +12056,22 @@ func getBehaviorsSchemaV20230530() map[string]*schema.Schema { Description: "", Type: schema.TypeString, }, + "china_cdn_map": { + Optional: true, + Description: "", + Type: schema.TypeString, + }, + "has_mixed_hosts": { + Optional: true, + Description: "", + Type: schema.TypeBool, + }, + "src": { + ValidateDiagFunc: validation.ToDiagFunc(validation.StringInSlice([]string{"FALLBACK", "PROTECTED_HOST_MATCH", "ORIGIN_MATCH", "PREVIOUS_MAP", "PROPERTY_MATCH"}, false)), + Optional: true, + Description: "", + Type: schema.TypeString, + }, }, }, }, diff --git a/pkg/providers/property/ruleformats/rules_schema_reader.go b/pkg/providers/property/ruleformats/rules_schema_reader.go index 3cc1671e5..0cf09fa67 100644 --- a/pkg/providers/property/ruleformats/rules_schema_reader.go +++ b/pkg/providers/property/ruleformats/rules_schema_reader.go @@ -148,7 +148,7 @@ func (r *RulesSchemaReader) getCustomOverride(key string) (*papi.RuleCustomOverr return nil, &TypeAssertionError{"[]any", typeof(rawVal), key} } if len(val) == 0 { - return nil, nil + return nil, &NotFoundError{key} } override, ok := val[0].(map[string]any) if !ok { @@ -197,6 +197,9 @@ func (r *RulesSchemaReader) getRuleItems(key string) ([]RuleItem, error) { return nil, &TypeAssertionError{"[]any", typeof(rawVal), key} } + if len(listVal) == 0 { + return nil, &NotFoundError{key} + } listUnpacked := make([]RuleItem, 0, len(listVal)) for i, val := range listVal { diff --git a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default.json b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default.json index f0e884669..6dfdc9bca 100755 --- a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default.json +++ b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default.json @@ -146,6 +146,21 @@ "loaderVersion": "V12", "requirePci": false } + }, + { + "name": "corsSupport", + "options": { + "allowCredentials": false, + "allowHeaders": "ANY", + "allowOrigins": "ANY", + "enabled": true, + "exposeHeaders": [], + "methods": [ + "GET", + "POST" + ], + "preflightMaxAge": "600s" + } } ], "children": [ diff --git a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default_v2023_05_30.json b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default_v2023_05_30.json index a1bf1acda..087106b2d 100755 --- a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default_v2023_05_30.json +++ b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/default_v2023_05_30.json @@ -32,6 +32,17 @@ "options": { "cacheKeyHostname": "ORIGIN_HOSTNAME", "compress": true, + "customCertificates": [ + { + "canBeCA": false, + "canBeLeaf": true, + "issuerRDNs": { + "C": "US", + "CN": "DigiCert TLS RSA SHA256 2020 CA1", + "O": "DigiCert Inc" + } + } + ], "enableTrueClientIp": true, "forwardHostHeader": "REQUEST_HOST_HEADER", "httpPort": 80, diff --git a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_01_05.tf b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_01_05.tf index 031ddb3c9..5f73153e1 100644 --- a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_01_05.tf +++ b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_01_05.tf @@ -153,6 +153,17 @@ EOT } } + behavior { + cors_support { + allow_credentials = false + allow_headers = "ANY" + allow_origins = "ANY" + enabled = true + expose_headers = [] + methods = ["GET", "POST", ] + preflight_max_age = "600s" + } + } children = [ data.akamai_property_rules_builder.content_compression.json, data.akamai_property_rules_builder.static_content.json, diff --git a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_05_30.tf b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_05_30.tf index 0875fcec1..d44f8939c 100644 --- a/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_05_30.tf +++ b/pkg/providers/property/testdata/TestDSPropertyRulesBuilder/rules_v2023_05_30.tf @@ -53,6 +53,15 @@ data "akamai_property_rules_builder" "default" { true_client_ip_header = "True-Client-IP" use_unique_cache_key = false verification_mode = "PLATFORM_SETTINGS" + custom_certificates { + can_be_ca = false + can_be_leaf = true + issuer_rdns { + c = "US" + cn = "DigiCert TLS RSA SHA256 2020 CA1" + o = "DigiCert Inc" + } + } } } behavior { diff --git a/pkg/providers/property/testdata/TestPropertyActivation/500_on_activation/resource_property_activation_update.tf b/pkg/providers/property/testdata/TestPropertyActivation/500_on_activation/resource_property_activation_update.tf index 2d32c2e4d..a51dfa37d 100644 --- a/pkg/providers/property/testdata/TestPropertyActivation/500_on_activation/resource_property_activation_update.tf +++ b/pkg/providers/property/testdata/TestPropertyActivation/500_on_activation/resource_property_activation_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_property_activation" "test" { property_id = "prp_test" network = "STAGING" diff --git a/pkg/providers/property/testdata/TestPropertyActivation/diff_suppress/resource_property_activation_update.tf b/pkg/providers/property/testdata/TestPropertyActivation/diff_suppress/resource_property_activation_update.tf index 2a1a6479d..977831f47 100644 --- a/pkg/providers/property/testdata/TestPropertyActivation/diff_suppress/resource_property_activation_update.tf +++ b/pkg/providers/property/testdata/TestPropertyActivation/diff_suppress/resource_property_activation_update.tf @@ -1,3 +1,6 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} resource "akamai_property_activation" "test" { property_id = "test" diff --git a/pkg/providers/property/testdata/TestResProperty/Lifecycle/rules with variables/step1.tf b/pkg/providers/property/testdata/TestResProperty/Lifecycle/rules with variables/step1.tf index 8132bc255..062ea1c41 100644 --- a/pkg/providers/property/testdata/TestResProperty/Lifecycle/rules with variables/step1.tf +++ b/pkg/providers/property/testdata/TestResProperty/Lifecycle/rules with variables/step1.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_property" "test" { contract_id = "ctr_0" group_id = "grp_0" diff --git a/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_activation_update.tf b/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_activation_update.tf index cd4df5121..ba60816a8 100644 --- a/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_activation_update.tf +++ b/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_activation_update.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_property_include_activation" "activation" { include_id = "12345" contract_id = "test_contract" diff --git a/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_update_note_not_suppressed.tf b/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_update_note_not_suppressed.tf index 0a6f15e1e..80eade1eb 100644 --- a/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_update_note_not_suppressed.tf +++ b/pkg/providers/property/testdata/TestResPropertyIncludeActivation/property_include_update_note_not_suppressed.tf @@ -1,3 +1,7 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + resource "akamai_property_include_activation" "activation" { include_id = "12345" contract_id = "test_contract" diff --git a/pkg/providers/property/testdata/TestResourceEdgeHostname/new_akamaized_ipv4_with_email.tf b/pkg/providers/property/testdata/TestResourceEdgeHostname/new_akamaized_ipv4_with_email.tf new file mode 100644 index 000000000..8373054f3 --- /dev/null +++ b/pkg/providers/property/testdata/TestResourceEdgeHostname/new_akamaized_ipv4_with_email.tf @@ -0,0 +1,16 @@ +provider "akamai" { + edgerc = "../../test/edgerc" +} + +resource "akamai_edge_hostname" "edgehostname" { + contract_id = "ctr_2" + group_id = "grp_2" + product_id = "prd_2" + edge_hostname = "test.akamaized.net" + ip_behavior = "IPV4" + status_update_email = ["hello@akamai.com"] +} + +output "edge_hostname" { + value = akamai_edge_hostname.edgehostname.edge_hostname +} diff --git a/scripts/dummyedgerc.sh b/scripts/dummyedgerc.sh deleted file mode 100755 index cd1d3a485..000000000 --- a/scripts/dummyedgerc.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/usr/bin/env bash - -# Create a dummy .edgerc file -cat < ~/.edgerc -[default] -client_secret = -host = -access_token = -client_token = -EOT \ No newline at end of file diff --git a/scripts/golint.sh b/scripts/golint.sh deleted file mode 100755 index d55f6403a..000000000 --- a/scripts/golint.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash - -echo "==> Checking for linting errors..." - -if ! which golint > /dev/null; then - echo "==> Installing go lint..." - go get -u github.com/golang/lint/golint -fi - -lint_files=$($GOBIN/golint -set_exit_status $(go list ./...)) - -if [[ -n ${lint_files} ]]; then - echo 'Linting errors found in the following places:' - echo "${lint_files}" - echo "Please handle returned errors. You can check directly with \`make lint\`" - exit 1 -fi - -exit 0 diff --git a/scripts/install_terraform.sh b/scripts/install_terraform.sh index b0eaf7a3e..4b0e03cf5 100755 --- a/scripts/install_terraform.sh +++ b/scripts/install_terraform.sh @@ -1,11 +1,13 @@ #!/usr/bin/env bash -VERSION="1.4.6" +VERSION="${TERRAFORM_VERSION:-1.4.6}" +VERSION="${VERSION#v}" -[[ -n $(which terraform) ]] && echo "Terraform already installed" && exit 0 +if [[ -n $(which terraform) && "$(terraform --version | sed 1q | cut -f2 -d" " | cut -c2-)" == "$VERSION" ]]; then + echo "Terraform $VERSION is installed" && exit 0 +fi echo "Installing terraform $VERSION" -curl -fSL "https://releases.hashicorp.com/terraform/${VERSION}/terraform_${VERSION}_linux_amd64.zip" -o terraform.zip -sudo unzip terraform.zip -d /opt/terraform -sudo ln -s /opt/terraform/terraform /usr/bin/terraform +curl -fSL "https://releases.hashicorp.com/terraform/${VERSION}/terraform_${VERSION}_$(go env GOOS)_$(go env GOARCH).zip" -o terraform.zip +unzip terraform.zip -d /usr/local/bin rm -f terraform.zip \ No newline at end of file diff --git a/tools/go.mod b/tools/go.mod new file mode 100644 index 000000000..1186b4beb --- /dev/null +++ b/tools/go.mod @@ -0,0 +1,235 @@ +module github.com/akamai/terraform-provider-akamai/tools + +go 1.18 + +require ( + github.com/golangci/golangci-lint v1.50.1 + github.com/terraform-linters/tflint v0.45.0 + golang.org/x/tools v0.12.0 +) + +require ( + 4d63.com/gochecknoglobals v0.1.0 // indirect + cloud.google.com/go v0.105.0 // indirect + cloud.google.com/go/compute v1.12.1 // indirect + cloud.google.com/go/compute/metadata v0.2.1 // indirect + cloud.google.com/go/iam v0.7.0 // indirect + cloud.google.com/go/storage v1.27.0 // indirect + github.com/Abirdcfly/dupword v0.0.7 // indirect + github.com/Antonboom/errname v0.1.7 // indirect + github.com/Antonboom/nilnil v0.1.1 // indirect + github.com/BurntSushi/toml v1.2.1 // indirect + github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 // indirect + github.com/Masterminds/semver v1.5.0 // indirect + github.com/Masterminds/semver/v3 v3.2.0 // indirect + github.com/OpenPeeDeeP/depguard v1.1.1 // indirect + github.com/agext/levenshtein v1.2.3 // indirect + github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alingse/asasalint v0.0.11 // indirect + github.com/apparentlymart/go-cidr v1.1.0 // indirect + github.com/apparentlymart/go-textseg/v13 v13.0.0 // indirect + github.com/ashanbrown/forbidigo v1.3.0 // indirect + github.com/ashanbrown/makezero v1.1.1 // indirect + github.com/aws/aws-sdk-go v1.42.43 // indirect + github.com/beorn7/perks v1.0.1 // indirect + github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect + github.com/bkielbasa/cyclop v1.2.0 // indirect + github.com/blizzy78/varnamelen v0.8.0 // indirect + github.com/bmatcuk/doublestar v1.1.5 // indirect + github.com/bombsimon/wsl/v3 v3.3.0 // indirect + github.com/breml/bidichk v0.2.3 // indirect + github.com/breml/errchkjson v0.3.0 // indirect + github.com/butuzov/ireturn v0.1.1 // indirect + github.com/cespare/xxhash/v2 v2.1.2 // indirect + github.com/charithe/durationcheck v0.0.9 // indirect + github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 // indirect + github.com/curioswitch/go-reassign v0.2.0 // indirect + github.com/daixiang0/gci v0.8.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/denis-tingaikin/go-header v0.4.3 // indirect + github.com/esimonov/ifshort v1.0.4 // indirect + github.com/ettle/strcase v0.1.1 // indirect + github.com/fatih/color v1.14.1 // indirect + github.com/fatih/structtag v1.2.0 // indirect + github.com/firefart/nonamedreturns v1.0.4 // indirect + github.com/fsnotify/fsnotify v1.5.4 // indirect + github.com/fzipp/gocyclo v0.6.0 // indirect + github.com/go-critic/go-critic v0.6.5 // indirect + github.com/go-toolsmith/astcast v1.0.0 // indirect + github.com/go-toolsmith/astcopy v1.0.2 // indirect + github.com/go-toolsmith/astequal v1.0.3 // indirect + github.com/go-toolsmith/astfmt v1.0.0 // indirect + github.com/go-toolsmith/astp v1.0.0 // indirect + github.com/go-toolsmith/strparse v1.0.0 // indirect + github.com/go-toolsmith/typep v1.0.2 // indirect + github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b // indirect + github.com/gobwas/glob v0.2.3 // indirect + github.com/gofrs/flock v0.8.1 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/golang/protobuf v1.5.2 // indirect + github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 // indirect + github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a // indirect + github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe // indirect + github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 // indirect + github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 // indirect + github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca // indirect + github.com/golangci/misspell v0.3.5 // indirect + github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 // indirect + github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 // indirect + github.com/google/go-cmp v0.5.9 // indirect + github.com/google/go-github/v35 v35.3.0 // indirect + github.com/google/go-querystring v1.0.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.2.0 // indirect + github.com/googleapis/gax-go/v2 v2.6.0 // indirect + github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 // indirect + github.com/gostaticanalysis/analysisutil v0.7.1 // indirect + github.com/gostaticanalysis/comment v1.4.2 // indirect + github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect + github.com/gostaticanalysis/nilerr v0.1.1 // indirect + github.com/hashicorp/errwrap v1.0.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-getter v1.6.2 // indirect + github.com/hashicorp/go-hclog v1.4.0 // indirect + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/hashicorp/go-plugin v1.4.8 // indirect + github.com/hashicorp/go-safetemp v1.0.0 // indirect + github.com/hashicorp/go-uuid v1.0.3 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/hashicorp/hcl/v2 v2.16.0 // indirect + github.com/hashicorp/logutils v1.0.0 // indirect + github.com/hashicorp/terraform-registry-address v0.1.0 // indirect + github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 // indirect + github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d // indirect + github.com/hexops/gotextdiff v1.0.3 // indirect + github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/jessevdk/go-flags v1.5.0 // indirect + github.com/jgautheron/goconst v1.5.1 // indirect + github.com/jingyugao/rowserrcheck v1.1.1 // indirect + github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/jstemmer/go-junit-report v1.0.0 // indirect + github.com/julz/importas v0.1.0 // indirect + github.com/kisielk/errcheck v1.6.2 // indirect + github.com/kisielk/gotool v1.0.0 // indirect + github.com/kkHAIKE/contextcheck v1.1.3 // indirect + github.com/klauspost/compress v1.11.2 // indirect + github.com/kulti/thelper v0.6.3 // indirect + github.com/kunwardeep/paralleltest v1.0.6 // indirect + github.com/kyoh86/exportloopref v0.1.8 // indirect + github.com/ldez/gomoddirectives v0.2.3 // indirect + github.com/ldez/tagliatelle v0.3.1 // indirect + github.com/leonklingele/grouper v1.1.0 // indirect + github.com/lufeee/execinquery v1.2.1 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/maratori/testableexamples v1.0.0 // indirect + github.com/maratori/testpackage v1.1.0 // indirect + github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect + github.com/mattn/go-colorable v0.1.13 // indirect + github.com/mattn/go-isatty v0.0.17 // indirect + github.com/mattn/go-runewidth v0.0.9 // indirect + github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect + github.com/mbilski/exhaustivestruct v1.2.0 // indirect + github.com/mgechev/revive v1.2.4 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/go-testing-interface v1.14.1 // indirect + github.com/mitchellh/go-wordwrap v1.0.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/moricho/tparallel v0.2.1 // indirect + github.com/nakabonne/nestif v0.3.1 // indirect + github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect + github.com/nishanths/exhaustive v0.8.3 // indirect + github.com/nishanths/predeclared v0.2.2 // indirect + github.com/oklog/run v1.0.0 // indirect + github.com/olekukonko/tablewriter v0.0.5 // indirect + github.com/owenrumney/go-sarif v1.1.1 // indirect + github.com/pelletier/go-toml v1.9.5 // indirect + github.com/pelletier/go-toml/v2 v2.0.5 // indirect + github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/polyfloyd/go-errorlint v1.0.5 // indirect + github.com/prometheus/client_golang v1.12.1 // indirect + github.com/prometheus/client_model v0.2.0 // indirect + github.com/prometheus/common v0.32.1 // indirect + github.com/prometheus/procfs v0.7.3 // indirect + github.com/quasilyte/go-ruleguard v0.3.18 // indirect + github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f // indirect + github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 // indirect + github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 // indirect + github.com/ryancurrah/gomodguard v1.2.4 // indirect + github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect + github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect + github.com/sashamelentyev/interfacebloat v1.1.0 // indirect + github.com/sashamelentyev/usestdlibvars v1.20.0 // indirect + github.com/securego/gosec/v2 v2.13.1 // indirect + github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect + github.com/sirupsen/logrus v1.9.0 // indirect + github.com/sivchari/containedctx v1.0.2 // indirect + github.com/sivchari/nosnakecase v1.7.0 // indirect + github.com/sivchari/tenv v1.7.0 // indirect + github.com/sonatard/noctx v0.0.1 // indirect + github.com/sourcegraph/go-diff v0.6.1 // indirect + github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d // indirect + github.com/sourcegraph/jsonrpc2 v0.1.0 // indirect + github.com/spf13/afero v1.9.3 // indirect + github.com/spf13/cast v1.5.0 // indirect + github.com/spf13/cobra v1.6.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.12.0 // indirect + github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect + github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect + github.com/stretchr/objx v0.4.0 // indirect + github.com/stretchr/testify v1.8.0 // indirect + github.com/subosito/gotenv v1.4.1 // indirect + github.com/tdakkota/asciicheck v0.1.1 // indirect + github.com/terraform-linters/tflint-plugin-sdk v0.15.0 // indirect + github.com/terraform-linters/tflint-ruleset-terraform v0.2.2 // indirect + github.com/tetafro/godot v1.4.11 // indirect + github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect + github.com/timonwong/loggercheck v0.9.3 // indirect + github.com/tomarrell/wrapcheck/v2 v2.7.0 // indirect + github.com/tommy-muehle/go-mnd/v2 v2.5.1 // indirect + github.com/ulikunitz/xz v0.5.8 // indirect + github.com/ultraware/funlen v0.0.3 // indirect + github.com/ultraware/whitespace v0.0.5 // indirect + github.com/uudashr/gocognit v1.0.6 // indirect + github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect + github.com/vmihailenco/tagparser v0.1.1 // indirect + github.com/yagipy/maintidx v1.0.0 // indirect + github.com/yeya24/promlinter v0.2.0 // indirect + github.com/zclconf/go-cty v1.12.1 // indirect + github.com/zclconf/go-cty-yaml v1.0.3 // indirect + gitlab.com/bosi/decorder v0.2.3 // indirect + go.opencensus.io v0.23.0 // indirect + go.uber.org/atomic v1.7.0 // indirect + go.uber.org/multierr v1.6.0 // indirect + go.uber.org/zap v1.17.0 // indirect + golang.org/x/crypto v0.12.0 // indirect + golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect + golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 // indirect + golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect + golang.org/x/mod v0.12.0 // indirect + golang.org/x/net v0.14.0 // indirect + golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect + golang.org/x/sync v0.3.0 // indirect + golang.org/x/sys v0.11.0 // indirect + golang.org/x/text v0.12.0 // indirect + golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect + google.golang.org/api v0.102.0 // indirect + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 // indirect + google.golang.org/grpc v1.52.3 // indirect + google.golang.org/protobuf v1.28.1 // indirect + gopkg.in/ini.v1 v1.67.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect + honnef.co/go/tools v0.3.3 // indirect + mvdan.cc/gofumpt v0.4.0 // indirect + mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect + mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect + mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect +) diff --git a/tools/go.sum b/tools/go.sum new file mode 100644 index 000000000..8fc410794 --- /dev/null +++ b/tools/go.sum @@ -0,0 +1,1128 @@ +4d63.com/gochecknoglobals v0.1.0 h1:zeZSRqj5yCg28tCkIV/z/lWbwvNm5qnKVS15PI8nhD0= +4d63.com/gochecknoglobals v0.1.0/go.mod h1:wfdC5ZjKSPr7CybKEcgJhUOgeAQW1+7WcyK8OvUilfo= +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.105.0 h1:DNtEKRBAAzeS4KyIory52wWHuClNaXJ5x1F7xa4q+5Y= +cloud.google.com/go v0.105.0/go.mod h1:PrLgOJNe5nfE9UMxKxgXj4mD3voiP+YQ6gdt6KMFOKM= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v1.12.1 h1:gKVJMEyqV5c/UnpzjjQbo3Rjvvqpr9B1DFSbJC4OXr0= +cloud.google.com/go/compute v1.12.1/go.mod h1:e8yNOBcBONZU1vJKCvCoDw/4JQsA0dpM4x/6PIIOocU= +cloud.google.com/go/compute/metadata v0.2.1 h1:efOwf5ymceDhK6PKMnnrTHP4pppY5L22mle96M1yP48= +cloud.google.com/go/compute/metadata v0.2.1/go.mod h1:jgHgmJd2RKBGzXqF5LR2EZMGxBkeanZ9wwa75XHJgOM= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/iam v0.7.0 h1:k4MuwOsS7zGJJ+QfZ5vBK8SgHBAvYN/23BWsiihJ1vs= +cloud.google.com/go/iam v0.7.0/go.mod h1:H5Br8wRaDGNc8XP3keLc4unfUUZeyH3Sfl9XpQEYOeg= +cloud.google.com/go/longrunning v0.3.0 h1:NjljC+FYPV3uh5/OwWT6pVU+doBqMg2x/rZlE+CamDs= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +cloud.google.com/go/storage v1.27.0 h1:YOO045NZI9RKfCj1c5A/ZtuuENUc8OAW+gHdGnDgyMQ= +cloud.google.com/go/storage v1.27.0/go.mod h1:x9DOL8TK/ygDUMieqwfhdpQryTeEkhGKMi80i/iqR2s= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +github.com/Abirdcfly/dupword v0.0.7 h1:z14n0yytA3wNO2gpCD/jVtp/acEXPGmYu0esewpBt6Q= +github.com/Abirdcfly/dupword v0.0.7/go.mod h1:K/4M1kj+Zh39d2aotRwypvasonOyAMH1c/IZJzE0dmk= +github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako= +github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= +github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q= +github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= +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/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= +github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0 h1:+r1rSv4gvYn0wmRjC8X7IAzX8QezqtFV9m0MUHFJgts= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.3.0/go.mod h1:b3g59n2Y+T5xmcxJL+UEG2f8cQploZm1mR/v6BW0mU0= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= +github.com/Masterminds/semver/v3 v3.2.0 h1:3MEsd0SM6jqZojhjLWWeBY+Kcjy9i6MQAeY7YgDP83g= +github.com/Masterminds/semver/v3 v3.2.0/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= +github.com/OpenPeeDeeP/depguard v1.1.1 h1:TSUznLjvp/4IUP+OQ0t/4jF4QUyxIcVX8YnghZdunyA= +github.com/OpenPeeDeeP/depguard v1.1.1/go.mod h1:JtAMzWkmFEzDPyAd+W0NHl1lvpQKTvT9jnRVsohBKpc= +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/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= +github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alingse/asasalint v0.0.11 h1:SFwnQXJ49Kx/1GghOFz1XGqHYKp21Kq1nHad/0WQRnw= +github.com/alingse/asasalint v0.0.11/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= +github.com/apparentlymart/go-cidr v1.1.0 h1:2mAhrMoF+nhXqxTzSZMUzDHkLjmIHC+Zzn4tdgBZjnU= +github.com/apparentlymart/go-cidr v1.1.0/go.mod h1:EBcsNrHc3zQeuaeCeCtQruQm+n9/YjEn/vI25Lg7Gwc= +github.com/apparentlymart/go-dump v0.0.0-20180507223929-23540a00eaa3 h1:ZSTrOEhiM5J5RFxEaFvMZVEAM1KvT1YzbEOwB2EAGjA= +github.com/apparentlymart/go-textseg v1.0.0/go.mod h1:z96Txxhf3xSFMPmb5X/1W05FF/Nj9VFpLOpjS5yuumk= +github.com/apparentlymart/go-textseg/v13 v13.0.0 h1:Y+KvPE1NYz0xl601PVImeQfFyEy6iT90AvPUL1NNfNw= +github.com/apparentlymart/go-textseg/v13 v13.0.0/go.mod h1:ZK2fH7c4NqDTLtiYLvIkEghdlcqw7yxLeM89kiTRPUo= +github.com/ashanbrown/forbidigo v1.3.0 h1:VkYIwb/xxdireGAdJNZoo24O4lmnEWkactplBlWTShc= +github.com/ashanbrown/forbidigo v1.3.0/go.mod h1:vVW7PEdqEFqapJe95xHkTfB1+XvZXBFg8t0sG2FIxmI= +github.com/ashanbrown/makezero v1.1.1 h1:iCQ87C0V0vSyO+M9E/FZYbu65auqH0lnsOkf5FcB28s= +github.com/ashanbrown/makezero v1.1.1/go.mod h1:i1bJLCRSCHOcOa9Y6MyF2FTfMZMFdHvxKHxgO5Z1axI= +github.com/aws/aws-sdk-go v1.15.78/go.mod h1:E3/ieXAlvM0XWO57iftYVDLLvQ824smPP3ATZkfNZeM= +github.com/aws/aws-sdk-go v1.42.43 h1:rLcxH9YgI3zN7TnjBn1Z6V62GPjOEW1IQd0m11Y/nXE= +github.com/aws/aws-sdk-go v1.42.43/go.mod h1:OGr6lGMAKGlG9CVrYnWYDKIyb829c6EVBRjxqjmPepc= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d h1:xDfNPAt8lFiC1UJrqV3uuy861HCTo708pDMbjHHdCas= +github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d/go.mod h1:6QX/PXZ00z/TKoufEY6K/a0k6AhaJrQKdFe6OfVXsa4= +github.com/bkielbasa/cyclop v1.2.0 h1:7Jmnh0yL2DjKfw28p86YTd/B4lRGcNuu12sKE35sM7A= +github.com/bkielbasa/cyclop v1.2.0/go.mod h1:qOI0yy6A7dYC4Zgsa72Ppm9kONl0RoIlPbzot9mhmeI= +github.com/blizzy78/varnamelen v0.8.0 h1:oqSblyuQvFsW1hbBHh1zfwrKe3kcSj0rnXkKzsQ089M= +github.com/blizzy78/varnamelen v0.8.0/go.mod h1:V9TzQZ4fLJ1DSrjVDfl89H7aMnTvKkApdHeyESmyR7k= +github.com/bmatcuk/doublestar v1.1.5 h1:2bNwBOmhyFEFcoB3tGvTD5xanq+4kyOZlB8wFYbMjkk= +github.com/bmatcuk/doublestar v1.1.5/go.mod h1:wiQtGV+rzVYxB7WIlirSN++5HPtPlXEo9MEoZQC/PmE= +github.com/bombsimon/wsl/v3 v3.3.0 h1:Mka/+kRLoQJq7g2rggtgQsjuI/K5Efd87WX96EWFxjM= +github.com/bombsimon/wsl/v3 v3.3.0/go.mod h1:st10JtZYLE4D5sC7b8xV4zTKZwAQjCH/Hy2Pm1FNZIc= +github.com/breml/bidichk v0.2.3 h1:qe6ggxpTfA8E75hdjWPZ581sY3a2lnl0IRxLQFelECI= +github.com/breml/bidichk v0.2.3/go.mod h1:8u2C6DnAy0g2cEq+k/A2+tr9O1s+vHGxWn0LTc70T2A= +github.com/breml/errchkjson v0.3.0 h1:YdDqhfqMT+I1vIxPSas44P+9Z9HzJwCeAzjB8PxP1xw= +github.com/breml/errchkjson v0.3.0/go.mod h1:9Cogkyv9gcT8HREpzi3TiqBxCqDzo8awa92zSDFcofU= +github.com/butuzov/ireturn v0.1.1 h1:QvrO2QF2+/Cx1WA/vETCIYBKtRjc30vesdoPUNo1EbY= +github.com/butuzov/ireturn v0.1.1/go.mod h1:Wh6Zl3IMtTpaIKbmwzqi6olnM9ptYQxxVacMsOEFPoc= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/charithe/durationcheck v0.0.9 h1:mPP4ucLrf/rKZiIG/a9IPXHGlh8p4CzgpyTy6EEutYk= +github.com/charithe/durationcheck v0.0.9/go.mod h1:SSbRIBVfMjCi/kEB6K65XEA83D6prSM8ap1UCpNKtgg= +github.com/chavacava/garif v0.0.0-20220630083739-93517212f375 h1:E7LT642ysztPWE0dfz43cWOvMiF42DyTRC+eZIaO4yI= +github.com/chavacava/garif v0.0.0-20220630083739-93517212f375/go.mod h1:4m1Rv7xfuwWPNKXlThldNuJvutYM6J95wNuuVmn55To= +github.com/cheggaaa/pb v1.0.27/go.mod h1:pQciLPpbU0oxA0h+VJYYLxO+XeDQb5pZijXscXHm81s= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cristalhq/acmd v0.8.1/go.mod h1:LG5oa43pE/BbxtfMoImHCQN++0Su7dzipdgBjMCBVDQ= +github.com/curioswitch/go-reassign v0.2.0 h1:G9UZyOcpk/d7Gd6mqYgd8XYWFMw/znxwGDUstnC9DIo= +github.com/curioswitch/go-reassign v0.2.0/go.mod h1:x6OpXuWvgfQaMGks2BZybTngWjT84hqJfKoO8Tt/Roc= +github.com/daixiang0/gci v0.8.1 h1:T4xpSC+hmsi4CSyuYfIJdMZAr9o7xZmHpQVygMghGZ4= +github.com/daixiang0/gci v0.8.1/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/denis-tingaikin/go-header v0.4.3 h1:tEaZKAlqql6SKCY++utLmkPLd6K8IBM20Ha7UVm+mtU= +github.com/denis-tingaikin/go-header v0.4.3/go.mod h1:0wOCWuN71D5qIgE2nz9KrKmuYBAC2Mra5RassOIQ2/c= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/esimonov/ifshort v1.0.4 h1:6SID4yGWfRae/M7hkVDVVyppy8q/v9OuxNdmjLQStBA= +github.com/esimonov/ifshort v1.0.4/go.mod h1:Pe8zjlRrJ80+q2CxHLfEOfTwxCZ4O+MuhcHcfgNWTk0= +github.com/ettle/strcase v0.1.1 h1:htFueZyVeE1XNnMEfbqp5r67qAN/4r6ya1ysq8Q+Zcw= +github.com/ettle/strcase v0.1.1/go.mod h1:hzDLsPC7/lwKyBOywSHEP89nt2pDgdy+No1NBA9o9VY= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/color v1.14.1 h1:qfhVLaG5s+nCROl1zJsZRxFeYrHLqWroPOQ8BWiNb4w= +github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= +github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4= +github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= +github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= +github.com/frankban/quicktest v1.14.3 h1:FJKSZTDHjyhriyC81FLQ0LY93eSai0ZyR/ZIkd3ZUKE= +github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= +github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= +github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/go-critic/go-critic v0.6.5 h1:fDaR/5GWURljXwF8Eh31T2GZNz9X4jeboS912mWF8Uo= +github.com/go-critic/go-critic v0.6.5/go.mod h1:ezfP/Lh7MA6dBNn4c6ab5ALv3sKnZVLx37tr00uuaOY= +github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.1.0 h1:WOcxcdHcvdgThNXjw0t76K42FXTU7HpNQWHpA2HHNlg= +github.com/go-toolsmith/astcast v1.0.0 h1:JojxlmI6STnFVG9yOImLeGREv8W2ocNUM+iOhR6jE7g= +github.com/go-toolsmith/astcast v1.0.0/go.mod h1:mt2OdQTeAQcY4DQgPSArJjHCcOwlX+Wl/kwN+LbLGQ4= +github.com/go-toolsmith/astcopy v1.0.2 h1:YnWf5Rnh1hUudj11kei53kI57quN/VH6Hp1n+erozn0= +github.com/go-toolsmith/astcopy v1.0.2/go.mod h1:4TcEdbElGc9twQEYpVo/aieIXfHhiuLh4aLAck6dO7Y= +github.com/go-toolsmith/astequal v1.0.0/go.mod h1:H+xSiq0+LtiDC11+h1G32h7Of5O3CYFJ99GVbS5lDKY= +github.com/go-toolsmith/astequal v1.0.2/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astequal v1.0.3 h1:+LVdyRatFS+XO78SGV4I3TCEA0AC7fKEGma+fH+674o= +github.com/go-toolsmith/astequal v1.0.3/go.mod h1:9Ai4UglvtR+4up+bAD4+hCj7iTo4m/OXVTSLnCyTAx4= +github.com/go-toolsmith/astfmt v1.0.0 h1:A0vDDXt+vsvLEdbMFJAUBI/uTbRw1ffOPnxsILnFL6k= +github.com/go-toolsmith/astfmt v1.0.0/go.mod h1:cnWmsOAuq4jJY6Ct5YWlVLmcmLMn1JUPuQIHCY7CJDw= +github.com/go-toolsmith/astp v1.0.0 h1:alXE75TXgcmupDsMK1fRAy0YUzLzqPVvBKoyWV+KPXg= +github.com/go-toolsmith/astp v1.0.0/go.mod h1:RSyrtpVlfTFGDYRbrjyWP1pYu//tSFcvdYrA8meBmLI= +github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5 h1:eD9POs68PHkwrx7hAB78z1cb6PfGq/jyWn3wJywsH1o= +github.com/go-toolsmith/pkgload v1.0.2-0.20220101231613-e814995d17c5/go.mod h1:3NAwwmD4uY/yggRxoEjk/S00MIV3A+H7rrE3i87eYxM= +github.com/go-toolsmith/strparse v1.0.0 h1:Vcw78DnpCAKlM20kSbAyO4mPfJn/lyYA4BJUDxe2Jb4= +github.com/go-toolsmith/strparse v1.0.0/go.mod h1:YI2nUKP9YGZnL/L1/DLFBfixrcjslWct4wyljWhSRy8= +github.com/go-toolsmith/typep v1.0.2 h1:8xdsa1+FSIH/RhEkgnD1j2CJOy5mNllW1Q9tRiYwvlk= +github.com/go-toolsmith/typep v1.0.2/go.mod h1:JSQCQMUPdRlMZFswiq3TGpNp1GMktqkR2Ns5AIQkATU= +github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b h1:khEcpUM4yFcxg4/FHQWkvVRmgijNXRfzkIDHh23ggEo= +github.com/go-xmlfmt/xmlfmt v0.0.0-20191208150333-d5b6f63a941b/go.mod h1:aUCEOzzezBEjDBbFBoSiya/gduyIiWYRP6CnSFIV8AM= +github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y= +github.com/gobwas/glob v0.2.3/go.mod h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2 h1:23T5iq8rbUYlhpt5DB4XJkc6BU31uODLD1o1gKvZmD0= +github.com/golangci/check v0.0.0-20180506172741-cfe4005ccda2/go.mod h1:k9Qvh+8juN+UKMCS/3jFtGICgW8O96FVaZsaxdzDkR4= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a h1:w8hkcTqaFpzKqonE9uMCefW1WDie15eSP/4MssdenaM= +github.com/golangci/dupl v0.0.0-20180902072040-3e9179ac440a/go.mod h1:ryS0uhF+x9jgbj/N71xsEqODy9BN81/GonCZiOzirOk= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6J5HIP8ZtyMdiDscjMLfRBSPuzVVeo= +github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= +github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2 h1:amWTbTGqOZ71ruzrdA+Nx5WA3tV1N0goTspwmKCQvBY= +github.com/golangci/gofmt v0.0.0-20220901101216-f2edd75033f2/go.mod h1:9wOXstvyDRshQ9LggQuzBCGysxs3b6Uo/1MvYCR2NMs= +github.com/golangci/golangci-lint v1.50.1 h1:C829clMcZXEORakZlwpk7M4iDw2XiwxxKaG504SZ9zY= +github.com/golangci/golangci-lint v1.50.1/go.mod h1:AQjHBopYS//oB8xs0y0M/dtxdKHkdhl0RvmjUct0/4w= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= +github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= +github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca/go.mod h1:tvlJhZqDe4LMs4ZHD0oMUlt9G2LWuDGoisJTBzLMV9o= +github.com/golangci/misspell v0.3.5 h1:pLzmVdl3VxTOncgzHcvLOKirdvcx/TydsClUQXTehjo= +github.com/golangci/misspell v0.3.5/go.mod h1:dEbvlSfYbMQDtrpRMQU675gSDLDNa8sCPPChZ7PhiVA= +github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6 h1:DIPQnGy2Gv2FSA4B/hh8Q7xx3B7AIDk3DAMeHclH1vQ= +github.com/golangci/revgrep v0.0.0-20220804021717-745bb2f7c2e6/go.mod h1:0AKcRCkMoKvUvlf89F6O7H2LYdhr1zBh736mBItOdRs= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSWhqsYNgcuWO2kFlpdOZbP0+yRjmvPGys= +github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/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.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= +github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-github/v35 v35.3.0 h1:fU+WBzuukn0VssbayTT+Zo3/ESKX9JYWjbZTLOTEyho= +github.com/google/go-github/v35 v35.3.0/go.mod h1:yWB7uCcVWaUbUP74Aq3whuMySRMatyRmq5U9FTNlbio= +github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= +github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1 h1:d8MncMlErDFTwQGBK1xhv026j9kqhvw1Qv9IbWT1VLQ= +github.com/google/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/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/enterprise-certificate-proxy v0.2.0 h1:y8Yozv7SZtlU//QXbezB6QkpuE6jMD2/gfzk4AftXjs= +github.com/googleapis/enterprise-certificate-proxy v0.2.0/go.mod h1:8C0jb7/mgJe/9KK8Lm7X9ctZC2t60YyIpYEI16jx0Qg= +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.6.0 h1:SXk3ABtQYDT/OH8jAyvEOQ58mgawq5C4o/4/89qN2ZU= +github.com/googleapis/gax-go/v2 v2.6.0/go.mod h1:1mjbznJAPHFpesgE5ucqfYEscaz5kMdcIDwU/6+DDoY= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= +github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8/go.mod h1:Qcp2HIAYhR7mNUVSIxZww3Guk4it82ghYcEXIAk+QT0= +github.com/gorilla/websocket v1.4.1 h1:q7AeDBpnBk8AogcD4DSag/Ukw/KV+YhzLj2bP5HvKCM= +github.com/gorilla/websocket v1.4.1/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gostaticanalysis/analysisutil v0.0.0-20190318220348-4088753ea4d3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gostaticanalysis/analysisutil v0.0.3/go.mod h1:eEOZF4jCKGi+aprrirO9e7WKB3beBRtWgqGunKl6pKE= +github.com/gostaticanalysis/analysisutil v0.1.0/go.mod h1:dMhHRU9KTiDcuLGdy87/2gTR8WruwYZrKdRq9m1O6uw= +github.com/gostaticanalysis/analysisutil v0.7.1 h1:ZMCjoue3DtDWQ5WyU16YbjbQEQ3VuzwxALrpYd+HeKk= +github.com/gostaticanalysis/analysisutil v0.7.1/go.mod h1:v21E3hY37WKMGSnbsw2S/ojApNWb6C1//mXO48CXbVc= +github.com/gostaticanalysis/comment v1.3.0/go.mod h1:xMicKDx7XRXYdVwY9f9wQpDJVnqWxw9wCauCMKp+IBI= +github.com/gostaticanalysis/comment v1.4.1/go.mod h1:ih6ZxzTHLdadaiSnF5WY3dxUoXfXAlTaRzuaNDlSado= +github.com/gostaticanalysis/comment v1.4.2 h1:hlnx5+S2fY9Zo9ePo4AhgYsYHbM2+eAv8m/s1JiCd6Q= +github.com/gostaticanalysis/comment v1.4.2/go.mod h1:KLUTGDv6HOCotCH8h2erHKmpci2ZoR8VPu34YA2uzdM= +github.com/gostaticanalysis/forcetypeassert v0.1.0 h1:6eUflI3DiGusXGK6X7cCcIgVCpZ2CiZ1Q7jl6ZxNV70= +github.com/gostaticanalysis/forcetypeassert v0.1.0/go.mod h1:qZEedyP/sY1lTGV1uJ3VhWZ2mqag3IkWsDHVbplHXak= +github.com/gostaticanalysis/nilerr v0.1.1 h1:ThE+hJP0fEp4zWLkWHWcRyI2Od0p7DlgYG3Uqrmrcpk= +github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW0HU0GPE3+5PWN4A= +github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M= +github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY= +github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-getter v1.6.2 h1:7jX7xcB+uVCliddZgeKyNxv0xoT7qL5KDtH7rU4IqIk= +github.com/hashicorp/go-getter v1.6.2/go.mod h1:IZCrswsZPeWv9IkVnLElzRU/gz/QPi6pZHn4tv6vbwA= +github.com/hashicorp/go-hclog v1.4.0 h1:ctuWFGrhFha8BnnzxqeRGidlEcQkDyL5u8J8t5eA11I= +github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-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.8 h1:CHGwpxYDOttQOY7HOWgETU9dyVjOXzniXDqJcYJE1zM= +github.com/hashicorp/go-plugin v1.4.8/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= +github.com/hashicorp/go-safetemp v1.0.0 h1:2HR189eFNrjHQyENnQMMpCiBAsRxzbTMIgBhEyExpmo= +github.com/hashicorp/go-safetemp v1.0.0/go.mod h1:oaerMy3BhqiTbVye6QuFhFtIceqFoDHxNAB65b+Rj1I= +github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= +github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl/v2 v2.16.0 h1:MPq1q615H+9wBAdE3EbwEd6imSohElrIguuasbQruB0= +github.com/hashicorp/hcl/v2 v2.16.0/go.mod h1:JRmR89jycNkrrqnMmvPDMd56n1rQJ2Q6KocSLCMCXng= +github.com/hashicorp/logutils v1.0.0 h1:dLEQVugN8vlakKOUE3ihGLTZJRB4j+M2cdTm/ORI65Y= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/terraform-registry-address v0.1.0 h1:W6JkV9wbum+m516rCl5/NjKxCyTVaaUBbzYcMzBDO3U= +github.com/hashicorp/terraform-registry-address v0.1.0/go.mod h1:EnyO2jYO6j29DTHbJcm00E5nQTFeTtyZH3H5ycydQ5A= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0= +github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734/go.mod h1:kNDNcF7sN4DocDLBkQYz73HGKwN1ANB1blq4lIYLYvg= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d h1:kJCB4vdITiW1eC1vq2e6IsrXKrZit1bv/TDYFGMp4BQ= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= +github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= +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/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= +github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jessevdk/go-flags v1.5.0 h1:1jKYvbxEjfUl0fmqTCOfonvskHHXMjBySTLW4y9LFvc= +github.com/jessevdk/go-flags v1.5.0/go.mod h1:Fw0T6WPc1dYxT4mKEZRfG5kJhaTDP9pj1c2EWnYs/m4= +github.com/jgautheron/goconst v1.5.1 h1:HxVbL1MhydKs8R8n/HE5NPvzfaYmQJA3o879lE4+WcM= +github.com/jgautheron/goconst v1.5.1/go.mod h1:aAosetZ5zaeC/2EfMeRswtxUFBpe2Hr7HzkgX4fanO4= +github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= +github.com/jingyugao/rowserrcheck v1.1.1 h1:zibz55j/MJtLsjP1OF4bSdgXxwL1b+Vn7Tjzq7gFzUs= +github.com/jingyugao/rowserrcheck v1.1.1/go.mod h1:4yvlZSDb3IyDTUZJUmpZfm2Hwok+Dtp+nu2qOq+er9c= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af h1:KA9BjwUk7KlCh6S9EAGWBt1oExIUv9WyNCiRz5amv48= +github.com/jirfag/go-printf-func-name v0.0.0-20200119135958-7558a9eaa5af/go.mod h1:HEWGJkRDzjJY2sqdDwxccsGicWEf9BQOZsq2tV+xzM0= +github.com/jmespath/go-jmespath v0.0.0-20160202185014-0b12d6b521d8/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.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/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12/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/jstemmer/go-junit-report v1.0.0 h1:8X1gzZpR+nVQLAht+L/foqOeX2l9DTZoaIPbEQHxsds= +github.com/jstemmer/go-junit-report v1.0.0/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/julz/importas v0.1.0 h1:F78HnrsjY3cR7j0etXy5+TU1Zuy7Xt08X/1aJnH5xXY= +github.com/julz/importas v0.1.0/go.mod h1:oSFU2R4XK/P7kNBrnL/FEQlDGN1/6WoxXEjSSXO0DV0= +github.com/kisielk/errcheck v1.6.2 h1:uGQ9xI8/pgc9iOoCe7kWQgRE6SBTrCGmTSf0LrEtY7c= +github.com/kisielk/errcheck v1.6.2/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= +github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kkHAIKE/contextcheck v1.1.3 h1:l4pNvrb8JSwRd51ojtcOxOeHJzHek+MtOyXbaR0uvmw= +github.com/kkHAIKE/contextcheck v1.1.3/go.mod h1:PG/cwd6c0705/LM0KTr1acO2gORUxkSVWyLJOFW5qoo= +github.com/klauspost/compress v1.11.2 h1:MiK62aErc3gIiVEtyzKfeOHgW7atJb5g/KNX5m3c2nQ= +github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.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.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= +github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= +github.com/kylelemons/godebug v0.0.0-20170820004349-d65d576e9348/go.mod h1:B69LEHPfb2qLo0BaaOLcbitczOKLWTsrBG9LczfCD4k= +github.com/kylelemons/godebug v1.1.0 h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc= +github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= +github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= +github.com/ldez/gomoddirectives v0.2.3 h1:y7MBaisZVDYmKvt9/l1mjNCiSA1BVn34U0ObUcJwlhA= +github.com/ldez/gomoddirectives v0.2.3/go.mod h1:cpgBogWITnCfRq2qGoDkKMEVSaarhdBr6g8G04uz6d0= +github.com/ldez/tagliatelle v0.3.1 h1:3BqVVlReVUZwafJUwQ+oxbx2BEX2vUG4Yu/NOfMiKiM= +github.com/ldez/tagliatelle v0.3.1/go.mod h1:8s6WJQwEYHbKZDsp/LjArytKOG8qaMrKQQ3mFukHs88= +github.com/leonklingele/grouper v1.1.0 h1:tC2y/ygPbMFSBOs3DcyaEMKnnwH7eYKzohOtRrf0SAg= +github.com/leonklingele/grouper v1.1.0/go.mod h1:uk3I3uDfi9B6PeUjsCKi6ndcf63Uy7snXgR4yDYQVDY= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lufeee/execinquery v1.2.1 h1:hf0Ems4SHcUGBxpGN7Jz78z1ppVkP/837ZlETPCEtOM= +github.com/lufeee/execinquery v1.2.1/go.mod h1:EC7DrEKView09ocscGHC+apXMIaorh4xqSxS/dy8SbM= +github.com/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/maratori/testableexamples v1.0.0 h1:dU5alXRrD8WKSjOUnmJZuzdxWOEQ57+7s93SLMxb2vI= +github.com/maratori/testableexamples v1.0.0/go.mod h1:4rhjL1n20TUTT4vdh3RDqSizKLyXp7K2u6HgraZCGzE= +github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q= +github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= +github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA= +github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= +github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= +github.com/matryer/is v1.4.0/go.mod h1:8I/i5uYgLzgsgEloJE1U6xx5HkBQpAZvepWuujKwMRU= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +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.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +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.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPng= +github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= +github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/mbilski/exhaustivestruct v1.2.0 h1:wCBmUnSYufAHO6J4AVWY6ff+oxWxsVFrwgOdMUQePUo= +github.com/mbilski/exhaustivestruct v1.2.0/go.mod h1:OeTBVxQWoEmB2J2JCHmXWPJ0aksxSUOUy+nvtVEfzXc= +github.com/mgechev/revive v1.2.4 h1:+2Hd/S8oO2H0Ikq2+egtNwQsVhAeELHjxjIUFX5ajLI= +github.com/mgechev/revive v1.2.4/go.mod h1:iAWlQishqCuj4yhV24FTnKSXGpbAA+0SckXB8GQMX/Q= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU= +github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8= +github.com/mitchellh/go-wordwrap v1.0.0 h1:6GlHJ/LTGMrIJbwgdqdl2eEH8o+Exx/0m8ir9Gns0u4= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/moricho/tparallel v0.2.1 h1:95FytivzT6rYzdJLdtfn6m1bfFJylOJK41+lgv/EHf4= +github.com/moricho/tparallel v0.2.1/go.mod h1:fXEIZxG2vdfl0ZF8b42f5a78EhjjD5mX8qUplsoSU4k= +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/nakabonne/nestif v0.3.1 h1:wm28nZjhQY5HyYPx+weN3Q65k6ilSBxDb8v5S81B81U= +github.com/nakabonne/nestif v0.3.1/go.mod h1:9EtoZochLn5iUprVDmDjqGKPofoUEBL8U4Ngq6aY7OE= +github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 h1:4kuARK6Y6FxaNu/BnU2OAaLF86eTVhP2hjTB6iMvItA= +github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJerMDfblTH7p5MZaTt+8zaT2iEk3AkVb9PQdZuE8= +github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nishanths/exhaustive v0.8.3 h1:pw5O09vwg8ZaditDp/nQRqVnrMczSJDxRDJMowvhsrM= +github.com/nishanths/exhaustive v0.8.3/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= +github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= +github.com/nishanths/predeclared v0.2.2/go.mod h1:RROzoN6TnGQupbC+lqggsOlcgysk3LMK/HI84Mp280c= +github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= +github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= +github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= +github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= +github.com/onsi/gomega v1.20.0 h1:8W0cWlwFkflGPLltQvLRB7ZVD5HuP6ng320w2IS245Q= +github.com/otiai10/copy v1.2.0 h1:HvG945u96iNadPoG2/Ja2+AUJeW5YuFQMixq9yirC+k= +github.com/otiai10/copy v1.2.0/go.mod h1:rrF5dJ5F0t/EWSYODDu4j9/vEeYHMkc8jt0zJChqQWw= +github.com/otiai10/curr v0.0.0-20150429015615-9b4961190c95/go.mod h1:9qAhocn7zKJG+0mI8eUu6xqkFDYS2kb2saOteoSB3cE= +github.com/otiai10/curr v1.0.0/go.mod h1:LskTG5wDwr8Rs+nNQ+1LlxRjAtTZZjtJW4rMXl6j4vs= +github.com/otiai10/mint v1.3.0/go.mod h1:F5AjcsTsWUqX+Na9fpHb52P8pcRX2CI6A3ctIT91xUo= +github.com/otiai10/mint v1.3.1/go.mod h1:/yxELlJQ0ufhjUwhshSj+wFjZ78CnZ48/1wtmBH1OTc= +github.com/owenrumney/go-sarif v1.1.1 h1:QNObu6YX1igyFKhdzd7vgzmw7XsWN3/6NMGuDzBgXmE= +github.com/owenrumney/go-sarif v1.1.1/go.mod h1:dNDiPlF04ESR/6fHlPyq7gHKmrM0sHUvAGjsoh8ZH0U= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.5 h1:ipoSadvV8oGUjnUbMub59IDPPwfxF694nG/jwbMiyQg= +github.com/pelletier/go-toml/v2 v2.0.5/go.mod h1:OMHamSCAODeSsVrwwvcJOaoN0LIUIaFVNZzmWyNfXas= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d h1:CdDQnGF8Nq9ocOS/xlSptM1N3BbrA6/kmaep5ggwaIA= +github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d/go.mod h1:3OzsM7FXDQlpCiw2j81fOmAwQLnZnLGXVKUzeKQXIAw= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/polyfloyd/go-errorlint v1.0.5 h1:AHB5JRCjlmelh9RrLxT9sgzpalIwwq4hqE8EkwIwKdY= +github.com/polyfloyd/go-errorlint v1.0.5/go.mod h1:APVvOesVSAnne5SClsPxPdfvZTVDojXh1/G3qb5wjGI= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_golang v1.12.1 h1:ZiaPsmm9uiBeaSMRznKsCDNtPCS0T3JVDGF+06gjBzk= +github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/common v0.32.1 h1:hWIdL3N2HoUx3B8j3YN9mWor0qhY/NlEKZEaXxuIRh4= +github.com/prometheus/common v0.32.1/go.mod h1:vu+V0TpY+O6vW9J44gczi3Ap/oXXR10b+M/gUGO4Hls= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= +github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/quasilyte/go-ruleguard v0.3.1-0.20210203134552-1b5a410e1cc8/go.mod h1:KsAh3x0e7Fkpgs+Q9pNLS5XpFSvYCEVl5gP9Pp1xp30= +github.com/quasilyte/go-ruleguard v0.3.18 h1:sd+abO1PEI9fkYennwzHn9kl3nqP6M5vE7FiOzZ+5CE= +github.com/quasilyte/go-ruleguard v0.3.18/go.mod h1:lOIzcYlgxrQ2sGJ735EHXmf/e9MJ516j16K/Ifcttvs= +github.com/quasilyte/go-ruleguard/dsl v0.3.0/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/dsl v0.3.21/go.mod h1:KeCP03KrjuSO0H1kTuZQCWlQPulDV6YMIXmpQss17rU= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20201231183845-9e62ed36efe1/go.mod h1:7JTjp89EGyU1d6XfBiXihJNG37wB2VRkd125Q1u7Plc= +github.com/quasilyte/go-ruleguard/rules v0.0.0-20211022131956-028d6511ab71/go.mod h1:4cgAphtvu7Ftv7vOT2ZOYhC6CvBxZixcasr8qIOTA50= +github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f h1:6Gtn2i04RD0gVyYf2/IUMTIs+qYleBt4zxDqkLTcu4U= +github.com/quasilyte/gogrep v0.0.0-20220828223005-86e4605de09f/go.mod h1:Cm9lpz9NZjEoL1tgZ2OgeUKPIxL1meE7eo60Z6Sk+Ng= +github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95 h1:L8QM9bvf68pVdQ3bCFZMDmnt9yqcMBro1pC7F+IPYMY= +github.com/quasilyte/regex/syntax v0.0.0-20200407221936-30656e2c4a95/go.mod h1:rlzQ04UMyJXu/aOvhd8qT+hvDrFpiwqp8MRXDY9szc0= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567 h1:M8mH9eK4OUR4lu7Gd+PU1fV2/qnDNfzT635KRSObncs= +github.com/quasilyte/stdinfo v0.0.0-20220114132959-f7386bf02567/go.mod h1:DWNGW8A4Y+GyBgPuaQJuWiy0XYftx4Xm/y5Jqk9I6VQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryancurrah/gomodguard v1.2.4 h1:CpMSDKan0LtNGGhPrvupAoLeObRFjND8/tU1rEOtBp4= +github.com/ryancurrah/gomodguard v1.2.4/go.mod h1:+Kem4VjWwvFpUJRJSwa16s1tBJe+vbv02+naTow2f6M= +github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8OUZI9xFw= +github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= +github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA= +github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= +github.com/sashamelentyev/interfacebloat v1.1.0 h1:xdRdJp0irL086OyW1H/RTZTr1h/tMEOsumirXcOJqAw= +github.com/sashamelentyev/interfacebloat v1.1.0/go.mod h1:+Y9yU5YdTkrNvoX0xHc84dxiN1iBi9+G8zZIhPVoNjQ= +github.com/sashamelentyev/usestdlibvars v1.20.0 h1:K6CXjqqtSYSsuyRDDC7Sjn6vTMLiSJa4ZmDkiokoqtw= +github.com/sashamelentyev/usestdlibvars v1.20.0/go.mod h1:0GaP+ecfZMXShS0A94CJn6aEuPRILv8h/VuWI9n1ygg= +github.com/securego/gosec/v2 v2.13.1 h1:7mU32qn2dyC81MH9L2kefnQyRMUarfDER3iQyMHcjYM= +github.com/securego/gosec/v2 v2.13.1/go.mod h1:EO1sImBMBWFjOTFzMWfTRrZW6M15gm60ljzrmy/wtHo= +github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= +github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0= +github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= +github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= +github.com/sivchari/nosnakecase v1.7.0 h1:7QkpWIRMe8x25gckkFd2A5Pi6Ymo0qgr4JrhGt95do8= +github.com/sivchari/nosnakecase v1.7.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= +github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE= +github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/sonatard/noctx v0.0.1 h1:VC1Qhl6Oxx9vvWo3UDgrGXYCeKCe3Wbw7qAWL6FrmTY= +github.com/sonatard/noctx v0.0.1/go.mod h1:9D2D/EoULe8Yy2joDHJj7bv3sZoq9AaSb8B4lqBjiZI= +github.com/sourcegraph/go-diff v0.6.1 h1:hmA1LzxW0n1c3Q4YbrFgg4P99GSnebYa3x8gr0HZqLQ= +github.com/sourcegraph/go-diff v0.6.1/go.mod h1:iBszgVvyxdc8SFZ7gm69go2KDdt3ag071iBaWPF6cjs= +github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d h1:afLbh+ltiygTOB37ymZVwKlJwWZn+86syPTbrrOAydY= +github.com/sourcegraph/go-lsp v0.0.0-20200429204803-219e11d77f5d/go.mod h1:SULmZY7YNBsvNiQbrb/BEDdEJ84TGnfyUQxaHt8t8rY= +github.com/sourcegraph/jsonrpc2 v0.1.0 h1:ohJHjZ+PcaLxDUjqk2NC3tIGsVa5bXThe1ZheSXOjuk= +github.com/sourcegraph/jsonrpc2 v0.1.0/go.mod h1:ZafdZgk/axhT1cvZAPOhw+95nz2I/Ra5qMlU4gTRwIo= +github.com/spf13/afero v1.9.3 h1:41FoI0fD7OR7mGcKE/aOiLkGreyf8ifIOQmJANWogMk= +github.com/spf13/afero v1.9.3/go.mod h1:iUV7ddyEEZPO5gA3zD4fJt6iStLlL+Lg4m2cihcDf8Y= +github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= +github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= +github.com/spf13/cobra v1.6.0 h1:42a0n6jwCot1pUmomAp4T7DeMD+20LFv4Q54pxLf2LI= +github.com/spf13/cobra v1.6.0/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= +github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= +github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= +github.com/ssgreg/nlreturn/v2 v2.2.1/go.mod h1:E/iiPB78hV7Szg2YfRgyIrk1AD6JVMTRkkxBiELzh2I= +github.com/stbenjam/no-sprintf-host-port v0.1.1 h1:tYugd/yrm1O0dV+ThCbaKZh195Dfm07ysF0U6JQXczc= +github.com/stbenjam/no-sprintf-host-port v0.1.1/go.mod h1:TLhvtIvONRzdmkFiio4O8LHsN9N74I+PhRquPsxpL0I= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.4.0 h1:M2gUjqZET1qApGOWNSnZ49BAIMX4F/1plDv3+l31EJ4= +github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.1.4/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= +github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= +github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/subosito/gotenv v1.4.1 h1:jyEFiXpy21Wm81FBN71l9VoMMV8H8jG+qIK3GCpY6Qs= +github.com/subosito/gotenv v1.4.1/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0= +github.com/tdakkota/asciicheck v0.1.1 h1:PKzG7JUTUmVspQTDqtkX9eSiLGossXTybutHwTXuO0A= +github.com/tdakkota/asciicheck v0.1.1/go.mod h1:yHp0ai0Z9gUljN3o0xMhYJnH/IcvkdTBOX2fmJ93JEM= +github.com/tenntenn/modver v1.0.1 h1:2klLppGhDgzJrScMpkj9Ujy3rXPUspSjAcev9tSEBgA= +github.com/tenntenn/modver v1.0.1/go.mod h1:bePIyQPb7UeioSRkw3Q0XeMhYZSMx9B8ePqg6SAMGH0= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3 h1:f+jULpRQGxTSkNYKJ51yaw6ChIqO+Je8UqsTKN/cDag= +github.com/tenntenn/text/transform v0.0.0-20200319021203-7eef512accb3/go.mod h1:ON8b8w4BN/kE1EOhwT0o+d62W65a6aPw1nouo9LMgyY= +github.com/terraform-linters/tflint v0.45.0 h1:HBzE6DtiaGBkvMijI1H93V6ka/NeEtEoR5o3BoicrMY= +github.com/terraform-linters/tflint v0.45.0/go.mod h1:DnGJmi/HTs1TNw5shadQXJ5DpbYqQpIiGylH5psjGUA= +github.com/terraform-linters/tflint-plugin-sdk v0.15.0 h1:bUJ9OskzT/I98XaJ5+rs7ymVPHiGT8oI4bG86LkopVY= +github.com/terraform-linters/tflint-plugin-sdk v0.15.0/go.mod h1:enH5i7SHelcvC2AGZavEJzcrRF7nhAaOwTdaBjr/Zjo= +github.com/terraform-linters/tflint-ruleset-terraform v0.2.2 h1:iTE09KkaZ0DE29xvp6IIM1/gmas9V0h8CER28SyBmQ8= +github.com/terraform-linters/tflint-ruleset-terraform v0.2.2/go.mod h1:bCkvH8Vqzr16bWEE3e6Q3hvdZlmSAOR8i6G3M5y+M+k= +github.com/tetafro/godot v1.4.11 h1:BVoBIqAf/2QdbFmSwAWnaIqDivZdOV0ZRwEm6jivLKw= +github.com/tetafro/godot v1.4.11/go.mod h1:LR3CJpxDVGlYOWn3ZZg1PgNZdTUvzsZWu8xaEohUpn8= +github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 h1:kl4KhGNsJIbDHS9/4U9yQo1UcPQM0kOMJHn29EoH/Ro= +github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144/go.mod h1:Qimiffbc6q9tBWlVV6x0P9sat/ao1xEkREYPPj9hphk= +github.com/timonwong/loggercheck v0.9.3 h1:ecACo9fNiHxX4/Bc02rW2+kaJIAMAes7qJ7JKxt0EZI= +github.com/timonwong/loggercheck v0.9.3/go.mod h1:wUqnk9yAOIKtGA39l1KLE9Iz0QiTocu/YZoOf+OzFdw= +github.com/tomarrell/wrapcheck/v2 v2.7.0 h1:J/F8DbSKJC83bAvC6FoZaRjZiZ/iKoueSdrEkmGeacA= +github.com/tomarrell/wrapcheck/v2 v2.7.0/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= +github.com/tommy-muehle/go-mnd/v2 v2.5.1 h1:NowYhSdyE/1zwK9QCLeRb6USWdoif80Ie+v+yU8u1Zw= +github.com/tommy-muehle/go-mnd/v2 v2.5.1/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= +github.com/ulikunitz/xz v0.5.8 h1:ERv8V6GKqVi23rgu5cj9pVfVzJbOqAY2Ntl88O6c2nQ= +github.com/ulikunitz/xz v0.5.8/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14= +github.com/ultraware/funlen v0.0.3 h1:5ylVWm8wsNwH5aWo9438pwvsK0QiqVuUrt9bn7S/iLA= +github.com/ultraware/funlen v0.0.3/go.mod h1:Dp4UiAus7Wdb9KUZsYWZEWiRzGuM2kXM1lPbfaF6xhA= +github.com/ultraware/whitespace v0.0.5 h1:hh+/cpIcopyMYbZNVov9iSxvJU3OYQg78Sfaqzi/CzI= +github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89uZnzAmWSineA= +github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y= +github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= +github.com/vmihailenco/msgpack v3.3.3+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vmihailenco/msgpack/v4 v4.3.12 h1:07s4sz9IReOgdikxLTKNbBdqDMLsjPKXwvCazn8G65U= +github.com/vmihailenco/msgpack/v4 v4.3.12/go.mod h1:gborTTJjAo/GWTqqRjrLCn9pgNN+NXzzngzBKDPIqw4= +github.com/vmihailenco/tagparser v0.1.1 h1:quXMXlA39OCbd2wAdTsGDlK9RkOk6Wuw+x37wVyIuWY= +github.com/vmihailenco/tagparser v0.1.1/go.mod h1:OeAg3pn3UbLjkWt+rN9oFYB6u/cQgqMEUPoW2WPyhdI= +github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f h1:J9EGpcZtP0E/raorCMxlFGSTBrsSlaDGf3jU/qvAE2c= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/yagipy/maintidx v1.0.0 h1:h5NvIsCz+nRDapQ0exNv4aJ0yXSI0420omVANTv3GJM= +github.com/yagipy/maintidx v1.0.0/go.mod h1:0qNf/I/CCZXSMhsRsrEPDZ+DkekpKLXAJfsTACwgXLk= +github.com/yeya24/promlinter v0.2.0 h1:xFKDQ82orCU5jQujdaD8stOHiv8UN68BSdn2a8u8Y3o= +github.com/yeya24/promlinter v0.2.0/go.mod h1:u54lkmBOZrpEbQQ6gox2zWKKLKu2SGe+2KOiextY+IA= +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/zclconf/go-cty v1.1.0/go.mod h1:xnAOWiHeOqg2nWS62VtQ7pbOu17FtxJNW8RLEih+O3s= +github.com/zclconf/go-cty v1.10.0/go.mod h1:vVKLxnk3puL4qRAv72AO+W99LUD4da90g3uUAzyuvAk= +github.com/zclconf/go-cty v1.12.1 h1:PcupnljUm9EIvbgSHQnHhUr3fO6oFmkOrvs2BAFNXXY= +github.com/zclconf/go-cty v1.12.1/go.mod h1:s9IfD1LK5ccNMSWCVFCE2rJfHiZgi7JijgeWIMfhLvA= +github.com/zclconf/go-cty-yaml v1.0.3 h1:og/eOQ7lvA/WWhHGFETVWNduJM7Rjsv2RRpx1sdFMLc= +github.com/zclconf/go-cty-yaml v1.0.3/go.mod h1:9YLUH4g7lOhVWqUbctnVlZ5KLpg7JAprQNgxSZ1Gyxs= +gitlab.com/bosi/decorder v0.2.3 h1:gX4/RgK16ijY8V+BRQHAySfQAb354T7/xQpDB2n10P0= +gitlab.com/bosi/decorder v0.2.3/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= +go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= +go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= +go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.6.0 h1:y6IPFStTAIT5Ytl7/XYmHvzXQ7S3g/IeZW9hyZ5thw4= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.17.0 h1:MTjgFu6ZLKvY6Pvaqk97GlxNBuMpV4Hy/3P6tRGlI2U= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= +golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/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-20220722155223-a9213eeb770e h1:+WEEuIdZHnUeJJmEUjyYC2gfUMj69yZXw17EnHg/otA= +golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e/go.mod h1:Kr81I6Kryrl9sr8s2FK3vxD90NdsKWRuOIl2O4CvYbA= +golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91 h1:Ic/qN6TEifvObMGQy72k0n1LlJr7DjWWEi+MOsDOiSk= +golang.org/x/exp/typeparams v0.0.0-20220827204233-334a2380cb91/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= +golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= +golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +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.12.0 h1:rmsUpXtvNzj340zd98LZ4KntptpfRHwpFOHG188oHXc= +golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180811021610-c39426892332/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191009170851-d66e71096ffb/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-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-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211216030914-fe4d6282115f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= +golang.org/x/net v0.14.0 h1:BONx9s002vGdD9umnlX1Po8vOZmrgH34qlHcD1MfK14= +golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-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-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 h1:nt+Q6cXKz4MosCSpnbMtqiQ8Oz0pxTef2B4Vca2lvfk= +golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783/go.mod h1:h4gKUeWbJ4rQPri7E0u6Gs4e9Ri2zaLxzw5DI5XGrYg= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-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-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-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-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/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-20220412211240-33da011f77ad/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-20220517195934-5e4e11fc645e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.11.0 h1:eG7RXZHdqOJ1i+0lgLgCpSXAp6M3LYlAo6osgSi0xOM= +golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.11.0 h1:F9tnn/DA/Im8nCwm+fX+1/eBwi4qFjRT++MhtVC4ZX0= +golang.org/x/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.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc= +golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190307163923-6a08e3108db3/go.mod h1:25r3+/G6/xytQM8iWZKq3Hn0kr0rgFKPUNVEL/dr3z4= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190311215038-5c2858a9cfe5/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190321232350-e250d351ecad/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190322203728-c1a832b0ad89/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190916130336-e45ffcd953cc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117220505-0cba7a3a9ee9/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200622203043-20e05c1c8ffa/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200624225443-88f3c62a19ff/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200625211823-6506e20df31f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200724022722-7017fd6b1305/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200812195022-5ae4c3c160a0/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200820010801-b793a1359eac/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200831203904-5a2aa26beb65/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20201001104356-43ebab892c4c/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201002184944-ecd9fd270d5d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201023174141-c8cfbd0f21e6/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +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-20201230224404-63754364767c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/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-0.20210205202024-ef80cdb6ec6d/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1-0.20210302220138-2ac05c832e1a/go.mod h1:9bzcO0MWcOuT0tm1iBGzDVPshzfwoVvREIui8C+MHqU= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +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.12.0 h1:YW6HUoUmYBpwSgyaGaZq1fHjrBjX1rlpZ54T6mu2kss= +golang.org/x/tools v0.12.0/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 h1:H2TDz8ibqkAF6YGhCdN3jS9O0/s90v0rJh3X/OLHEUk= +golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= +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.102.0 h1:JxJl2qQ85fRMPNvlZY/enexbxpCjLwGhZUtgfGeQ51I= +google.golang.org/api v0.102.0/go.mod h1:3VFl6/fzoA+qNuS1N1/VfXY4LjoXN/wzeIp7TweWwGo= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0= +google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6 h1:a2S6M0+660BgMNl++4JPlcAO/CjkqYItDEZwkoDQK7c= +google.golang.org/genproto v0.0.0-20221118155620-16455021b5e6/go.mod h1:rZS5c/ZVYMaOGBfO68GWtjOw/eLaZM1X6iVtgjZ+EWg= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= +google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +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.28.1 h1:d0NfwRgPtno5B1Wa6L2DAG+KivqkdutMf1UhdNx175w= +google.golang.org/protobuf v1.28.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +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/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.67.0 h1:Dgnx+6+nfE+IfzjUEISNeydPJh9AXNNsWbGP9KzCsOA= +gopkg.in/ini.v1 v1.67.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +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-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= +honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +honnef.co/go/tools v0.3.3 h1:oDx7VAwstgpYpb3wv0oxiZlxY+foCpRAwY7Vk6XpAgA= +honnef.co/go/tools v0.3.3/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= +mvdan.cc/gofumpt v0.4.0 h1:JVf4NN1mIpHogBj7ABpgOyZc65/UUOkKQFkoURsz4MM= +mvdan.cc/gofumpt v0.4.0/go.mod h1:PljLOHDeZqgS8opHRKLzp2It2VBuSdteAgqUfzMTxlQ= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= +mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= +mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= +mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk= +mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= +rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= +rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= diff --git a/tools/tools.go b/tools/tools.go new file mode 100644 index 000000000..2bdc3be24 --- /dev/null +++ b/tools/tools.go @@ -0,0 +1,14 @@ +//go:build tools + +// Package tools is used for managing developer tools for this project +package tools + +//go:generate go install github.com/golangci/golangci-lint/cmd/golangci-lint +//go:generate go install github.com/terraform-linters/tflint +//go:generate go install golang.org/x/tools/cmd/goimports + +import ( + _ "github.com/golangci/golangci-lint/cmd/golangci-lint" + _ "github.com/terraform-linters/tflint" + _ "golang.org/x/tools/cmd/goimports" +)