diff --git a/.changes/0.24.0.md b/.changes/0.24.0.md new file mode 100644 index 000000000..1ddd45414 --- /dev/null +++ b/.changes/0.24.0.md @@ -0,0 +1,15 @@ +## 0.24.0 (September 18, 2024) + +BREAKING CHANGES: + +* tfprotov5+tfprotov6: Removed temporary `ResourceServerWithMoveResourceState` interface type. Use `ResourceServer` instead. ([#408](https://github.com/hashicorp/terraform-plugin-go/issues/408)) + +NOTES: + +* all: If using terraform-plugin-mux, it must be upgraded to v0.16.0 or later to prevent compilation errors ([#408](https://github.com/hashicorp/terraform-plugin-go/issues/408)) +* all: This Go module has been updated to Go 1.22 per the [Go support policy](https://go.dev/doc/devel/release#policy). It is recommended to review the [Go 1.22 release notes](https://go.dev/doc/go1.22) before upgrading. Any consumers building on earlier Go versions may experience errors. ([#428](https://github.com/hashicorp/terraform-plugin-go/issues/428)) + +BUG FIXES: + +* logging: Add existing `MoveResourceState` server capability to v5 and v6 logging ([#432](https://github.com/hashicorp/terraform-plugin-go/issues/432)) + diff --git a/.changie.yaml b/.changie.yaml index 0f628b3bd..933f12111 100644 --- a/.changie.yaml +++ b/.changie.yaml @@ -1,3 +1,5 @@ +# DO NOT EDIT - This GitHub Workflow is managed by automation +# https://github.com/hashicorp/terraform-devex-repos changesDir: .changes unreleasedDir: unreleased changelogPath: CHANGELOG.md diff --git a/.github/workflows/add-content-to-project.yml b/.github/workflows/add-content-to-project.yml deleted file mode 100644 index 35166f2ac..000000000 --- a/.github/workflows/add-content-to-project.yml +++ /dev/null @@ -1,40 +0,0 @@ -# Based on https://github.com/leonsteinhaeuser/project-beta-automations - -name: "Add Issues/PRs to TF Provider DevEx team board" - -on: - issues: - types: [opened, reopened] - pull_request_target: - # NOTE: The way content is added to project board is equivalent to an "upsert". - # Calling it multiple times will be idempotent. - # - # See https://securitylab.github.com/research/github-actions-preventing-pwn-requests/ - # to see the reasoning behind using `pull_request_target` instead of `pull_request` - types: [opened, reopened, ready_for_review] - -jobs: - add-content-to-project: - name: "Add Content to project" - runs-on: ubuntu-latest - steps: - - name: "Set Issue to 'Priority = Triage Next'" - uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 # v2.2.1 - if: github.event_name == 'issues' - with: - gh_token: ${{ secrets.TF_DEVEX_PROJECT_GITHUB_TOKEN }} - organization: "hashicorp" - project_id: 99 #< https://github.com/orgs/hashicorp/projects/99 - resource_node_id: ${{ github.event.issue.node_id }} - operation_mode: custom_field - custom_field_values: '[{\"name\":\"Priority\",\"type\":\"single_select\",\"value\":\"Triage Next\"}]' - - name: "Set Pull Request to 'Priority = Triage Next'" - uses: leonsteinhaeuser/project-beta-automations@939000fb1900c9fc4f7b5058a09d9f833ebc6859 # v2.2.1 - if: github.event_name == 'pull_request_target' - with: - gh_token: ${{ secrets.TF_DEVEX_PROJECT_GITHUB_TOKEN }} - organization: "hashicorp" - project_id: 99 #< https://github.com/orgs/hashicorp/projects/99 - resource_node_id: ${{ github.event.pull_request.node_id }} - operation_mode: custom_field - custom_field_values: '[{\"name\":\"Priority\",\"type\":\"single_select\",\"value\":\"Triage Next\"}]' diff --git a/.github/workflows/ci-changie.yml b/.github/workflows/ci-changie.yml index bfc5cf9a5..de5554dda 100644 --- a/.github/workflows/ci-changie.yml +++ b/.github/workflows/ci-changie.yml @@ -1,3 +1,6 @@ +# DO NOT EDIT - This GitHub Workflow is managed by automation +# https://github.com/hashicorp/terraform-devex-repos + # Continuous integration handling for changie name: ci-changie @@ -15,9 +18,10 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + # Ensure terraform-devex-repos is updated on version changes. + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + # Ensure terraform-devex-repos is updated on version changes. - uses: miniscruff/changie-action@6dcc2533cac0495148ed4046c438487e4dceaa23 # v2.0.0 with: version: latest args: batch patch --dry-run - diff --git a/.github/workflows/ci-github-actions.yml b/.github/workflows/ci-github-actions.yml index a731bf6a2..ce2d45e52 100644 --- a/.github/workflows/ci-github-actions.yml +++ b/.github/workflows/ci-github-actions.yml @@ -13,8 +13,8 @@ jobs: actionlint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' - run: go install github.com/rhysd/actionlint/cmd/actionlint@latest diff --git a/.github/workflows/ci-go.yml b/.github/workflows/ci-go.yml index b1282c92a..00cd8dfe9 100644 --- a/.github/workflows/ci-go.yml +++ b/.github/workflows/ci-go.yml @@ -16,12 +16,12 @@ jobs: golangci-lint: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' - run: go mod download - - uses: golangci/golangci-lint-action@82d40c283aeb1f2b6595839195e95c2d6a49081b # v5.0.0 + - uses: golangci/golangci-lint-action@aaa42aa0628b4ae2578232a66b541047968fac86 # v6.1.0 terraform-provider-corner-tfprotov5: defaults: run: @@ -29,15 +29,15 @@ jobs: name: tfprotov5 (${{ matrix.os}}, Terraform ${{ matrix.terraform}}) runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: path: terraform-provider-corner repository: hashicorp/terraform-provider-corner - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' - - uses: hashicorp/setup-terraform@97f030cf6dc0b4f5e0da352c7bca9cca34579800 # v3.1.0 + - uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 with: terraform_version: ${{ matrix.terraform }} terraform_wrapper: false @@ -62,15 +62,15 @@ jobs: name: tfprotov6 (${{ matrix.os}}, Terraform ${{ matrix.terraform}}) runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: path: terraform-provider-corner repository: hashicorp/terraform-provider-corner - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' - - uses: hashicorp/setup-terraform@97f030cf6dc0b4f5e0da352c7bca9cca34579800 # v3.1.0 + - uses: hashicorp/setup-terraform@b9cd54a3c349d3f38e8881555d616ced269862dd # v3.1.2 with: terraform_version: ${{ matrix.terraform }} terraform_wrapper: false @@ -92,16 +92,16 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - go-version: ['1.22', '1.21'] + go-version: ['1.23', '1.22'] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version: ${{ matrix.go-version }} - run: go mod download - run: go test -coverprofile=coverage.out ./... - run: go tool cover -html=coverage.out -o coverage.html - - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + - uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: go-${{ matrix.go-version }}-coverage path: coverage.html diff --git a/.github/workflows/ci-goreleaser.yml b/.github/workflows/ci-goreleaser.yml index 8d794bf9c..0603e6b35 100644 --- a/.github/workflows/ci-goreleaser.yml +++ b/.github/workflows/ci-goreleaser.yml @@ -4,6 +4,7 @@ name: ci-goreleaser on: pull_request: paths: + - .github/workflows/ci-goreleaser.yml - .goreleaser.yml permissions: @@ -13,10 +14,10 @@ jobs: check: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' - - uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 + - uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 with: args: check diff --git a/.github/workflows/ci-protobuf.yml b/.github/workflows/ci-protobuf.yml index bc6c9b974..5249f3e20 100644 --- a/.github/workflows/ci-protobuf.yml +++ b/.github/workflows/ci-protobuf.yml @@ -19,8 +19,8 @@ jobs: protoc: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' - uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3.0.0 diff --git a/.github/workflows/compliance.yml b/.github/workflows/compliance.yml index 472d1ce72..f745aa05d 100644 --- a/.github/workflows/compliance.yml +++ b/.github/workflows/compliance.yml @@ -11,7 +11,7 @@ jobs: copywrite: runs-on: ubuntu-latest steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: hashicorp/setup-copywrite@867a1a2a064a0626db322392806428f7dc59cb3e # v1.1.2 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: hashicorp/setup-copywrite@32638da2d4e81d56a0764aa1547882fc4d209636 # v1.1.3 - run: copywrite headers --plan - run: copywrite license --plan \ No newline at end of file diff --git a/.github/workflows/issue-comment-triage.yml b/.github/workflows/issue-comment-triage.yml new file mode 100644 index 000000000..00017cdfb --- /dev/null +++ b/.github/workflows/issue-comment-triage.yml @@ -0,0 +1,21 @@ +# DO NOT EDIT - This GitHub Workflow is managed by automation +# https://github.com/hashicorp/terraform-devex-repos +name: Issue Comment Triage + +on: + issue_comment: + types: [created] + +jobs: + issue_comment_triage: + runs-on: ubuntu-latest + env: + # issue_comment events are triggered by comments on issues and pull requests. Checking the + # value of github.event.issue.pull_request tells us whether the issue is an issue or is + # actually a pull request, allowing us to dynamically set the gh subcommand: + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#issue_comment-on-issues-only-or-pull-requests-only + COMMAND: ${{ github.event.issue.pull_request && 'pr' || 'issue' }} + GH_TOKEN: ${{ github.token }} + steps: + - name: 'Remove waiting-response on comment' + run: gh ${{ env.COMMAND }} edit ${{ github.event.issue.html_url }} --remove-label waiting-response diff --git a/.github/workflows/jira-sync.yml b/.github/workflows/jira-sync.yml deleted file mode 100644 index 737d56a5d..000000000 --- a/.github/workflows/jira-sync.yml +++ /dev/null @@ -1,39 +0,0 @@ -on: - issues: - types: [closed, deleted, reopened] - pull_request_target: - types: [closed, reopened] - -name: Jira Sync - -jobs: - sync: - runs-on: ubuntu-latest - name: Jira sync - steps: - - - name: Login - uses: atlassian/gajira-login@45fd029b9f1d6d8926c6f04175aa80c0e42c9026 # v3.0.1 - if: contains(github.event.pull_request.labels.*.name, 'tf-devex-triage') || contains(github.event.issue.labels.*.name, 'tf-devex-triage') - env: - JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} - JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} - JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - - name: Search for existing issue - id: search - if: contains(github.event.pull_request.labels.*.name, 'tf-devex-triage') || contains(github.event.issue.labels.*.name, 'tf-devex-triage') - uses: tomhjp/gh-action-jira-search@04700b457f317c3e341ce90da5a3ff4ce058f2fa # v0.2.2 - with: - jql: 'project="TFECO" and "Team (R&D)[Labels]"="TF-DevEx" and description ~ "${{ github.event.issue.html_url || github.event.pull_request.html_url }}" and labels in (Github)' - - name: Close task - if: ( github.event.action == 'closed' || github.event.action == 'deleted' ) && steps.search.outputs.issue - uses: atlassian/gajira-transition@38fc9cd61b03d6a53dd35fcccda172fe04b36de3 # v3.0.1 - with: - issue: ${{ steps.search.outputs.issue }} - transition: "Closed" - - name: Reopen task - if: github.event.action == 'reopened' && steps.search.outputs.issue - uses: atlassian/gajira-transition@38fc9cd61b03d6a53dd35fcccda172fe04b36de3 # v3.0.1 - with: - issue: ${{ steps.search.outputs.issue }} - transition: "To Do" diff --git a/.github/workflows/lock.yml b/.github/workflows/lock.yml new file mode 100644 index 000000000..9e04567d2 --- /dev/null +++ b/.github/workflows/lock.yml @@ -0,0 +1,21 @@ +# DO NOT EDIT - This GitHub Workflow is managed by automation +# https://github.com/hashicorp/terraform-devex-repos +name: 'Lock Threads' + +on: + schedule: + - cron: '1 5 * * *' + +jobs: + lock: + runs-on: ubuntu-latest + steps: + # NOTE: When TSCCR updates the GitHub action version, update the template workflow file to avoid drift: + # https://github.com/hashicorp/terraform-devex-repos/blob/main/modules/repo/workflows/lock.tftpl + - uses: dessant/lock-threads@1bf7ec25051fe7c00bdd17e6a7cf3d7bfb7dc771 # v5.0.1 + with: + github-token: ${{ github.token }} + issue-inactive-days: '30' + issue-lock-reason: resolved + pr-inactive-days: '30' + pr-lock-reason: resolved diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 92dc9c73e..054217462 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 # Avoid persisting GITHUB_TOKEN credentials as they take priority over our service account PAT for `git push` operations @@ -54,7 +54,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: fetch-depth: 0 # Default input is the SHA that initially triggered the workflow. As we created a new commit in the previous job, @@ -79,12 +79,12 @@ jobs: contents: write # Needed for goreleaser to create GitHub release issues: write # Needed for goreleaser to close associated milestone steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: ref: ${{ inputs.versionNumber }} fetch-depth: 0 - - uses: actions/setup-go@0c52d547c9bc32b1aa3301fd7a9cb496313a4491 # v5.0.0 + - uses: actions/setup-go@0a12ed9d6a96ab950c8f026ed9f722fe0da7ef32 # v5.0.2 with: go-version-file: 'go.mod' @@ -93,7 +93,7 @@ jobs: cd .changes sed -e "1{/# /d;}" -e "2{/^$/d;}" ${{ needs.changelog-version.outputs.version }}.md > /tmp/release-notes.txt - - uses: goreleaser/goreleaser-action@7ec5c2b0c6cdda6e8bbb49444bc797dd33d74dd8 # v5.0.0 + - uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # v6.0.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/send-to-jira.yml b/.github/workflows/send-to-jira.yml deleted file mode 100644 index cee84f686..000000000 --- a/.github/workflows/send-to-jira.yml +++ /dev/null @@ -1,37 +0,0 @@ -on: - issues: - types: [labeled] - -name: Jira Sync - -jobs: - sync: - runs-on: ubuntu-latest - name: Jira sync - steps: - - - name: Login - uses: atlassian/gajira-login@45fd029b9f1d6d8926c6f04175aa80c0e42c9026 # v3.0.1 - if: github.event.label.name == 'tf-devex-triage' - env: - JIRA_BASE_URL: ${{ secrets.JIRA_BASE_URL }} - JIRA_USER_EMAIL: ${{ secrets.JIRA_USER_EMAIL }} - JIRA_API_TOKEN: ${{ secrets.JIRA_API_TOKEN }} - - name: Search for existing issue - id: search - if: github.event.label.name == 'tf-devex-triage' - uses: tomhjp/gh-action-jira-search@04700b457f317c3e341ce90da5a3ff4ce058f2fa # v0.2.2 - with: - jql: 'project="TFECO" and "Team (R&D)[Labels]"="TF-DevEx" and description ~ "${{ github.event.issue.html_url || github.event.pull_request.html_url }}" and labels in (Github)' - - - name: Create task in DevEx board - if: github.event.label.name == 'tf-devex-triage' && !steps.search.outputs.issue - uses: atlassian/gajira-create@59e177c4f6451399df5b4911c2211104f171e669 # v3.0.1 - with: - project: TFECO - issuetype: "Task" - summary: "[GH] ${{ github.event.issue.title || github.event.pull_request.title }}" - description: "${{ github.event.issue.html_url || github.event.pull_request.html_url }} \n Synced by Github Actions, tagged by ${{ github.actor }}" - # customfield_10091 is Team (R&D) - fields: '{"customfield_10091": ["TF-DevEx"], "labels": ["Github"]}' - diff --git a/.golangci.yml b/.golangci.yml index b5e4abef0..0396bb9d8 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -11,6 +11,7 @@ linters: - forcetypeassert - gofmt - gosimple + - govet - ineffassign - makezero - misspell @@ -22,4 +23,3 @@ linters: - unconvert - unparam - unused - - vet diff --git a/.goreleaser.yml b/.goreleaser.yml index a48d0fd15..3f7b60b21 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -1,6 +1,7 @@ +version: 2 project_name: terraform-plugin-go -build: - skip: true +builds: + - skip: true milestones: - close: true release: diff --git a/CHANGELOG.md b/CHANGELOG.md index fafbf8d4c..09b0b168a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,18 @@ +## 0.24.0 (September 18, 2024) + +BREAKING CHANGES: + +* tfprotov5+tfprotov6: Removed temporary `ResourceServerWithMoveResourceState` interface type. Use `ResourceServer` instead. ([#408](https://github.com/hashicorp/terraform-plugin-go/issues/408)) + +NOTES: + +* all: If using terraform-plugin-mux, it must be upgraded to v0.16.0 or later to prevent compilation errors ([#408](https://github.com/hashicorp/terraform-plugin-go/issues/408)) +* all: This Go module has been updated to Go 1.22 per the [Go support policy](https://go.dev/doc/devel/release#policy). It is recommended to review the [Go 1.22 release notes](https://go.dev/doc/go1.22) before upgrading. Any consumers building on earlier Go versions may experience errors. ([#428](https://github.com/hashicorp/terraform-plugin-go/issues/428)) + +BUG FIXES: + +* logging: Add existing `MoveResourceState` server capability to v5 and v6 logging ([#432](https://github.com/hashicorp/terraform-plugin-go/issues/432)) + ## 0.23.0 (May 06, 2024) BREAKING CHANGES: diff --git a/README.md b/README.md index 16ce7f25e..aba536028 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ is unsupported by the Terraform Plugin SDK team. This project follows the [support policy](https://golang.org/doc/devel/release.html#policy) of Go as its support policy. The two latest major releases of Go are supported by the project. -Currently, that means Go **1.21** or later must be used when including this project as a dependency. +Currently, that means Go **1.22** or later must be used when including this project as a dependency. ## Getting Started diff --git a/go.mod b/go.mod index ad32a0229..ca11bf7d1 100644 --- a/go.mod +++ b/go.mod @@ -1,20 +1,20 @@ module github.com/hashicorp/terraform-plugin-go -go 1.21 +go 1.22.0 -toolchain go1.21.6 +toolchain go1.22.7 require ( github.com/google/go-cmp v0.6.0 github.com/hashicorp/go-hclog v1.5.0 - github.com/hashicorp/go-plugin v1.6.0 + github.com/hashicorp/go-plugin v1.6.1 github.com/hashicorp/go-uuid v1.0.3 github.com/hashicorp/terraform-plugin-log v0.9.0 github.com/hashicorp/terraform-registry-address v0.2.3 github.com/mitchellh/go-testing-interface v1.14.1 github.com/vmihailenco/msgpack/v5 v5.4.1 - google.golang.org/grpc v1.63.2 - google.golang.org/protobuf v1.34.0 + google.golang.org/grpc v1.66.2 + google.golang.org/protobuf v1.34.2 ) require ( @@ -26,8 +26,8 @@ require ( github.com/mattn/go-isatty v0.0.14 // indirect github.com/oklog/run v1.0.0 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de // indirect + golang.org/x/net v0.26.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 // indirect ) diff --git a/go.sum b/go.sum index 8d264f252..6d56f4617 100644 --- a/go.sum +++ b/go.sum @@ -11,8 +11,8 @@ github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= -github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= -github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= +github.com/hashicorp/go-plugin v1.6.1 h1:P7MR2UP6gNKGPp+y7EZw2kOiq4IR9WiqLvp0XOsVdwI= +github.com/hashicorp/go-plugin v1.6.1/go.mod h1:XPHFku2tFo3o3QKFgSYo+cghcUhw1NA1hZyMK0PWAw0= 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/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0= @@ -44,23 +44,23 @@ github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IU github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de h1:cZGRis4/ot9uVm639a+rHCUaG0JJHEsdyzSQTMX+suY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240227224415-6ceb2ff114de/go.mod h1:H4O17MA/PE9BsGx3w+a+W2VOLLD1Qf7oJneAoU6WktY= -google.golang.org/grpc v1.63.2 h1:MUeiw1B2maTVZthpU5xvASfTh3LDbxHd6IJ6QQVU+xM= -google.golang.org/grpc v1.63.2/go.mod h1:WAX/8DgncnokcFUldAxq7GeB5DXHDbMF+lLvDomNkRA= -google.golang.org/protobuf v1.34.0 h1:Qo/qEd2RZPCf2nKuorzksSknv0d3ERwp1vFG38gSmH4= -google.golang.org/protobuf v1.34.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117 h1:1GBuWVLM/KMVUv1t1En5Gs+gFZCNd360GGb4sSxtrhU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240604185151-ef581f913117/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= +google.golang.org/grpc v1.66.2 h1:3QdXkuq3Bkh7w+ywLdLvM56cmGvQHUMZpiCzt6Rqaoo= +google.golang.org/grpc v1.66.2/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/internal/logging/keys.go b/internal/logging/keys.go index fb8214429..3fba8753b 100644 --- a/internal/logging/keys.go +++ b/internal/logging/keys.go @@ -69,6 +69,9 @@ const ( // Whether the GetProviderSchemaOptional server capability is enabled KeyServerCapabilityGetProviderSchemaOptional = "tf_server_capability_get_provider_schema_optional" + // Whether the MoveResourceState server capability is enabled + KeyServerCapabilityMoveResourceState = "tf_server_capability_move_resource_state" + // Whether the PlanDestroy server capability is enabled KeyServerCapabilityPlanDestroy = "tf_server_capability_plan_destroy" diff --git a/tfprotov5/internal/tf5serverlogging/server_capabilities.go b/tfprotov5/internal/tf5serverlogging/server_capabilities.go index d0f86c842..aff78da75 100644 --- a/tfprotov5/internal/tf5serverlogging/server_capabilities.go +++ b/tfprotov5/internal/tf5serverlogging/server_capabilities.go @@ -14,11 +14,13 @@ import ( func ServerCapabilities(ctx context.Context, capabilities *tfprotov5.ServerCapabilities) { responseFields := map[string]interface{}{ logging.KeyServerCapabilityGetProviderSchemaOptional: false, + logging.KeyServerCapabilityMoveResourceState: false, logging.KeyServerCapabilityPlanDestroy: false, } if capabilities != nil { responseFields[logging.KeyServerCapabilityGetProviderSchemaOptional] = capabilities.GetProviderSchemaOptional + responseFields[logging.KeyServerCapabilityMoveResourceState] = capabilities.MoveResourceState responseFields[logging.KeyServerCapabilityPlanDestroy] = capabilities.PlanDestroy } diff --git a/tfprotov5/internal/tf5serverlogging/server_capabilities_test.go b/tfprotov5/internal/tf5serverlogging/server_capabilities_test.go index 3b7809858..251dfd3d4 100644 --- a/tfprotov5/internal/tf5serverlogging/server_capabilities_test.go +++ b/tfprotov5/internal/tf5serverlogging/server_capabilities_test.go @@ -31,6 +31,7 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": false, "tf_server_capability_plan_destroy": false, }, }, @@ -43,6 +44,7 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": false, "tf_server_capability_plan_destroy": false, }, }, @@ -57,6 +59,22 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": true, + "tf_server_capability_move_resource_state": false, + "tf_server_capability_plan_destroy": false, + }, + }, + }, + "move_resource_state": { + capabilities: &tfprotov5.ServerCapabilities{ + MoveResourceState: true, + }, + expected: []map[string]interface{}{ + { + "@level": "trace", + "@message": "Announced server capabilities", + "@module": "sdk.proto", + "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": true, "tf_server_capability_plan_destroy": false, }, }, @@ -71,6 +89,7 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": false, "tf_server_capability_plan_destroy": true, }, }, diff --git a/tfprotov5/internal/tfplugin5/tfplugin5.pb.go b/tfprotov5/internal/tfplugin5/tfplugin5.pb.go index 46ce948a1..263d79833 100644 --- a/tfprotov5/internal/tfplugin5/tfplugin5.pb.go +++ b/tfprotov5/internal/tfplugin5/tfplugin5.pb.go @@ -22,7 +22,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.0 +// protoc-gen-go v1.34.2 // protoc v5.26.1 // source: tfplugin5.proto @@ -5431,7 +5431,7 @@ func file_tfplugin5_proto_rawDescGZIP() []byte { var file_tfplugin5_proto_enumTypes = make([]protoimpl.EnumInfo, 4) var file_tfplugin5_proto_msgTypes = make([]protoimpl.MessageInfo, 82) -var file_tfplugin5_proto_goTypes = []interface{}{ +var file_tfplugin5_proto_goTypes = []any{ (StringKind)(0), // 0: tfplugin5.StringKind (Diagnostic_Severity)(0), // 1: tfplugin5.Diagnostic.Severity (Schema_NestedBlock_NestingMode)(0), // 2: tfplugin5.Schema.NestedBlock.NestingMode @@ -5666,7 +5666,7 @@ func file_tfplugin5_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_tfplugin5_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*DynamicValue); i { case 0: return &v.state @@ -5678,7 +5678,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Diagnostic); i { case 0: return &v.state @@ -5690,7 +5690,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*FunctionError); i { case 0: return &v.state @@ -5702,7 +5702,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*AttributePath); i { case 0: return &v.state @@ -5714,7 +5714,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*Stop); i { case 0: return &v.state @@ -5726,7 +5726,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*RawState); i { case 0: return &v.state @@ -5738,7 +5738,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*Schema); i { case 0: return &v.state @@ -5750,7 +5750,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*ServerCapabilities); i { case 0: return &v.state @@ -5762,7 +5762,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*ClientCapabilities); i { case 0: return &v.state @@ -5774,7 +5774,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*Function); i { case 0: return &v.state @@ -5786,7 +5786,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*Deferred); i { case 0: return &v.state @@ -5798,7 +5798,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata); i { case 0: return &v.state @@ -5810,7 +5810,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*GetProviderSchema); i { case 0: return &v.state @@ -5822,7 +5822,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*PrepareProviderConfig); i { case 0: return &v.state @@ -5834,7 +5834,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*UpgradeResourceState); i { case 0: return &v.state @@ -5846,7 +5846,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*ValidateResourceTypeConfig); i { case 0: return &v.state @@ -5858,7 +5858,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*ValidateDataSourceConfig); i { case 0: return &v.state @@ -5870,7 +5870,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*Configure); i { case 0: return &v.state @@ -5882,7 +5882,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*ReadResource); i { case 0: return &v.state @@ -5894,7 +5894,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*PlanResourceChange); i { case 0: return &v.state @@ -5906,7 +5906,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*ApplyResourceChange); i { case 0: return &v.state @@ -5918,7 +5918,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState); i { case 0: return &v.state @@ -5930,7 +5930,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*MoveResourceState); i { case 0: return &v.state @@ -5942,7 +5942,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*ReadDataSource); i { case 0: return &v.state @@ -5954,7 +5954,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*GetProvisionerSchema); i { case 0: return &v.state @@ -5966,7 +5966,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*ValidateProvisionerConfig); i { case 0: return &v.state @@ -5978,7 +5978,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*ProvisionResource); i { case 0: return &v.state @@ -5990,7 +5990,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*GetFunctions); i { case 0: return &v.state @@ -6002,7 +6002,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*CallFunction); i { case 0: return &v.state @@ -6014,7 +6014,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[29].Exporter = func(v any, i int) any { switch v := v.(*AttributePath_Step); i { case 0: return &v.state @@ -6026,7 +6026,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*Stop_Request); i { case 0: return &v.state @@ -6038,7 +6038,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*Stop_Response); i { case 0: return &v.state @@ -6050,7 +6050,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*Schema_Block); i { case 0: return &v.state @@ -6062,7 +6062,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*Schema_Attribute); i { case 0: return &v.state @@ -6074,7 +6074,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*Schema_NestedBlock); i { case 0: return &v.state @@ -6086,7 +6086,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*Function_Parameter); i { case 0: return &v.state @@ -6098,7 +6098,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*Function_Return); i { case 0: return &v.state @@ -6110,7 +6110,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_Request); i { case 0: return &v.state @@ -6122,7 +6122,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_Response); i { case 0: return &v.state @@ -6134,7 +6134,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_FunctionMetadata); i { case 0: return &v.state @@ -6146,7 +6146,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_DataSourceMetadata); i { case 0: return &v.state @@ -6158,7 +6158,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_ResourceMetadata); i { case 0: return &v.state @@ -6170,7 +6170,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[43].Exporter = func(v any, i int) any { switch v := v.(*GetProviderSchema_Request); i { case 0: return &v.state @@ -6182,7 +6182,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[44].Exporter = func(v any, i int) any { switch v := v.(*GetProviderSchema_Response); i { case 0: return &v.state @@ -6194,7 +6194,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*PrepareProviderConfig_Request); i { case 0: return &v.state @@ -6206,7 +6206,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*PrepareProviderConfig_Response); i { case 0: return &v.state @@ -6218,7 +6218,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*UpgradeResourceState_Request); i { case 0: return &v.state @@ -6230,7 +6230,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*UpgradeResourceState_Response); i { case 0: return &v.state @@ -6242,7 +6242,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*ValidateResourceTypeConfig_Request); i { case 0: return &v.state @@ -6254,7 +6254,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*ValidateResourceTypeConfig_Response); i { case 0: return &v.state @@ -6266,7 +6266,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*ValidateDataSourceConfig_Request); i { case 0: return &v.state @@ -6278,7 +6278,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*ValidateDataSourceConfig_Response); i { case 0: return &v.state @@ -6290,7 +6290,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*Configure_Request); i { case 0: return &v.state @@ -6302,7 +6302,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*Configure_Response); i { case 0: return &v.state @@ -6314,7 +6314,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*ReadResource_Request); i { case 0: return &v.state @@ -6326,7 +6326,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*ReadResource_Response); i { case 0: return &v.state @@ -6338,7 +6338,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*PlanResourceChange_Request); i { case 0: return &v.state @@ -6350,7 +6350,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*PlanResourceChange_Response); i { case 0: return &v.state @@ -6362,7 +6362,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*ApplyResourceChange_Request); i { case 0: return &v.state @@ -6374,7 +6374,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*ApplyResourceChange_Response); i { case 0: return &v.state @@ -6386,7 +6386,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState_Request); i { case 0: return &v.state @@ -6398,7 +6398,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState_ImportedResource); i { case 0: return &v.state @@ -6410,7 +6410,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState_Response); i { case 0: return &v.state @@ -6422,7 +6422,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*MoveResourceState_Request); i { case 0: return &v.state @@ -6434,7 +6434,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*MoveResourceState_Response); i { case 0: return &v.state @@ -6446,7 +6446,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*ReadDataSource_Request); i { case 0: return &v.state @@ -6458,7 +6458,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*ReadDataSource_Response); i { case 0: return &v.state @@ -6470,7 +6470,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[71].Exporter = func(v any, i int) any { switch v := v.(*GetProvisionerSchema_Request); i { case 0: return &v.state @@ -6482,7 +6482,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*GetProvisionerSchema_Response); i { case 0: return &v.state @@ -6494,7 +6494,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[73].Exporter = func(v any, i int) any { switch v := v.(*ValidateProvisionerConfig_Request); i { case 0: return &v.state @@ -6506,7 +6506,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[74].Exporter = func(v any, i int) any { switch v := v.(*ValidateProvisionerConfig_Response); i { case 0: return &v.state @@ -6518,7 +6518,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[75].Exporter = func(v any, i int) any { switch v := v.(*ProvisionResource_Request); i { case 0: return &v.state @@ -6530,7 +6530,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[76].Exporter = func(v any, i int) any { switch v := v.(*ProvisionResource_Response); i { case 0: return &v.state @@ -6542,7 +6542,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[77].Exporter = func(v any, i int) any { switch v := v.(*GetFunctions_Request); i { case 0: return &v.state @@ -6554,7 +6554,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[78].Exporter = func(v any, i int) any { switch v := v.(*GetFunctions_Response); i { case 0: return &v.state @@ -6566,7 +6566,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[80].Exporter = func(v any, i int) any { switch v := v.(*CallFunction_Request); i { case 0: return &v.state @@ -6578,7 +6578,7 @@ func file_tfplugin5_proto_init() { return nil } } - file_tfplugin5_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin5_proto_msgTypes[81].Exporter = func(v any, i int) any { switch v := v.(*CallFunction_Response); i { case 0: return &v.state @@ -6591,8 +6591,8 @@ func file_tfplugin5_proto_init() { } } } - file_tfplugin5_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_tfplugin5_proto_msgTypes[29].OneofWrappers = []interface{}{ + file_tfplugin5_proto_msgTypes[2].OneofWrappers = []any{} + file_tfplugin5_proto_msgTypes[29].OneofWrappers = []any{ (*AttributePath_Step_AttributeName)(nil), (*AttributePath_Step_ElementKeyString)(nil), (*AttributePath_Step_ElementKeyInt)(nil), diff --git a/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go b/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go index 8a8c8a5a0..c00b0f00e 100644 --- a/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go +++ b/tfprotov5/internal/tfplugin5/tfplugin5_grpc.pb.go @@ -22,7 +22,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc v5.26.1 // source: tfplugin5.proto @@ -37,8 +37,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Provider_GetMetadata_FullMethodName = "/tfplugin5.Provider/GetMetadata" @@ -103,8 +103,9 @@ func NewProviderClient(cc grpc.ClientConnInterface) ProviderClient { } func (c *providerClient) GetMetadata(ctx context.Context, in *GetMetadata_Request, opts ...grpc.CallOption) (*GetMetadata_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetMetadata_Response) - err := c.cc.Invoke(ctx, Provider_GetMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_GetMetadata_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +113,9 @@ func (c *providerClient) GetMetadata(ctx context.Context, in *GetMetadata_Reques } func (c *providerClient) GetSchema(ctx context.Context, in *GetProviderSchema_Request, opts ...grpc.CallOption) (*GetProviderSchema_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetProviderSchema_Response) - err := c.cc.Invoke(ctx, Provider_GetSchema_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_GetSchema_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -121,8 +123,9 @@ func (c *providerClient) GetSchema(ctx context.Context, in *GetProviderSchema_Re } func (c *providerClient) PrepareProviderConfig(ctx context.Context, in *PrepareProviderConfig_Request, opts ...grpc.CallOption) (*PrepareProviderConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(PrepareProviderConfig_Response) - err := c.cc.Invoke(ctx, Provider_PrepareProviderConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_PrepareProviderConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -130,8 +133,9 @@ func (c *providerClient) PrepareProviderConfig(ctx context.Context, in *PrepareP } func (c *providerClient) ValidateResourceTypeConfig(ctx context.Context, in *ValidateResourceTypeConfig_Request, opts ...grpc.CallOption) (*ValidateResourceTypeConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateResourceTypeConfig_Response) - err := c.cc.Invoke(ctx, Provider_ValidateResourceTypeConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ValidateResourceTypeConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,8 +143,9 @@ func (c *providerClient) ValidateResourceTypeConfig(ctx context.Context, in *Val } func (c *providerClient) ValidateDataSourceConfig(ctx context.Context, in *ValidateDataSourceConfig_Request, opts ...grpc.CallOption) (*ValidateDataSourceConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateDataSourceConfig_Response) - err := c.cc.Invoke(ctx, Provider_ValidateDataSourceConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ValidateDataSourceConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -148,8 +153,9 @@ func (c *providerClient) ValidateDataSourceConfig(ctx context.Context, in *Valid } func (c *providerClient) UpgradeResourceState(ctx context.Context, in *UpgradeResourceState_Request, opts ...grpc.CallOption) (*UpgradeResourceState_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpgradeResourceState_Response) - err := c.cc.Invoke(ctx, Provider_UpgradeResourceState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_UpgradeResourceState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,8 +163,9 @@ func (c *providerClient) UpgradeResourceState(ctx context.Context, in *UpgradeRe } func (c *providerClient) Configure(ctx context.Context, in *Configure_Request, opts ...grpc.CallOption) (*Configure_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Configure_Response) - err := c.cc.Invoke(ctx, Provider_Configure_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_Configure_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -166,8 +173,9 @@ func (c *providerClient) Configure(ctx context.Context, in *Configure_Request, o } func (c *providerClient) ReadResource(ctx context.Context, in *ReadResource_Request, opts ...grpc.CallOption) (*ReadResource_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReadResource_Response) - err := c.cc.Invoke(ctx, Provider_ReadResource_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ReadResource_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -175,8 +183,9 @@ func (c *providerClient) ReadResource(ctx context.Context, in *ReadResource_Requ } func (c *providerClient) PlanResourceChange(ctx context.Context, in *PlanResourceChange_Request, opts ...grpc.CallOption) (*PlanResourceChange_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(PlanResourceChange_Response) - err := c.cc.Invoke(ctx, Provider_PlanResourceChange_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_PlanResourceChange_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -184,8 +193,9 @@ func (c *providerClient) PlanResourceChange(ctx context.Context, in *PlanResourc } func (c *providerClient) ApplyResourceChange(ctx context.Context, in *ApplyResourceChange_Request, opts ...grpc.CallOption) (*ApplyResourceChange_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ApplyResourceChange_Response) - err := c.cc.Invoke(ctx, Provider_ApplyResourceChange_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ApplyResourceChange_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -193,8 +203,9 @@ func (c *providerClient) ApplyResourceChange(ctx context.Context, in *ApplyResou } func (c *providerClient) ImportResourceState(ctx context.Context, in *ImportResourceState_Request, opts ...grpc.CallOption) (*ImportResourceState_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ImportResourceState_Response) - err := c.cc.Invoke(ctx, Provider_ImportResourceState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ImportResourceState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -202,8 +213,9 @@ func (c *providerClient) ImportResourceState(ctx context.Context, in *ImportReso } func (c *providerClient) MoveResourceState(ctx context.Context, in *MoveResourceState_Request, opts ...grpc.CallOption) (*MoveResourceState_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MoveResourceState_Response) - err := c.cc.Invoke(ctx, Provider_MoveResourceState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_MoveResourceState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -211,8 +223,9 @@ func (c *providerClient) MoveResourceState(ctx context.Context, in *MoveResource } func (c *providerClient) ReadDataSource(ctx context.Context, in *ReadDataSource_Request, opts ...grpc.CallOption) (*ReadDataSource_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReadDataSource_Response) - err := c.cc.Invoke(ctx, Provider_ReadDataSource_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ReadDataSource_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -220,8 +233,9 @@ func (c *providerClient) ReadDataSource(ctx context.Context, in *ReadDataSource_ } func (c *providerClient) GetFunctions(ctx context.Context, in *GetFunctions_Request, opts ...grpc.CallOption) (*GetFunctions_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetFunctions_Response) - err := c.cc.Invoke(ctx, Provider_GetFunctions_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_GetFunctions_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -229,8 +243,9 @@ func (c *providerClient) GetFunctions(ctx context.Context, in *GetFunctions_Requ } func (c *providerClient) CallFunction(ctx context.Context, in *CallFunction_Request, opts ...grpc.CallOption) (*CallFunction_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CallFunction_Response) - err := c.cc.Invoke(ctx, Provider_CallFunction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_CallFunction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -238,8 +253,9 @@ func (c *providerClient) CallFunction(ctx context.Context, in *CallFunction_Requ } func (c *providerClient) Stop(ctx context.Context, in *Stop_Request, opts ...grpc.CallOption) (*Stop_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Stop_Response) - err := c.cc.Invoke(ctx, Provider_Stop_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_Stop_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -248,7 +264,7 @@ func (c *providerClient) Stop(ctx context.Context, in *Stop_Request, opts ...grp // ProviderServer is the server API for Provider service. // All implementations must embed UnimplementedProviderServer -// for forward compatibility +// for forward compatibility. type ProviderServer interface { // GetMetadata returns upfront information about server capabilities and // supported resource types without requiring the server to instantiate all @@ -282,9 +298,12 @@ type ProviderServer interface { mustEmbedUnimplementedProviderServer() } -// UnimplementedProviderServer must be embedded to have forward compatible implementations. -type UnimplementedProviderServer struct { -} +// UnimplementedProviderServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedProviderServer struct{} func (UnimplementedProviderServer) GetMetadata(context.Context, *GetMetadata_Request) (*GetMetadata_Response, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMetadata not implemented") @@ -335,6 +354,7 @@ func (UnimplementedProviderServer) Stop(context.Context, *Stop_Request) (*Stop_R return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") } func (UnimplementedProviderServer) mustEmbedUnimplementedProviderServer() {} +func (UnimplementedProviderServer) testEmbeddedByValue() {} // UnsafeProviderServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ProviderServer will @@ -344,6 +364,13 @@ type UnsafeProviderServer interface { } func RegisterProviderServer(s grpc.ServiceRegistrar, srv ProviderServer) { + // If the following call pancis, it indicates UnimplementedProviderServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Provider_ServiceDesc, srv) } @@ -724,7 +751,7 @@ const ( type ProvisionerClient interface { GetSchema(ctx context.Context, in *GetProvisionerSchema_Request, opts ...grpc.CallOption) (*GetProvisionerSchema_Response, error) ValidateProvisionerConfig(ctx context.Context, in *ValidateProvisionerConfig_Request, opts ...grpc.CallOption) (*ValidateProvisionerConfig_Response, error) - ProvisionResource(ctx context.Context, in *ProvisionResource_Request, opts ...grpc.CallOption) (Provisioner_ProvisionResourceClient, error) + ProvisionResource(ctx context.Context, in *ProvisionResource_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ProvisionResource_Response], error) Stop(ctx context.Context, in *Stop_Request, opts ...grpc.CallOption) (*Stop_Response, error) } @@ -737,8 +764,9 @@ func NewProvisionerClient(cc grpc.ClientConnInterface) ProvisionerClient { } func (c *provisionerClient) GetSchema(ctx context.Context, in *GetProvisionerSchema_Request, opts ...grpc.CallOption) (*GetProvisionerSchema_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetProvisionerSchema_Response) - err := c.cc.Invoke(ctx, Provisioner_GetSchema_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provisioner_GetSchema_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -746,20 +774,22 @@ func (c *provisionerClient) GetSchema(ctx context.Context, in *GetProvisionerSch } func (c *provisionerClient) ValidateProvisionerConfig(ctx context.Context, in *ValidateProvisionerConfig_Request, opts ...grpc.CallOption) (*ValidateProvisionerConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateProvisionerConfig_Response) - err := c.cc.Invoke(ctx, Provisioner_ValidateProvisionerConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provisioner_ValidateProvisionerConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *provisionerClient) ProvisionResource(ctx context.Context, in *ProvisionResource_Request, opts ...grpc.CallOption) (Provisioner_ProvisionResourceClient, error) { - stream, err := c.cc.NewStream(ctx, &Provisioner_ServiceDesc.Streams[0], Provisioner_ProvisionResource_FullMethodName, opts...) +func (c *provisionerClient) ProvisionResource(ctx context.Context, in *ProvisionResource_Request, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ProvisionResource_Response], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &Provisioner_ServiceDesc.Streams[0], Provisioner_ProvisionResource_FullMethodName, cOpts...) if err != nil { return nil, err } - x := &provisionerProvisionResourceClient{stream} + x := &grpc.GenericClientStream[ProvisionResource_Request, ProvisionResource_Response]{ClientStream: stream} if err := x.ClientStream.SendMsg(in); err != nil { return nil, err } @@ -769,26 +799,13 @@ func (c *provisionerClient) ProvisionResource(ctx context.Context, in *Provision return x, nil } -type Provisioner_ProvisionResourceClient interface { - Recv() (*ProvisionResource_Response, error) - grpc.ClientStream -} - -type provisionerProvisionResourceClient struct { - grpc.ClientStream -} - -func (x *provisionerProvisionResourceClient) Recv() (*ProvisionResource_Response, error) { - m := new(ProvisionResource_Response) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Provisioner_ProvisionResourceClient = grpc.ServerStreamingClient[ProvisionResource_Response] func (c *provisionerClient) Stop(ctx context.Context, in *Stop_Request, opts ...grpc.CallOption) (*Stop_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Stop_Response) - err := c.cc.Invoke(ctx, Provisioner_Stop_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provisioner_Stop_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -797,18 +814,21 @@ func (c *provisionerClient) Stop(ctx context.Context, in *Stop_Request, opts ... // ProvisionerServer is the server API for Provisioner service. // All implementations must embed UnimplementedProvisionerServer -// for forward compatibility +// for forward compatibility. type ProvisionerServer interface { GetSchema(context.Context, *GetProvisionerSchema_Request) (*GetProvisionerSchema_Response, error) ValidateProvisionerConfig(context.Context, *ValidateProvisionerConfig_Request) (*ValidateProvisionerConfig_Response, error) - ProvisionResource(*ProvisionResource_Request, Provisioner_ProvisionResourceServer) error + ProvisionResource(*ProvisionResource_Request, grpc.ServerStreamingServer[ProvisionResource_Response]) error Stop(context.Context, *Stop_Request) (*Stop_Response, error) mustEmbedUnimplementedProvisionerServer() } -// UnimplementedProvisionerServer must be embedded to have forward compatible implementations. -type UnimplementedProvisionerServer struct { -} +// UnimplementedProvisionerServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedProvisionerServer struct{} func (UnimplementedProvisionerServer) GetSchema(context.Context, *GetProvisionerSchema_Request) (*GetProvisionerSchema_Response, error) { return nil, status.Errorf(codes.Unimplemented, "method GetSchema not implemented") @@ -816,13 +836,14 @@ func (UnimplementedProvisionerServer) GetSchema(context.Context, *GetProvisioner func (UnimplementedProvisionerServer) ValidateProvisionerConfig(context.Context, *ValidateProvisionerConfig_Request) (*ValidateProvisionerConfig_Response, error) { return nil, status.Errorf(codes.Unimplemented, "method ValidateProvisionerConfig not implemented") } -func (UnimplementedProvisionerServer) ProvisionResource(*ProvisionResource_Request, Provisioner_ProvisionResourceServer) error { +func (UnimplementedProvisionerServer) ProvisionResource(*ProvisionResource_Request, grpc.ServerStreamingServer[ProvisionResource_Response]) error { return status.Errorf(codes.Unimplemented, "method ProvisionResource not implemented") } func (UnimplementedProvisionerServer) Stop(context.Context, *Stop_Request) (*Stop_Response, error) { return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") } func (UnimplementedProvisionerServer) mustEmbedUnimplementedProvisionerServer() {} +func (UnimplementedProvisionerServer) testEmbeddedByValue() {} // UnsafeProvisionerServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ProvisionerServer will @@ -832,6 +853,13 @@ type UnsafeProvisionerServer interface { } func RegisterProvisionerServer(s grpc.ServiceRegistrar, srv ProvisionerServer) { + // If the following call pancis, it indicates UnimplementedProvisionerServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Provisioner_ServiceDesc, srv) } @@ -876,21 +904,11 @@ func _Provisioner_ProvisionResource_Handler(srv interface{}, stream grpc.ServerS if err := stream.RecvMsg(m); err != nil { return err } - return srv.(ProvisionerServer).ProvisionResource(m, &provisionerProvisionResourceServer{stream}) + return srv.(ProvisionerServer).ProvisionResource(m, &grpc.GenericServerStream[ProvisionResource_Request, ProvisionResource_Response]{ServerStream: stream}) } -type Provisioner_ProvisionResourceServer interface { - Send(*ProvisionResource_Response) error - grpc.ServerStream -} - -type provisionerProvisionResourceServer struct { - grpc.ServerStream -} - -func (x *provisionerProvisionResourceServer) Send(m *ProvisionResource_Response) error { - return x.ServerStream.SendMsg(m) -} +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type Provisioner_ProvisionResourceServer = grpc.ServerStreamingServer[ProvisionResource_Response] func _Provisioner_Stop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Stop_Request) diff --git a/tfprotov5/resource.go b/tfprotov5/resource.go index 9e50a0ce6..251bf135d 100644 --- a/tfprotov5/resource.go +++ b/tfprotov5/resource.go @@ -65,26 +65,6 @@ type ResourceServer interface { MoveResourceState(context.Context, *MoveResourceStateRequest) (*MoveResourceStateResponse, error) } -// ResourceServerWithMoveResourceState is a temporary interface for servers -// to implement MoveResourceState RPC handling. -// -// Deprecated: This interface will be removed in a future version. Use -// ResourceServer instead. -type ResourceServerWithMoveResourceState interface { - ResourceServer - - // MoveResourceState is called when Terraform is asked to change a resource - // type for an existing resource. The provider must accept the change as - // valid by ensuring the source resource type, schema version, and provider - // address are compatible to convert the source state into the target - // resource type and latest state version. - // - // This functionality is only supported in Terraform 1.8 and later. The - // provider must have enabled the MoveResourceState server capability to - // enable these requests. - MoveResourceState(context.Context, *MoveResourceStateRequest) (*MoveResourceStateResponse, error) -} - // ValidateResourceTypeConfigRequest is the request Terraform sends when it // wants to validate a resource's configuration. type ValidateResourceTypeConfigRequest struct { diff --git a/tfprotov6/internal/tf6serverlogging/server_capabilities.go b/tfprotov6/internal/tf6serverlogging/server_capabilities.go index f6aaf953d..74f9931ac 100644 --- a/tfprotov6/internal/tf6serverlogging/server_capabilities.go +++ b/tfprotov6/internal/tf6serverlogging/server_capabilities.go @@ -14,11 +14,13 @@ import ( func ServerCapabilities(ctx context.Context, capabilities *tfprotov6.ServerCapabilities) { responseFields := map[string]interface{}{ logging.KeyServerCapabilityGetProviderSchemaOptional: false, + logging.KeyServerCapabilityMoveResourceState: false, logging.KeyServerCapabilityPlanDestroy: false, } if capabilities != nil { responseFields[logging.KeyServerCapabilityGetProviderSchemaOptional] = capabilities.GetProviderSchemaOptional + responseFields[logging.KeyServerCapabilityMoveResourceState] = capabilities.MoveResourceState responseFields[logging.KeyServerCapabilityPlanDestroy] = capabilities.PlanDestroy } diff --git a/tfprotov6/internal/tf6serverlogging/server_capabilities_test.go b/tfprotov6/internal/tf6serverlogging/server_capabilities_test.go index 81880ee67..d8657350a 100644 --- a/tfprotov6/internal/tf6serverlogging/server_capabilities_test.go +++ b/tfprotov6/internal/tf6serverlogging/server_capabilities_test.go @@ -31,6 +31,7 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": false, "tf_server_capability_plan_destroy": false, }, }, @@ -43,6 +44,7 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": false, "tf_server_capability_plan_destroy": false, }, }, @@ -57,6 +59,22 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": true, + "tf_server_capability_move_resource_state": false, + "tf_server_capability_plan_destroy": false, + }, + }, + }, + "move_resource_state": { + capabilities: &tfprotov6.ServerCapabilities{ + MoveResourceState: true, + }, + expected: []map[string]interface{}{ + { + "@level": "trace", + "@message": "Announced server capabilities", + "@module": "sdk.proto", + "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": true, "tf_server_capability_plan_destroy": false, }, }, @@ -71,6 +89,7 @@ func TestServerCapabilities(t *testing.T) { "@message": "Announced server capabilities", "@module": "sdk.proto", "tf_server_capability_get_provider_schema_optional": false, + "tf_server_capability_move_resource_state": false, "tf_server_capability_plan_destroy": true, }, }, diff --git a/tfprotov6/internal/tfplugin6/tfplugin6.pb.go b/tfprotov6/internal/tfplugin6/tfplugin6.pb.go index e0f55a1f5..6f60b7ef8 100644 --- a/tfprotov6/internal/tfplugin6/tfplugin6.pb.go +++ b/tfprotov6/internal/tfplugin6/tfplugin6.pb.go @@ -22,7 +22,7 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.34.0 +// protoc-gen-go v1.34.2 // protoc v5.26.1 // source: tfplugin6.proto @@ -5114,7 +5114,7 @@ func file_tfplugin6_proto_rawDescGZIP() []byte { var file_tfplugin6_proto_enumTypes = make([]protoimpl.EnumInfo, 5) var file_tfplugin6_proto_msgTypes = make([]protoimpl.MessageInfo, 74) -var file_tfplugin6_proto_goTypes = []interface{}{ +var file_tfplugin6_proto_goTypes = []any{ (StringKind)(0), // 0: tfplugin6.StringKind (Diagnostic_Severity)(0), // 1: tfplugin6.Diagnostic.Severity (Schema_NestedBlock_NestingMode)(0), // 2: tfplugin6.Schema.NestedBlock.NestingMode @@ -5329,7 +5329,7 @@ func file_tfplugin6_proto_init() { return } if !protoimpl.UnsafeEnabled { - file_tfplugin6_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[0].Exporter = func(v any, i int) any { switch v := v.(*DynamicValue); i { case 0: return &v.state @@ -5341,7 +5341,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[1].Exporter = func(v any, i int) any { switch v := v.(*Diagnostic); i { case 0: return &v.state @@ -5353,7 +5353,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[2].Exporter = func(v any, i int) any { switch v := v.(*FunctionError); i { case 0: return &v.state @@ -5365,7 +5365,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[3].Exporter = func(v any, i int) any { switch v := v.(*AttributePath); i { case 0: return &v.state @@ -5377,7 +5377,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[4].Exporter = func(v any, i int) any { switch v := v.(*StopProvider); i { case 0: return &v.state @@ -5389,7 +5389,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[5].Exporter = func(v any, i int) any { switch v := v.(*RawState); i { case 0: return &v.state @@ -5401,7 +5401,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[6].Exporter = func(v any, i int) any { switch v := v.(*Schema); i { case 0: return &v.state @@ -5413,7 +5413,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[7].Exporter = func(v any, i int) any { switch v := v.(*Function); i { case 0: return &v.state @@ -5425,7 +5425,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[8].Exporter = func(v any, i int) any { switch v := v.(*ServerCapabilities); i { case 0: return &v.state @@ -5437,7 +5437,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*ClientCapabilities); i { case 0: return &v.state @@ -5449,7 +5449,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[10].Exporter = func(v any, i int) any { switch v := v.(*Deferred); i { case 0: return &v.state @@ -5461,7 +5461,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[11].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata); i { case 0: return &v.state @@ -5473,7 +5473,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[12].Exporter = func(v any, i int) any { switch v := v.(*GetProviderSchema); i { case 0: return &v.state @@ -5485,7 +5485,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[13].Exporter = func(v any, i int) any { switch v := v.(*ValidateProviderConfig); i { case 0: return &v.state @@ -5497,7 +5497,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[14].Exporter = func(v any, i int) any { switch v := v.(*UpgradeResourceState); i { case 0: return &v.state @@ -5509,7 +5509,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[15].Exporter = func(v any, i int) any { switch v := v.(*ValidateResourceConfig); i { case 0: return &v.state @@ -5521,7 +5521,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[16].Exporter = func(v any, i int) any { switch v := v.(*ValidateDataResourceConfig); i { case 0: return &v.state @@ -5533,7 +5533,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[17].Exporter = func(v any, i int) any { switch v := v.(*ConfigureProvider); i { case 0: return &v.state @@ -5545,7 +5545,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[18].Exporter = func(v any, i int) any { switch v := v.(*ReadResource); i { case 0: return &v.state @@ -5557,7 +5557,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[19].Exporter = func(v any, i int) any { switch v := v.(*PlanResourceChange); i { case 0: return &v.state @@ -5569,7 +5569,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[20].Exporter = func(v any, i int) any { switch v := v.(*ApplyResourceChange); i { case 0: return &v.state @@ -5581,7 +5581,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[21].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState); i { case 0: return &v.state @@ -5593,7 +5593,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[22].Exporter = func(v any, i int) any { switch v := v.(*MoveResourceState); i { case 0: return &v.state @@ -5605,7 +5605,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[23].Exporter = func(v any, i int) any { switch v := v.(*ReadDataSource); i { case 0: return &v.state @@ -5617,7 +5617,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[24].Exporter = func(v any, i int) any { switch v := v.(*GetFunctions); i { case 0: return &v.state @@ -5629,7 +5629,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[25].Exporter = func(v any, i int) any { switch v := v.(*CallFunction); i { case 0: return &v.state @@ -5641,7 +5641,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[26].Exporter = func(v any, i int) any { switch v := v.(*AttributePath_Step); i { case 0: return &v.state @@ -5653,7 +5653,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[27].Exporter = func(v any, i int) any { switch v := v.(*StopProvider_Request); i { case 0: return &v.state @@ -5665,7 +5665,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[28].Exporter = func(v any, i int) any { switch v := v.(*StopProvider_Response); i { case 0: return &v.state @@ -5677,7 +5677,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[30].Exporter = func(v any, i int) any { switch v := v.(*Schema_Block); i { case 0: return &v.state @@ -5689,7 +5689,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[31].Exporter = func(v any, i int) any { switch v := v.(*Schema_Attribute); i { case 0: return &v.state @@ -5701,7 +5701,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[32].Exporter = func(v any, i int) any { switch v := v.(*Schema_NestedBlock); i { case 0: return &v.state @@ -5713,7 +5713,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[33].Exporter = func(v any, i int) any { switch v := v.(*Schema_Object); i { case 0: return &v.state @@ -5725,7 +5725,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[34].Exporter = func(v any, i int) any { switch v := v.(*Function_Parameter); i { case 0: return &v.state @@ -5737,7 +5737,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[35].Exporter = func(v any, i int) any { switch v := v.(*Function_Return); i { case 0: return &v.state @@ -5749,7 +5749,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[36].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_Request); i { case 0: return &v.state @@ -5761,7 +5761,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[37].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_Response); i { case 0: return &v.state @@ -5773,7 +5773,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[38].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_FunctionMetadata); i { case 0: return &v.state @@ -5785,7 +5785,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[39].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_DataSourceMetadata); i { case 0: return &v.state @@ -5797,7 +5797,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[40].Exporter = func(v any, i int) any { switch v := v.(*GetMetadata_ResourceMetadata); i { case 0: return &v.state @@ -5809,7 +5809,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[41].Exporter = func(v any, i int) any { switch v := v.(*GetProviderSchema_Request); i { case 0: return &v.state @@ -5821,7 +5821,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[42].Exporter = func(v any, i int) any { switch v := v.(*GetProviderSchema_Response); i { case 0: return &v.state @@ -5833,7 +5833,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[46].Exporter = func(v any, i int) any { switch v := v.(*ValidateProviderConfig_Request); i { case 0: return &v.state @@ -5845,7 +5845,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[47].Exporter = func(v any, i int) any { switch v := v.(*ValidateProviderConfig_Response); i { case 0: return &v.state @@ -5857,7 +5857,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[48].Exporter = func(v any, i int) any { switch v := v.(*UpgradeResourceState_Request); i { case 0: return &v.state @@ -5869,7 +5869,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[49].Exporter = func(v any, i int) any { switch v := v.(*UpgradeResourceState_Response); i { case 0: return &v.state @@ -5881,7 +5881,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[50].Exporter = func(v any, i int) any { switch v := v.(*ValidateResourceConfig_Request); i { case 0: return &v.state @@ -5893,7 +5893,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[51].Exporter = func(v any, i int) any { switch v := v.(*ValidateResourceConfig_Response); i { case 0: return &v.state @@ -5905,7 +5905,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[52].Exporter = func(v any, i int) any { switch v := v.(*ValidateDataResourceConfig_Request); i { case 0: return &v.state @@ -5917,7 +5917,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[53].Exporter = func(v any, i int) any { switch v := v.(*ValidateDataResourceConfig_Response); i { case 0: return &v.state @@ -5929,7 +5929,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[54].Exporter = func(v any, i int) any { switch v := v.(*ConfigureProvider_Request); i { case 0: return &v.state @@ -5941,7 +5941,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[55].Exporter = func(v any, i int) any { switch v := v.(*ConfigureProvider_Response); i { case 0: return &v.state @@ -5953,7 +5953,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[56].Exporter = func(v any, i int) any { switch v := v.(*ReadResource_Request); i { case 0: return &v.state @@ -5965,7 +5965,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[57].Exporter = func(v any, i int) any { switch v := v.(*ReadResource_Response); i { case 0: return &v.state @@ -5977,7 +5977,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[58].Exporter = func(v any, i int) any { switch v := v.(*PlanResourceChange_Request); i { case 0: return &v.state @@ -5989,7 +5989,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[59].Exporter = func(v any, i int) any { switch v := v.(*PlanResourceChange_Response); i { case 0: return &v.state @@ -6001,7 +6001,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[60].Exporter = func(v any, i int) any { switch v := v.(*ApplyResourceChange_Request); i { case 0: return &v.state @@ -6013,7 +6013,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[61].Exporter = func(v any, i int) any { switch v := v.(*ApplyResourceChange_Response); i { case 0: return &v.state @@ -6025,7 +6025,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[62].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState_Request); i { case 0: return &v.state @@ -6037,7 +6037,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[63].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState_ImportedResource); i { case 0: return &v.state @@ -6049,7 +6049,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[64].Exporter = func(v any, i int) any { switch v := v.(*ImportResourceState_Response); i { case 0: return &v.state @@ -6061,7 +6061,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[65].Exporter = func(v any, i int) any { switch v := v.(*MoveResourceState_Request); i { case 0: return &v.state @@ -6073,7 +6073,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[66].Exporter = func(v any, i int) any { switch v := v.(*MoveResourceState_Response); i { case 0: return &v.state @@ -6085,7 +6085,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[67].Exporter = func(v any, i int) any { switch v := v.(*ReadDataSource_Request); i { case 0: return &v.state @@ -6097,7 +6097,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[68].Exporter = func(v any, i int) any { switch v := v.(*ReadDataSource_Response); i { case 0: return &v.state @@ -6109,7 +6109,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[69].Exporter = func(v any, i int) any { switch v := v.(*GetFunctions_Request); i { case 0: return &v.state @@ -6121,7 +6121,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[70].Exporter = func(v any, i int) any { switch v := v.(*GetFunctions_Response); i { case 0: return &v.state @@ -6133,7 +6133,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[72].Exporter = func(v any, i int) any { switch v := v.(*CallFunction_Request); i { case 0: return &v.state @@ -6145,7 +6145,7 @@ func file_tfplugin6_proto_init() { return nil } } - file_tfplugin6_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { + file_tfplugin6_proto_msgTypes[73].Exporter = func(v any, i int) any { switch v := v.(*CallFunction_Response); i { case 0: return &v.state @@ -6158,8 +6158,8 @@ func file_tfplugin6_proto_init() { } } } - file_tfplugin6_proto_msgTypes[2].OneofWrappers = []interface{}{} - file_tfplugin6_proto_msgTypes[26].OneofWrappers = []interface{}{ + file_tfplugin6_proto_msgTypes[2].OneofWrappers = []any{} + file_tfplugin6_proto_msgTypes[26].OneofWrappers = []any{ (*AttributePath_Step_AttributeName)(nil), (*AttributePath_Step_ElementKeyString)(nil), (*AttributePath_Step_ElementKeyInt)(nil), diff --git a/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go b/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go index d1d31e196..fae31c435 100644 --- a/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go +++ b/tfprotov6/internal/tfplugin6/tfplugin6_grpc.pb.go @@ -22,7 +22,7 @@ // Code generated by protoc-gen-go-grpc. DO NOT EDIT. // versions: -// - protoc-gen-go-grpc v1.3.0 +// - protoc-gen-go-grpc v1.5.1 // - protoc v5.26.1 // source: tfplugin6.proto @@ -37,8 +37,8 @@ import ( // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 const ( Provider_GetMetadata_FullMethodName = "/tfplugin6.Provider/GetMetadata" @@ -103,8 +103,9 @@ func NewProviderClient(cc grpc.ClientConnInterface) ProviderClient { } func (c *providerClient) GetMetadata(ctx context.Context, in *GetMetadata_Request, opts ...grpc.CallOption) (*GetMetadata_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetMetadata_Response) - err := c.cc.Invoke(ctx, Provider_GetMetadata_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_GetMetadata_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -112,8 +113,9 @@ func (c *providerClient) GetMetadata(ctx context.Context, in *GetMetadata_Reques } func (c *providerClient) GetProviderSchema(ctx context.Context, in *GetProviderSchema_Request, opts ...grpc.CallOption) (*GetProviderSchema_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetProviderSchema_Response) - err := c.cc.Invoke(ctx, Provider_GetProviderSchema_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_GetProviderSchema_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -121,8 +123,9 @@ func (c *providerClient) GetProviderSchema(ctx context.Context, in *GetProviderS } func (c *providerClient) ValidateProviderConfig(ctx context.Context, in *ValidateProviderConfig_Request, opts ...grpc.CallOption) (*ValidateProviderConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateProviderConfig_Response) - err := c.cc.Invoke(ctx, Provider_ValidateProviderConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ValidateProviderConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -130,8 +133,9 @@ func (c *providerClient) ValidateProviderConfig(ctx context.Context, in *Validat } func (c *providerClient) ValidateResourceConfig(ctx context.Context, in *ValidateResourceConfig_Request, opts ...grpc.CallOption) (*ValidateResourceConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateResourceConfig_Response) - err := c.cc.Invoke(ctx, Provider_ValidateResourceConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ValidateResourceConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -139,8 +143,9 @@ func (c *providerClient) ValidateResourceConfig(ctx context.Context, in *Validat } func (c *providerClient) ValidateDataResourceConfig(ctx context.Context, in *ValidateDataResourceConfig_Request, opts ...grpc.CallOption) (*ValidateDataResourceConfig_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ValidateDataResourceConfig_Response) - err := c.cc.Invoke(ctx, Provider_ValidateDataResourceConfig_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ValidateDataResourceConfig_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -148,8 +153,9 @@ func (c *providerClient) ValidateDataResourceConfig(ctx context.Context, in *Val } func (c *providerClient) UpgradeResourceState(ctx context.Context, in *UpgradeResourceState_Request, opts ...grpc.CallOption) (*UpgradeResourceState_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(UpgradeResourceState_Response) - err := c.cc.Invoke(ctx, Provider_UpgradeResourceState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_UpgradeResourceState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -157,8 +163,9 @@ func (c *providerClient) UpgradeResourceState(ctx context.Context, in *UpgradeRe } func (c *providerClient) ConfigureProvider(ctx context.Context, in *ConfigureProvider_Request, opts ...grpc.CallOption) (*ConfigureProvider_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ConfigureProvider_Response) - err := c.cc.Invoke(ctx, Provider_ConfigureProvider_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ConfigureProvider_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -166,8 +173,9 @@ func (c *providerClient) ConfigureProvider(ctx context.Context, in *ConfigurePro } func (c *providerClient) ReadResource(ctx context.Context, in *ReadResource_Request, opts ...grpc.CallOption) (*ReadResource_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReadResource_Response) - err := c.cc.Invoke(ctx, Provider_ReadResource_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ReadResource_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -175,8 +183,9 @@ func (c *providerClient) ReadResource(ctx context.Context, in *ReadResource_Requ } func (c *providerClient) PlanResourceChange(ctx context.Context, in *PlanResourceChange_Request, opts ...grpc.CallOption) (*PlanResourceChange_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(PlanResourceChange_Response) - err := c.cc.Invoke(ctx, Provider_PlanResourceChange_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_PlanResourceChange_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -184,8 +193,9 @@ func (c *providerClient) PlanResourceChange(ctx context.Context, in *PlanResourc } func (c *providerClient) ApplyResourceChange(ctx context.Context, in *ApplyResourceChange_Request, opts ...grpc.CallOption) (*ApplyResourceChange_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ApplyResourceChange_Response) - err := c.cc.Invoke(ctx, Provider_ApplyResourceChange_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ApplyResourceChange_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -193,8 +203,9 @@ func (c *providerClient) ApplyResourceChange(ctx context.Context, in *ApplyResou } func (c *providerClient) ImportResourceState(ctx context.Context, in *ImportResourceState_Request, opts ...grpc.CallOption) (*ImportResourceState_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ImportResourceState_Response) - err := c.cc.Invoke(ctx, Provider_ImportResourceState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ImportResourceState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -202,8 +213,9 @@ func (c *providerClient) ImportResourceState(ctx context.Context, in *ImportReso } func (c *providerClient) MoveResourceState(ctx context.Context, in *MoveResourceState_Request, opts ...grpc.CallOption) (*MoveResourceState_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(MoveResourceState_Response) - err := c.cc.Invoke(ctx, Provider_MoveResourceState_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_MoveResourceState_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -211,8 +223,9 @@ func (c *providerClient) MoveResourceState(ctx context.Context, in *MoveResource } func (c *providerClient) ReadDataSource(ctx context.Context, in *ReadDataSource_Request, opts ...grpc.CallOption) (*ReadDataSource_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ReadDataSource_Response) - err := c.cc.Invoke(ctx, Provider_ReadDataSource_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_ReadDataSource_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -220,8 +233,9 @@ func (c *providerClient) ReadDataSource(ctx context.Context, in *ReadDataSource_ } func (c *providerClient) GetFunctions(ctx context.Context, in *GetFunctions_Request, opts ...grpc.CallOption) (*GetFunctions_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(GetFunctions_Response) - err := c.cc.Invoke(ctx, Provider_GetFunctions_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_GetFunctions_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -229,8 +243,9 @@ func (c *providerClient) GetFunctions(ctx context.Context, in *GetFunctions_Requ } func (c *providerClient) CallFunction(ctx context.Context, in *CallFunction_Request, opts ...grpc.CallOption) (*CallFunction_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(CallFunction_Response) - err := c.cc.Invoke(ctx, Provider_CallFunction_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_CallFunction_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -238,8 +253,9 @@ func (c *providerClient) CallFunction(ctx context.Context, in *CallFunction_Requ } func (c *providerClient) StopProvider(ctx context.Context, in *StopProvider_Request, opts ...grpc.CallOption) (*StopProvider_Response, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StopProvider_Response) - err := c.cc.Invoke(ctx, Provider_StopProvider_FullMethodName, in, out, opts...) + err := c.cc.Invoke(ctx, Provider_StopProvider_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -248,7 +264,7 @@ func (c *providerClient) StopProvider(ctx context.Context, in *StopProvider_Requ // ProviderServer is the server API for Provider service. // All implementations must embed UnimplementedProviderServer -// for forward compatibility +// for forward compatibility. type ProviderServer interface { // GetMetadata returns upfront information about server capabilities and // supported resource types without requiring the server to instantiate all @@ -282,9 +298,12 @@ type ProviderServer interface { mustEmbedUnimplementedProviderServer() } -// UnimplementedProviderServer must be embedded to have forward compatible implementations. -type UnimplementedProviderServer struct { -} +// UnimplementedProviderServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedProviderServer struct{} func (UnimplementedProviderServer) GetMetadata(context.Context, *GetMetadata_Request) (*GetMetadata_Response, error) { return nil, status.Errorf(codes.Unimplemented, "method GetMetadata not implemented") @@ -335,6 +354,7 @@ func (UnimplementedProviderServer) StopProvider(context.Context, *StopProvider_R return nil, status.Errorf(codes.Unimplemented, "method StopProvider not implemented") } func (UnimplementedProviderServer) mustEmbedUnimplementedProviderServer() {} +func (UnimplementedProviderServer) testEmbeddedByValue() {} // UnsafeProviderServer may be embedded to opt out of forward compatibility for this service. // Use of this interface is not recommended, as added methods to ProviderServer will @@ -344,6 +364,13 @@ type UnsafeProviderServer interface { } func RegisterProviderServer(s grpc.ServiceRegistrar, srv ProviderServer) { + // If the following call pancis, it indicates UnimplementedProviderServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } s.RegisterService(&Provider_ServiceDesc, srv) } diff --git a/tfprotov6/resource.go b/tfprotov6/resource.go index bf1a6e387..8ea02a007 100644 --- a/tfprotov6/resource.go +++ b/tfprotov6/resource.go @@ -65,26 +65,6 @@ type ResourceServer interface { MoveResourceState(context.Context, *MoveResourceStateRequest) (*MoveResourceStateResponse, error) } -// ResourceServerWithMoveResourceState is a temporary interface for servers -// to implement MoveResourceState RPC handling. -// -// Deprecated: This interface will be removed in a future version. Use -// ResourceServer instead. -type ResourceServerWithMoveResourceState interface { - ResourceServer - - // MoveResourceState is called when Terraform is asked to change a resource - // type for an existing resource. The provider must accept the change as - // valid by ensuring the source resource type, schema version, and provider - // address are compatible to convert the source state into the target - // resource type and latest state version. - // - // This functionality is only supported in Terraform 1.8 and later. The - // provider must have enabled the MoveResourceState server capability to - // enable these requests. - MoveResourceState(context.Context, *MoveResourceStateRequest) (*MoveResourceStateResponse, error) -} - // ValidateResourceConfigRequest is the request Terraform sends when it // wants to validate a resource's configuration. type ValidateResourceConfigRequest struct { diff --git a/tools/go.mod b/tools/go.mod index 4a5c82a5a..262d3dc1a 100644 --- a/tools/go.mod +++ b/tools/go.mod @@ -1,10 +1,10 @@ module tools -go 1.21 +go 1.22.7 require ( - github.com/hashicorp/copywrite v0.18.0 - google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 + github.com/hashicorp/copywrite v0.19.0 + google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 ) require ( @@ -22,10 +22,11 @@ require ( github.com/go-openapi/errors v0.20.2 // indirect github.com/go-openapi/strfmt v0.21.3 // indirect github.com/golang-jwt/jwt/v4 v4.5.0 // indirect - github.com/golang/protobuf v1.5.2 // indirect + github.com/google/go-cmp v0.6.0 // indirect github.com/google/go-github/v45 v45.2.0 // indirect github.com/google/go-github/v53 v53.0.0 // indirect github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.6.0 // indirect github.com/hashicorp/go-hclog v1.5.0 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/henvic/httpretty v0.0.6 // indirect @@ -55,15 +56,16 @@ require ( github.com/thanhpk/randstr v1.0.4 // indirect github.com/thlib/go-timezone-local v0.0.0-20210907160436-ef149e42d28e // indirect go.mongodb.org/mongo-driver v1.10.0 // indirect - golang.org/x/crypto v0.21.0 // indirect + golang.org/x/crypto v0.27.0 // indirect golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 // indirect - golang.org/x/net v0.23.0 // indirect - golang.org/x/oauth2 v0.8.0 // indirect - golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.18.0 // indirect - golang.org/x/term v0.18.0 // indirect - golang.org/x/text v0.14.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/protobuf v1.33.0 // indirect + golang.org/x/net v0.29.0 // indirect + golang.org/x/oauth2 v0.21.0 // indirect + golang.org/x/sync v0.8.0 // indirect + golang.org/x/sys v0.25.0 // indirect + golang.org/x/term v0.24.0 // indirect + golang.org/x/text v0.18.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 // indirect + google.golang.org/grpc v1.66.0 // indirect + google.golang.org/protobuf v1.34.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/tools/go.sum b/tools/go.sum index 4cda0fa76..519fe4f49 100644 --- a/tools/go.sum +++ b/tools/go.sum @@ -114,7 +114,6 @@ github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QD github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= @@ -129,8 +128,9 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-github/v45 v45.2.0 h1:5oRLszbrkvxDDqBCNj2hjDZMKmvexaZ1xw/FCD+K3FI= github.com/google/go-github/v45 v45.2.0/go.mod h1:FObaZJEDSTa/WGCzZ2Z3eoCDXWJKMenWWTrd8jrta28= github.com/google/go-github/v53 v53.0.0 h1:T1RyHbSnpHYnoF0ZYKiIPSgPtuJ8G6vgc0MKodXsQDQ= @@ -139,16 +139,17 @@ github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/google/uuid v1.1.2 h1:EVhdT+1Kseyi1/pUmXKaFxYsDNy9RQYkMWRH68J/W7Y= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= +github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI= github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/copywrite v0.18.0 h1:6f3aBDyQLBXhD6cdGSnsEM37vCDi3JJrkbR9HPBJf5c= -github.com/hashicorp/copywrite v0.18.0/go.mod h1:6wvQH+ICDoD2bpjO1RJ6fi+h3aY5NeLEM12oTkEtFoc= +github.com/hashicorp/copywrite v0.19.0 h1:f9LVxTDBfFYeQmdBpOsZ+HWknXonI8ZwubbO/RwyuCo= +github.com/hashicorp/copywrite v0.19.0/go.mod h1:6wvQH+ICDoD2bpjO1RJ6fi+h3aY5NeLEM12oTkEtFoc= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= @@ -383,8 +384,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.3.1-0.20221117191849-2c476679df9a/go.mod h1:hebNnKkNXi2UzZN1eVRvBB7co0a+JxK6XbPiWVs/3J4= golang.org/x/crypto v0.7.0/go.mod h1:pYwdfH91IfpZVANVyUOhSIPZaFoJGxTFbZhFTx+dXZU= -golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= -golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= +golang.org/x/crypto v0.27.0 h1:GXm2NjJrPaiv/h1tb2UH8QfgC/hOf/+z0p6PT8o1w7A= +golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17 h1:3MTrJm4PyNL9NBqvYDSj3DHl46qQakyfqfWo4jgfaEM= golang.org/x/exp v0.0.0-20220303212507-bbda1eaf7a17/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE= @@ -423,13 +424,14 @@ golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.23.0 h1:7EYJ93RZ9vYSZAIb2x3lnuvqO5zneoD6IvWjuhfxjTs= -golang.org/x/net v0.23.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= +golang.org/x/net v0.29.0 h1:5ORfpBpCs4HzDYoodCDBbwHzdR5UrLBZ3sOnUJmFoHo= +golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= +golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs= +golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -440,8 +442,9 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.8.0 h1:3NFvSEYkUoMifnESzZl15y791HH1qU2xm6eCJU5ZPXQ= +golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -492,8 +495,8 @@ golang.org/x/sys v0.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.18.0 h1:DBdB3niSjOA/O0blCZBqDefyWNYveAYMNF1Wum0DYQ4= -golang.org/x/sys v0.18.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.25.0 h1:r+8e+loiHxRqhXVl6ML1nO3l1+oFoWbnlu2Ehimmi34= +golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210503060354-a79de5458b56/go.mod h1:tfny5GFUkzUvx4ps4ajbZsCe5lw1metzhBm9T3x7oIY= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -501,8 +504,8 @@ golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.6.0/go.mod h1:m6U89DPEgQRMq3DNkDClhWw02AUbt2daBVO4cn4Hv9U= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= -golang.org/x/term v0.18.0 h1:FcHjZXDMxI8mM3nwhX9HlKop4C0YQvCVCdwYl2wOtE8= -golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= +golang.org/x/term v0.24.0 h1:Mh5cbb+Zk2hqqXNO7S1iTjEphVL+jb8ZWaqh/g+JWkM= +golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -514,8 +517,8 @@ golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.18.0 h1:XvMDiNzPAl0jr17s6W9lcaIhGUfUORdGCNsuLmPG224= +golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -536,7 +539,6 @@ golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8T golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -544,6 +546,8 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1 h1:pPJltXNxVzT4pK9yD8vR9X75DaWYYmLGMsEvBfFQZzQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240903143218-8af14fe29dc1/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= @@ -552,8 +556,10 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0 h1:rNBFJjBCOgVr9pWD7rs/knKL4FRTKgpZmsRfV214zcA= -google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.3.0/go.mod h1:Dk1tviKTvMCz5tvh7t+fh94dhmQVHuCt2OzJB3CTW9Y= +google.golang.org/grpc v1.66.0 h1:DibZuoBznOxbDQxRINckZcUvnCEvrW9pcWIE2yF9r1c= +google.golang.org/grpc v1.66.0/go.mod h1:s3/l6xSSCURdVfAnL+TqCNMyTDAGN6+lZeVxnZR128Y= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 h1:F29+wU6Ee6qgu9TddPgooOdaqsxTMunOoj8KA5yuS5A= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1/go.mod h1:5KF+wpkbTSbGcR9zteSqZV6fqFOWBl4Yde8En8MryZA= 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= @@ -566,8 +572,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= -google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=