hashicorp / terraform-plugin-go

A low-level Go binding for the Terraform protocol for integrations to be built on top of.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Using tf5server with terraform-plugin-sdk/helper/resource Does Not Use Log Sink

bflad opened this issue · comments

terraform-plugin-go version

v0.7.0

Relevant provider source code

Reference: https://github.com/hashicorp/terraform-provider-corner/tree/main/internal/sdkv2provider
Reference: tf5server implementation via hashicorp/terraform-plugin-sdk#857

Terraform Configuration Files

Any will do.

Expected Behavior

TF_ACC=1 go test -timeout=1m -v ./internal/sdkv2provider
=== RUN   TestProvider
--- PASS: TestProvider (0.00s)
=== RUN   TestProvider_impl
--- PASS: TestProvider_impl (0.00s)
=== RUN   TestAccTests
=== RUN   TestAccTests/corner_regions_cty
=== RUN   TestAccTests/corner_user
=== RUN   TestAccTests/corner_regions
=== RUN   TestAccTests/corner_bigint_data
=== RUN   TestAccTests/corner_bigint
=== RUN   TestAccTests/corner_user_cty
--- PASS: TestAccTests (6.76s)
    --- PASS: TestAccTests/corner_regions_cty (1.24s)
    --- PASS: TestAccTests/corner_user (1.02s)
    --- PASS: TestAccTests/corner_regions (0.92s)
    --- PASS: TestAccTests/corner_bigint_data (0.92s)
    --- PASS: TestAccTests/corner_bigint (0.97s)
    --- PASS: TestAccTests/corner_user_cty (1.69s)
PASS
ok      github.com/hashicorp/terraform-provider-corner/internal/sdkv2provider   7.510s

Actual Behavior

TF_ACC=1 go test -timeout=1m -v ./internal/sdkv2provider
=== RUN   TestProvider
--- PASS: TestProvider (0.00s)
=== RUN   TestProvider_impl
--- PASS: TestProvider_impl (0.00s)
=== RUN   TestAccTests
=== RUN   TestAccTests/corner_user
{"@caller":"/Users/bflad/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.7.0/internal/logging/protocol.go:21","@level":"trace","@message":"Received request","@module":"sdk.proto","@timestamp":"2022-02-04T16:28:52.602080-05:00","EXTRA_VALUE_AT_END":null,"tf_proto_version":"5.2","tf_provider_addr":"","tf_req_id":"a24b8a29-628a-01c2-0516-08b260627109","tf_rpc":"GetProviderSchema"}
{"@caller":"/Users/bflad/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.7.0/internal/logging/protocol.go:21","@level":"trace","@message":"Calling downstream","@module":"sdk.proto","@timestamp":"2022-02-04T16:28:52.602157-05:00","EXTRA_VALUE_AT_END":null,"tf_proto_version":"5.2","tf_provider_addr":"","tf_req_id":"a24b8a29-628a-01c2-0516-08b260627109","tf_rpc":"GetProviderSchema"}
{"@caller":"/Users/bflad/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.7.0/internal/logging/protocol.go:21","@level":"trace","@message":"Called downstream","@module":"sdk.proto","@timestamp":"2022-02-04T16:28:52.602257-05:00","EXTRA_VALUE_AT_END":null,"tf_proto_version":"5.2","tf_provider_addr":"","tf_req_id":"a24b8a29-628a-01c2-0516-08b260627109","tf_rpc":"GetProviderSchema"}
{"@caller":"/Users/bflad/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.7.0/internal/logging/protocol.go:21","@level":"trace","@message":"Served request","@module":"sdk.proto","@timestamp":"2022-02-04T16:28:52.602299-05:00","EXTRA_VALUE_AT_END":null,"tf_proto_version":"5.2","tf_provider_addr":"","tf_req_id":"a24b8a29-628a-01c2-0516-08b260627109","tf_rpc":"GetProviderSchema"}
{"@caller":"/Users/bflad/go/pkg/mod/github.com/hashicorp/terraform-plugin-go@v0.7.0/internal/logging/protocol.go:21","@level":"trace","@message":"Received request","@module":"sdk.proto","@timestamp":"2022-02-04T16:28:52.666614-05:00","EXTRA_VALUE_AT_END":null,"tf_proto_version":"5.2","tf_provider_addr":"","tf_req_id":"97a74410-24d3-4d4e-c61c-9062200c75e8","tf_rpc":"GetProviderSchema"}
... many more ...

The ServeOpts are not being passed into the GRPCProviderPlugin.Opts in the Serve function, therefore options like our using our logging sink implementation cannot take affect.

Steps to Reproduce

In a terraform-plugin-sdk/v2 provider:

  1. go mod edit -replace=github.com/hashicorp/terraform-plugin-sdk/v2=/Users/bflad/src/github.com/hashicorp/terraform-plugin-sdk@bflad-tpg-servers
  2. go mod tidy
  3. TF_ACC=1 go test -v ./...

References