Skip to content

Commit e62d24c

Browse files
authored
all: Remove type assertions for Ephemeral RPC implementations (#268)
* all: Remove type assertions for Ephemeral RPC implementations * update with released version
1 parent 788b7cd commit e62d24c

22 files changed

+77
-437
lines changed

go.mod

+7-7
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ toolchain go1.22.7
66

77
require (
88
github.com/google/go-cmp v0.6.0
9-
github.com/hashicorp/terraform-plugin-go v0.25.0
9+
github.com/hashicorp/terraform-plugin-go v0.26.0
1010
github.com/hashicorp/terraform-plugin-log v0.9.0
11-
google.golang.org/grpc v1.67.1
11+
google.golang.org/grpc v1.69.4
1212
)
1313

1414
require (
@@ -17,7 +17,7 @@ require (
1717
github.com/hashicorp/go-hclog v1.5.0 // indirect
1818
github.com/hashicorp/go-plugin v1.6.2 // indirect
1919
github.com/hashicorp/go-uuid v1.0.3 // indirect
20-
github.com/hashicorp/terraform-registry-address v0.2.3 // indirect
20+
github.com/hashicorp/terraform-registry-address v0.2.4 // indirect
2121
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
2222
github.com/hashicorp/yamux v0.1.1 // indirect
2323
github.com/mattn/go-colorable v0.1.12 // indirect
@@ -26,9 +26,9 @@ require (
2626
github.com/oklog/run v1.0.0 // indirect
2727
github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect
2828
github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect
29-
golang.org/x/net v0.33.0 // indirect
30-
golang.org/x/sys v0.28.0 // indirect
29+
golang.org/x/net v0.34.0 // indirect
30+
golang.org/x/sys v0.29.0 // indirect
3131
golang.org/x/text v0.21.0 // indirect
32-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect
33-
google.golang.org/protobuf v1.35.1 // indirect
32+
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
33+
google.golang.org/protobuf v1.36.3 // indirect
3434
)

go.sum

+30-14
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,28 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
55
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
66
github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
77
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
8+
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
9+
github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
10+
github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
11+
github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
812
github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
913
github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
1014
github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI=
1115
github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
16+
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
17+
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
1218
github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c=
1319
github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
1420
github.com/hashicorp/go-plugin v1.6.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
1521
github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
1622
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
1723
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
18-
github.com/hashicorp/terraform-plugin-go v0.25.0 h1:oi13cx7xXA6QciMcpcFi/rwA974rdTxjqEhXJjbAyks=
19-
github.com/hashicorp/terraform-plugin-go v0.25.0/go.mod h1:+SYagMYadJP86Kvn+TGeV+ofr/R3g4/If0O5sO96MVw=
24+
github.com/hashicorp/terraform-plugin-go v0.26.0 h1:cuIzCv4qwigug3OS7iKhpGAbZTiypAfFQmw8aE65O2M=
25+
github.com/hashicorp/terraform-plugin-go v0.26.0/go.mod h1:+CXjuLDiFgqR+GcrM5a2E2Kal5t5q2jb0E3D57tTdNY=
2026
github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
2127
github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
22-
github.com/hashicorp/terraform-registry-address v0.2.3 h1:2TAiKJ1A3MAkZlH1YI/aTVcLZRu7JseiXNRHbOAyoTI=
23-
github.com/hashicorp/terraform-registry-address v0.2.3/go.mod h1:lFHA76T8jfQteVfT7caREqguFrW3c4MFSPhZB7HHgUM=
28+
github.com/hashicorp/terraform-registry-address v0.2.4 h1:JXu/zHB2Ymg/TGVCRu10XqNa4Sh2bWcqCNyKWjnCPJA=
29+
github.com/hashicorp/terraform-registry-address v0.2.4/go.mod h1:tUNYTVyCtU4OIGXXMDp7WNcJ+0W1B4nmstVDgHMjfAU=
2430
github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
2531
github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc=
2632
github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
@@ -48,24 +54,34 @@ github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IU
4854
github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok=
4955
github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g=
5056
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
51-
golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I=
52-
golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4=
57+
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
58+
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
59+
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
60+
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
61+
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
62+
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
63+
go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
64+
go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
65+
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
66+
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
67+
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
68+
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
5369
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
5470
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
5571
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
5672
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
5773
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
5874
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
59-
golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA=
60-
golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
75+
golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
76+
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
6177
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
6278
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
63-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs=
64-
google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU=
65-
google.golang.org/grpc v1.67.1 h1:zWnc1Vrcno+lHZCOofnIMvycFcc0QRGIzm9dhnDX68E=
66-
google.golang.org/grpc v1.67.1/go.mod h1:1gLDyUQU7CTLJI90u3nXZ9ekeghjeM7pTDZlqFNg2AA=
67-
google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFytA=
68-
google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
79+
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE=
80+
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=
81+
google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A=
82+
google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
83+
google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
84+
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
6985
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
7086
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
7187
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

tf5muxserver/mux_server_CloseEphemeralResource.go

+1-18
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,8 @@ func (s *muxServer) CloseEphemeralResource(ctx context.Context, req *tfprotov5.C
2828
}, nil
2929
}
3030

31-
// TODO: Remove and call server.CloseEphemeralResource below directly once interface becomes required.
32-
ephemeralResourceServer, ok := server.(tfprotov5.EphemeralResourceServer)
33-
if !ok {
34-
resp := &tfprotov5.CloseEphemeralResourceResponse{
35-
Diagnostics: []*tfprotov5.Diagnostic{
36-
{
37-
Severity: tfprotov5.DiagnosticSeverityError,
38-
Summary: "CloseEphemeralResource Not Implemented",
39-
Detail: "A CloseEphemeralResource call was received by the provider, however the provider does not implement CloseEphemeralResource. " +
40-
"Either upgrade the provider to a version that implements CloseEphemeralResource or this is a bug in Terraform that should be reported to the Terraform maintainers.",
41-
},
42-
},
43-
}
44-
45-
return resp, nil
46-
}
47-
4831
ctx = logging.Tfprotov5ProviderServerContext(ctx, server)
4932
logging.MuxTrace(ctx, "calling downstream server")
5033

51-
return ephemeralResourceServer.CloseEphemeralResource(ctx, req)
34+
return server.CloseEphemeralResource(ctx, req)
5235
}

tf5muxserver/mux_server_CloseEphemeralResource_test.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,7 @@ func TestMuxServerCloseEphemeralResource(t *testing.T) {
3838
t.Fatalf("unexpected error setting up factory: %s", err)
3939
}
4040

41-
//nolint:staticcheck // Intentionally verifying interface implementation
42-
ephemeralResourceServer, ok := muxServer.ProviderServer().(tfprotov5.ProviderServerWithEphemeralResources)
43-
if !ok {
44-
t.Fatal("muxServer should implement tfprotov5.ProviderServerWithEphemeralResources")
45-
}
46-
47-
_, err = ephemeralResourceServer.CloseEphemeralResource(ctx, &tfprotov5.CloseEphemeralResourceRequest{
41+
_, err = muxServer.ProviderServer().CloseEphemeralResource(ctx, &tfprotov5.CloseEphemeralResourceRequest{
4842
TypeName: "test_ephemeral_resource_server1",
4943
})
5044

@@ -60,7 +54,7 @@ func TestMuxServerCloseEphemeralResource(t *testing.T) {
6054
t.Errorf("unexpected test_ephemeral_resource_server1 CloseEphemeralResource called on server2")
6155
}
6256

63-
_, err = ephemeralResourceServer.CloseEphemeralResource(ctx, &tfprotov5.CloseEphemeralResourceRequest{
57+
_, err = muxServer.ProviderServer().CloseEphemeralResource(ctx, &tfprotov5.CloseEphemeralResourceRequest{
6458
TypeName: "test_ephemeral_resource_server2",
6559
})
6660

tf5muxserver/mux_server_OpenEphemeralResource.go

+1-18
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,8 @@ func (s *muxServer) OpenEphemeralResource(ctx context.Context, req *tfprotov5.Op
2828
}, nil
2929
}
3030

31-
// TODO: Remove and call server.OpenEphemeralResource below directly once interface becomes required.
32-
ephemeralResourceServer, ok := server.(tfprotov5.EphemeralResourceServer)
33-
if !ok {
34-
resp := &tfprotov5.OpenEphemeralResourceResponse{
35-
Diagnostics: []*tfprotov5.Diagnostic{
36-
{
37-
Severity: tfprotov5.DiagnosticSeverityError,
38-
Summary: "OpenEphemeralResource Not Implemented",
39-
Detail: "A OpenEphemeralResource call was received by the provider, however the provider does not implement OpenEphemeralResource. " +
40-
"Either upgrade the provider to a version that implements OpenEphemeralResource or this is a bug in Terraform that should be reported to the Terraform maintainers.",
41-
},
42-
},
43-
}
44-
45-
return resp, nil
46-
}
47-
4831
ctx = logging.Tfprotov5ProviderServerContext(ctx, server)
4932
logging.MuxTrace(ctx, "calling downstream server")
5033

51-
return ephemeralResourceServer.OpenEphemeralResource(ctx, req)
34+
return server.OpenEphemeralResource(ctx, req)
5235
}

tf5muxserver/mux_server_OpenEphemeralResource_test.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,7 @@ func TestMuxServerOpenEphemeralResource(t *testing.T) {
3838
t.Fatalf("unexpected error setting up factory: %s", err)
3939
}
4040

41-
//nolint:staticcheck // Intentionally verifying interface implementation
42-
ephemeralResourceServer, ok := muxServer.ProviderServer().(tfprotov5.ProviderServerWithEphemeralResources)
43-
if !ok {
44-
t.Fatal("muxServer should implement tfprotov5.ProviderServerWithEphemeralResources")
45-
}
46-
47-
_, err = ephemeralResourceServer.OpenEphemeralResource(ctx, &tfprotov5.OpenEphemeralResourceRequest{
41+
_, err = muxServer.ProviderServer().OpenEphemeralResource(ctx, &tfprotov5.OpenEphemeralResourceRequest{
4842
TypeName: "test_ephemeral_resource_server1",
4943
})
5044

@@ -60,7 +54,7 @@ func TestMuxServerOpenEphemeralResource(t *testing.T) {
6054
t.Errorf("unexpected test_ephemeral_resource_server1 OpenEphemeralResource called on server2")
6155
}
6256

63-
_, err = ephemeralResourceServer.OpenEphemeralResource(ctx, &tfprotov5.OpenEphemeralResourceRequest{
57+
_, err = muxServer.ProviderServer().OpenEphemeralResource(ctx, &tfprotov5.OpenEphemeralResourceRequest{
6458
TypeName: "test_ephemeral_resource_server2",
6559
})
6660

tf5muxserver/mux_server_RenewEphemeralResource.go

+1-18
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,8 @@ func (s *muxServer) RenewEphemeralResource(ctx context.Context, req *tfprotov5.R
2828
}, nil
2929
}
3030

31-
// TODO: Remove and call server.RenewEphemeralResource below directly once interface becomes required.
32-
ephemeralResourceServer, ok := server.(tfprotov5.EphemeralResourceServer)
33-
if !ok {
34-
resp := &tfprotov5.RenewEphemeralResourceResponse{
35-
Diagnostics: []*tfprotov5.Diagnostic{
36-
{
37-
Severity: tfprotov5.DiagnosticSeverityError,
38-
Summary: "RenewEphemeralResource Not Implemented",
39-
Detail: "A RenewEphemeralResource call was received by the provider, however the provider does not implement RenewEphemeralResource. " +
40-
"Either upgrade the provider to a version that implements RenewEphemeralResource or this is a bug in Terraform that should be reported to the Terraform maintainers.",
41-
},
42-
},
43-
}
44-
45-
return resp, nil
46-
}
47-
4831
ctx = logging.Tfprotov5ProviderServerContext(ctx, server)
4932
logging.MuxTrace(ctx, "calling downstream server")
5033

51-
return ephemeralResourceServer.RenewEphemeralResource(ctx, req)
34+
return server.RenewEphemeralResource(ctx, req)
5235
}

tf5muxserver/mux_server_RenewEphemeralResource_test.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,7 @@ func TestMuxServerRenewEphemeralResource(t *testing.T) {
3838
t.Fatalf("unexpected error setting up factory: %s", err)
3939
}
4040

41-
//nolint:staticcheck // Intentionally verifying interface implementation
42-
ephemeralResourceServer, ok := muxServer.ProviderServer().(tfprotov5.ProviderServerWithEphemeralResources)
43-
if !ok {
44-
t.Fatal("muxServer should implement tfprotov5.ProviderServerWithEphemeralResources")
45-
}
46-
47-
_, err = ephemeralResourceServer.RenewEphemeralResource(ctx, &tfprotov5.RenewEphemeralResourceRequest{
41+
_, err = muxServer.ProviderServer().RenewEphemeralResource(ctx, &tfprotov5.RenewEphemeralResourceRequest{
4842
TypeName: "test_ephemeral_resource_server1",
4943
})
5044

@@ -60,7 +54,7 @@ func TestMuxServerRenewEphemeralResource(t *testing.T) {
6054
t.Errorf("unexpected test_ephemeral_resource_server1 RenewEphemeralResource called on server2")
6155
}
6256

63-
_, err = ephemeralResourceServer.RenewEphemeralResource(ctx, &tfprotov5.RenewEphemeralResourceRequest{
57+
_, err = muxServer.ProviderServer().RenewEphemeralResource(ctx, &tfprotov5.RenewEphemeralResourceRequest{
6458
TypeName: "test_ephemeral_resource_server2",
6559
})
6660

tf5muxserver/mux_server_ValidateEphemeralResourceConfig.go

+1-18
Original file line numberDiff line numberDiff line change
@@ -28,25 +28,8 @@ func (s *muxServer) ValidateEphemeralResourceConfig(ctx context.Context, req *tf
2828
}, nil
2929
}
3030

31-
// TODO: Remove and call server.ValidateEphemeralResourceConfig below directly once interface becomes required.
32-
ephemeralResourceServer, ok := server.(tfprotov5.EphemeralResourceServer)
33-
if !ok {
34-
resp := &tfprotov5.ValidateEphemeralResourceConfigResponse{
35-
Diagnostics: []*tfprotov5.Diagnostic{
36-
{
37-
Severity: tfprotov5.DiagnosticSeverityError,
38-
Summary: "ValidateEphemeralResourceConfig Not Implemented",
39-
Detail: "A ValidateEphemeralResourceConfig call was received by the provider, however the provider does not implement ValidateEphemeralResourceConfig. " +
40-
"Either upgrade the provider to a version that implements ValidateEphemeralResourceConfig or this is a bug in Terraform that should be reported to the Terraform maintainers.",
41-
},
42-
},
43-
}
44-
45-
return resp, nil
46-
}
47-
4831
ctx = logging.Tfprotov5ProviderServerContext(ctx, server)
4932
logging.MuxTrace(ctx, "calling downstream server")
5033

51-
return ephemeralResourceServer.ValidateEphemeralResourceConfig(ctx, req)
34+
return server.ValidateEphemeralResourceConfig(ctx, req)
5235
}

tf5muxserver/mux_server_ValidateEphemeralResourceConfig_test.go

+2-8
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,7 @@ func TestMuxServerValidateEphemeralResourceConfig(t *testing.T) {
3838
t.Fatalf("unexpected error setting up factory: %s", err)
3939
}
4040

41-
//nolint:staticcheck // Intentionally verifying interface implementation
42-
ephemeralResourceServer, ok := muxServer.ProviderServer().(tfprotov5.ProviderServerWithEphemeralResources)
43-
if !ok {
44-
t.Fatal("muxServer should implement tfprotov5.ProviderServerWithEphemeralResources")
45-
}
46-
47-
_, err = ephemeralResourceServer.ValidateEphemeralResourceConfig(ctx, &tfprotov5.ValidateEphemeralResourceConfigRequest{
41+
_, err = muxServer.ProviderServer().ValidateEphemeralResourceConfig(ctx, &tfprotov5.ValidateEphemeralResourceConfigRequest{
4842
TypeName: "test_ephemeral_resource_server1",
4943
})
5044

@@ -60,7 +54,7 @@ func TestMuxServerValidateEphemeralResourceConfig(t *testing.T) {
6054
t.Errorf("unexpected test_ephemeral_resource_server1 ValidateEphemeralResourceConfig called on server2")
6155
}
6256

63-
_, err = ephemeralResourceServer.ValidateEphemeralResourceConfig(ctx, &tfprotov5.ValidateEphemeralResourceConfigRequest{
57+
_, err = muxServer.ProviderServer().ValidateEphemeralResourceConfig(ctx, &tfprotov5.ValidateEphemeralResourceConfigRequest{
6458
TypeName: "test_ephemeral_resource_server2",
6559
})
6660

0 commit comments

Comments
 (0)