Skip to content

Commit 2483daa

Browse files
authored
actions: Remove unused action schema types and add linked resource configs to validate RPC (#323)
* remove conversion for schema types * add linked resource config to validate * revert go version bump * update plugin go
1 parent 27bdf68 commit 2483daa

File tree

6 files changed

+123
-207
lines changed

6 files changed

+123
-207
lines changed

go.mod

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,29 +6,29 @@ toolchain go1.23.7
66

77
require (
88
github.com/google/go-cmp v0.7.0
9-
github.com/hashicorp/terraform-plugin-go v0.29.0-beta.1
9+
github.com/hashicorp/terraform-plugin-go v0.29.0-beta.1.0.20250904144425-4c19f069077d
1010
github.com/hashicorp/terraform-plugin-log v0.9.0
11-
google.golang.org/grpc v1.74.2
11+
google.golang.org/grpc v1.75.0
1212
)
1313

1414
require (
1515
github.com/fatih/color v1.13.0 // indirect
1616
github.com/golang/protobuf v1.5.4 // indirect
17-
github.com/hashicorp/go-hclog v1.5.0 // indirect
17+
github.com/hashicorp/go-hclog v1.6.3 // indirect
1818
github.com/hashicorp/go-plugin v1.6.3 // indirect
1919
github.com/hashicorp/go-uuid v1.0.3 // indirect
20-
github.com/hashicorp/terraform-registry-address v0.3.0 // indirect
20+
github.com/hashicorp/terraform-registry-address v0.4.0 // indirect
2121
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
22-
github.com/hashicorp/yamux v0.1.1 // indirect
22+
github.com/hashicorp/yamux v0.1.2 // indirect
2323
github.com/mattn/go-colorable v0.1.12 // indirect
2424
github.com/mattn/go-isatty v0.0.17 // indirect
2525
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
26-
github.com/oklog/run v1.0.0 // indirect
26+
github.com/oklog/run v1.1.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.41.0 // indirect
30-
golang.org/x/sys v0.33.0 // indirect
31-
golang.org/x/text v0.26.0 // indirect
32-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a // indirect
33-
google.golang.org/protobuf v1.36.6 // indirect
29+
golang.org/x/net v0.43.0 // indirect
30+
golang.org/x/sys v0.35.0 // indirect
31+
golang.org/x/text v0.28.0 // indirect
32+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 // indirect
33+
google.golang.org/protobuf v1.36.8 // indirect
3434
)

go.sum

Lines changed: 34 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,22 @@ github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
1515
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
1616
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
1717
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
18-
github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c=
19-
github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
18+
github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k=
19+
github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M=
2020
github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg=
2121
github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0=
2222
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
2323
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
24-
github.com/hashicorp/terraform-plugin-go v0.29.0-beta.1 h1:xeHlRQYev3iMXwX2W7+D1bSfLRBs9jojZXqE6hmNxMI=
25-
github.com/hashicorp/terraform-plugin-go v0.29.0-beta.1/go.mod h1:5pww/UULn9C2tItq6o5sbScEkJxBUt9X9kI4DkeRsIw=
24+
github.com/hashicorp/terraform-plugin-go v0.29.0-beta.1.0.20250904144425-4c19f069077d h1:sr9OmOzsMvVLJNS03rXBaKlnN04dIbv3GIysvb29lEA=
25+
github.com/hashicorp/terraform-plugin-go v0.29.0-beta.1.0.20250904144425-4c19f069077d/go.mod h1:ALzufgzXQhdmGGUgpYRwUtBdMluh8cYn8vNnmQXxo5s=
2626
github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
2727
github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
28-
github.com/hashicorp/terraform-registry-address v0.3.0 h1:HMpK3nqaGFPS9VmgRXrJL/dzHNdheGVKk5k7VlFxzCo=
29-
github.com/hashicorp/terraform-registry-address v0.3.0/go.mod h1:jRGCMiLaY9zii3GLC7hqpSnwhfnCN5yzvY0hh4iCGbM=
28+
github.com/hashicorp/terraform-registry-address v0.4.0 h1:S1yCGomj30Sao4l5BMPjTGZmCNzuv7/GDTDX99E9gTk=
29+
github.com/hashicorp/terraform-registry-address v0.4.0/go.mod h1:LRS1Ay0+mAiRkUyltGT+UHWkIqTFvigGn/LbMshfflE=
3030
github.com/hashicorp/terraform-svchost v0.1.1 h1:EZZimZ1GxdqFRinZ1tpJwVxxt49xc/S52uzrw4x0jKQ=
3131
github.com/hashicorp/terraform-svchost v0.1.1/go.mod h1:mNsjQfZyf/Jhz35v6/0LWcv26+X7JPS+buii2c9/ctc=
32-
github.com/hashicorp/yamux v0.1.1 h1:yrQxtgseBDrq9Y652vSRDvsKCJKOUD+GzTS4Y0Y8pvE=
33-
github.com/hashicorp/yamux v0.1.1/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ=
32+
github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8=
33+
github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns=
3434
github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c=
3535
github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo=
3636
github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
@@ -42,8 +42,8 @@ github.com/mattn/go-isatty v0.0.17 h1:BTarxUcIeDqL27Mc+vyvdWYSL28zpIhv3RoTdsLMPn
4242
github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
4343
github.com/mitchellh/go-testing-interface v1.14.1 h1:jrgshOhYAUVNMAJiKbEu7EqAwgJJ2JqpQmpLJOu07cU=
4444
github.com/mitchellh/go-testing-interface v1.14.1/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
45-
github.com/oklog/run v1.0.0 h1:Ru7dDtJNOyC66gQ5dQmaCa0qIsAUFY3sFpK1Xk8igrw=
46-
github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA=
45+
github.com/oklog/run v1.1.0 h1:GEenZ1cK0+q0+wsJew9qUg/DyD8k3JzYsZAi5gYi2mA=
46+
github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DVU=
4747
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
4848
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
4949
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
@@ -56,34 +56,36 @@ github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAh
5656
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
5757
go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
5858
go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
59-
go.opentelemetry.io/otel v1.36.0 h1:UumtzIklRBY6cI/lllNZlALOF5nNIzJVb16APdvgTXg=
60-
go.opentelemetry.io/otel v1.36.0/go.mod h1:/TcFMXYjyRNh8khOAO9ybYkqaDBb/70aVwkNML4pP8E=
61-
go.opentelemetry.io/otel/metric v1.36.0 h1:MoWPKVhQvJ+eeXWHFBOPoBOi20jh6Iq2CcCREuTYufE=
62-
go.opentelemetry.io/otel/metric v1.36.0/go.mod h1:zC7Ks+yeyJt4xig9DEw9kuUFe5C3zLbVjV2PzT6qzbs=
63-
go.opentelemetry.io/otel/sdk v1.36.0 h1:b6SYIuLRs88ztox4EyrvRti80uXIFy+Sqzoh9kFULbs=
64-
go.opentelemetry.io/otel/sdk v1.36.0/go.mod h1:+lC+mTgD+MUWfjJubi2vvXWcVxyr9rmlshZni72pXeY=
65-
go.opentelemetry.io/otel/sdk/metric v1.36.0 h1:r0ntwwGosWGaa0CrSt8cuNuTcccMXERFwHX4dThiPis=
66-
go.opentelemetry.io/otel/sdk/metric v1.36.0/go.mod h1:qTNOhFDfKRwX0yXOqJYegL5WRaW376QbB7P4Pb0qva4=
67-
go.opentelemetry.io/otel/trace v1.36.0 h1:ahxWNuqZjpdiFAyrIoQ4GIiAIhxAunQR6MUoKrsNd4w=
68-
go.opentelemetry.io/otel/trace v1.36.0/go.mod h1:gQ+OnDZzrybY4k4seLzPAWNwVBBVlF2szhehOBB/tGA=
69-
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
70-
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
59+
go.opentelemetry.io/otel v1.37.0 h1:9zhNfelUvx0KBfu/gb+ZgeAfAgtWrfHJZcAqFC228wQ=
60+
go.opentelemetry.io/otel v1.37.0/go.mod h1:ehE/umFRLnuLa/vSccNq9oS1ErUlkkK71gMcN34UG8I=
61+
go.opentelemetry.io/otel/metric v1.37.0 h1:mvwbQS5m0tbmqML4NqK+e3aDiO02vsf/WgbsdpcPoZE=
62+
go.opentelemetry.io/otel/metric v1.37.0/go.mod h1:04wGrZurHYKOc+RKeye86GwKiTb9FKm1WHtO+4EVr2E=
63+
go.opentelemetry.io/otel/sdk v1.37.0 h1:ItB0QUqnjesGRvNcmAcU0LyvkVyGJ2xftD29bWdDvKI=
64+
go.opentelemetry.io/otel/sdk v1.37.0/go.mod h1:VredYzxUvuo2q3WRcDnKDjbdvmO0sCzOvVAiY+yUkAg=
65+
go.opentelemetry.io/otel/sdk/metric v1.37.0 h1:90lI228XrB9jCMuSdA0673aubgRobVZFhbjxHHspCPc=
66+
go.opentelemetry.io/otel/sdk/metric v1.37.0/go.mod h1:cNen4ZWfiD37l5NhS+Keb5RXVWZWpRE+9WyVCpbo5ps=
67+
go.opentelemetry.io/otel/trace v1.37.0 h1:HLdcFNbRQBE2imdSEgm/kwqmQj1Or1l/7bW6mxVK7z4=
68+
go.opentelemetry.io/otel/trace v1.37.0/go.mod h1:TlgrlQ+PtQO5XFerSPUYG0JSgGyryXewPGyayAWSBS0=
69+
golang.org/x/net v0.43.0 h1:lat02VYK2j4aLzMzecihNvTlJNQUq316m2Mr9rnM6YE=
70+
golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg=
7171
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7272
golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7373
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7474
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7575
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7676
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
77-
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
78-
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
79-
golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
80-
golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
81-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a h1:v2PbRU4K3llS09c7zodFpNePeamkAwG3mPrAery9VeE=
82-
google.golang.org/genproto/googleapis/rpc v0.0.0-20250528174236-200df99c418a/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
83-
google.golang.org/grpc v1.74.2 h1:WoosgB65DlWVC9FqI82dGsZhWFNBSLjQ84bjROOpMu4=
84-
google.golang.org/grpc v1.74.2/go.mod h1:CtQ+BGjaAIXHs/5YS3i473GqwBBa1zGQNevxdeBEXrM=
85-
google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
86-
google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
77+
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
78+
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
79+
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
80+
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
81+
gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
82+
gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
83+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7 h1:pFyd6EwwL2TqFf8emdthzeX+gZE1ElRq3iM8pui4KBY=
84+
google.golang.org/genproto/googleapis/rpc v0.0.0-20250707201910-8d1bb00bc6a7/go.mod h1:qQ0YXyHHx3XkvlzUtpXDkS29lDSafHMZBAZDc03LQ3A=
85+
google.golang.org/grpc v1.75.0 h1:+TW+dqTd2Biwe6KKfhE5JpiYIBWq865PhKGSXiivqt4=
86+
google.golang.org/grpc v1.75.0/go.mod h1:JtPAzKiq4v1xcAB2hydNlWI2RnF85XXcV0mhKXr2ecQ=
87+
google.golang.org/protobuf v1.36.8 h1:xHScyCOEuuwZEc6UtSOvPbAT4zRh0xcNRYekJwfqyMc=
88+
google.golang.org/protobuf v1.36.8/go.mod h1:fuxRtAxBytpl4zzqUh6/eyUujkJdNiuEkXntxiD/uRU=
8789
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
8890
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
8991
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/tfprotov5tov6/tfprotov5tov6.go

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1082,18 +1082,9 @@ func ActionSchema(in *tfprotov5.ActionSchema) *tfprotov6.ActionSchema {
10821082
Schema: Schema(in.Schema),
10831083
}
10841084

1085-
switch actionSchemaType := in.Type.(type) {
1085+
switch in.Type.(type) {
10861086
case tfprotov5.UnlinkedActionSchemaType:
10871087
actionSchema.Type = tfprotov6.UnlinkedActionSchemaType{}
1088-
case tfprotov5.LifecycleActionSchemaType:
1089-
actionSchema.Type = tfprotov6.LifecycleActionSchemaType{
1090-
Executes: tfprotov6.LifecycleExecutionOrder(actionSchemaType.Executes),
1091-
LinkedResource: LinkedResourceSchema(actionSchemaType.LinkedResource),
1092-
}
1093-
case tfprotov5.LinkedActionSchemaType:
1094-
actionSchema.Type = tfprotov6.LinkedActionSchemaType{
1095-
LinkedResources: LinkedResourceSchemas(actionSchemaType.LinkedResources),
1096-
}
10971088
default:
10981089
// It is not currently possible to create tfprotov5.ActionSchemaType
10991090
// implementations outside the terraform-plugin-go module. If this panic was reached,
@@ -1105,36 +1096,38 @@ func ActionSchema(in *tfprotov5.ActionSchema) *tfprotov6.ActionSchema {
11051096
return actionSchema
11061097
}
11071098

1108-
func LinkedResourceSchemas(in []*tfprotov5.LinkedResourceSchema) []*tfprotov6.LinkedResourceSchema {
1109-
schemas := make([]*tfprotov6.LinkedResourceSchema, 0, len(in))
1110-
1111-
for _, schema := range in {
1112-
schemas = append(schemas, LinkedResourceSchema(schema))
1113-
}
1114-
1115-
return schemas
1116-
}
1117-
1118-
func LinkedResourceSchema(in *tfprotov5.LinkedResourceSchema) *tfprotov6.LinkedResourceSchema {
1099+
func ValidateActionConfigRequest(in *tfprotov5.ValidateActionConfigRequest) *tfprotov6.ValidateActionConfigRequest {
11191100
if in == nil {
11201101
return nil
11211102
}
11221103

1123-
return &tfprotov6.LinkedResourceSchema{
1124-
TypeName: in.TypeName,
1125-
Description: in.Description,
1104+
return &tfprotov6.ValidateActionConfigRequest{
1105+
Config: DynamicValue(in.Config),
1106+
ActionType: in.ActionType,
1107+
LinkedResources: LinkedResourceConfigs(in.LinkedResources),
11261108
}
11271109
}
11281110

1129-
func ValidateActionConfigRequest(in *tfprotov5.ValidateActionConfigRequest) *tfprotov6.ValidateActionConfigRequest {
1111+
func LinkedResourceConfigs(in []*tfprotov5.LinkedResourceConfig) []*tfprotov6.LinkedResourceConfig {
11301112
if in == nil {
11311113
return nil
11321114
}
11331115

1134-
return &tfprotov6.ValidateActionConfigRequest{
1135-
Config: DynamicValue(in.Config),
1136-
ActionType: in.ActionType,
1116+
linkedResources := make([]*tfprotov6.LinkedResourceConfig, 0, len(in))
1117+
1118+
for _, inLinkedResource := range in {
1119+
if inLinkedResource == nil {
1120+
linkedResources = append(linkedResources, nil)
1121+
continue
1122+
}
1123+
1124+
linkedResources = append(linkedResources, &tfprotov6.LinkedResourceConfig{
1125+
TypeName: inLinkedResource.TypeName,
1126+
Config: DynamicValue(inLinkedResource.Config),
1127+
})
11371128
}
1129+
1130+
return linkedResources
11381131
}
11391132

11401133
func ValidateActionConfigResponse(in *tfprotov5.ValidateActionConfigResponse) *tfprotov6.ValidateActionConfigResponse {

internal/tfprotov5tov6/tfprotov5tov6_test.go

Lines changed: 18 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -3173,60 +3173,6 @@ func TestActionSchema(t *testing.T) {
31733173
Type: tfprotov6.UnlinkedActionSchemaType{},
31743174
},
31753175
},
3176-
"lifecycle": {
3177-
in: &tfprotov5.ActionSchema{
3178-
Schema: testTfprotov5Schema,
3179-
Type: tfprotov5.LifecycleActionSchemaType{
3180-
Executes: tfprotov5.LifecycleExecutionOrderAfter,
3181-
LinkedResource: &tfprotov5.LinkedResourceSchema{
3182-
TypeName: "test_resource_linked_1",
3183-
Description: "This is a linked resource.",
3184-
},
3185-
},
3186-
},
3187-
expected: &tfprotov6.ActionSchema{
3188-
Schema: testTfprotov6Schema,
3189-
Type: tfprotov6.LifecycleActionSchemaType{
3190-
Executes: tfprotov6.LifecycleExecutionOrderAfter,
3191-
LinkedResource: &tfprotov6.LinkedResourceSchema{
3192-
TypeName: "test_resource_linked_1",
3193-
Description: "This is a linked resource.",
3194-
},
3195-
},
3196-
},
3197-
},
3198-
"linked": {
3199-
in: &tfprotov5.ActionSchema{
3200-
Schema: testTfprotov5Schema,
3201-
Type: tfprotov5.LinkedActionSchemaType{
3202-
LinkedResources: []*tfprotov5.LinkedResourceSchema{
3203-
{
3204-
TypeName: "test_resource_linked_1",
3205-
Description: "This is a linked resource.",
3206-
},
3207-
{
3208-
TypeName: "test_resource_linked_2",
3209-
Description: "This is also a linked resource.",
3210-
},
3211-
},
3212-
},
3213-
},
3214-
expected: &tfprotov6.ActionSchema{
3215-
Schema: testTfprotov6Schema,
3216-
Type: tfprotov6.LinkedActionSchemaType{
3217-
LinkedResources: []*tfprotov6.LinkedResourceSchema{
3218-
{
3219-
TypeName: "test_resource_linked_1",
3220-
Description: "This is a linked resource.",
3221-
},
3222-
{
3223-
TypeName: "test_resource_linked_2",
3224-
Description: "This is also a linked resource.",
3225-
},
3226-
},
3227-
},
3228-
},
3229-
},
32303176
}
32313177

32323178
for name, testCase := range testCases {
@@ -3264,6 +3210,24 @@ func TestValidateActionConfigRequest(t *testing.T) {
32643210
ActionType: "test_action",
32653211
},
32663212
},
3213+
"linked-resources": {
3214+
in: &tfprotov5.ValidateActionConfigRequest{
3215+
LinkedResources: []*tfprotov5.LinkedResourceConfig{
3216+
{
3217+
TypeName: "test_linked_resource",
3218+
Config: &testTfprotov5DynamicValue,
3219+
},
3220+
},
3221+
},
3222+
expected: &tfprotov6.ValidateActionConfigRequest{
3223+
LinkedResources: []*tfprotov6.LinkedResourceConfig{
3224+
{
3225+
TypeName: "test_linked_resource",
3226+
Config: &testTfprotov6DynamicValue,
3227+
},
3228+
},
3229+
},
3230+
},
32673231
}
32683232

32693233
for name, testCase := range testCases {

internal/tfprotov6tov5/tfprotov6tov5.go

Lines changed: 21 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1158,18 +1158,9 @@ func ActionSchema(in *tfprotov6.ActionSchema) (*tfprotov5.ActionSchema, error) {
11581158
Schema: v5Schema,
11591159
}
11601160

1161-
switch actionSchemaType := in.Type.(type) {
1161+
switch in.Type.(type) {
11621162
case tfprotov6.UnlinkedActionSchemaType:
11631163
actionSchema.Type = tfprotov5.UnlinkedActionSchemaType{}
1164-
case tfprotov6.LifecycleActionSchemaType:
1165-
actionSchema.Type = tfprotov5.LifecycleActionSchemaType{
1166-
Executes: tfprotov5.LifecycleExecutionOrder(actionSchemaType.Executes),
1167-
LinkedResource: LinkedResourceSchema(actionSchemaType.LinkedResource),
1168-
}
1169-
case tfprotov6.LinkedActionSchemaType:
1170-
actionSchema.Type = tfprotov5.LinkedActionSchemaType{
1171-
LinkedResources: LinkedResourceSchemas(actionSchemaType.LinkedResources),
1172-
}
11731164
default:
11741165
// It is not currently possible to create tfprotov6.ActionSchemaType
11751166
// implementations outside the terraform-plugin-go module. If this panic was reached,
@@ -1181,36 +1172,38 @@ func ActionSchema(in *tfprotov6.ActionSchema) (*tfprotov5.ActionSchema, error) {
11811172
return actionSchema, nil
11821173
}
11831174

1184-
func LinkedResourceSchemas(in []*tfprotov6.LinkedResourceSchema) []*tfprotov5.LinkedResourceSchema {
1185-
schemas := make([]*tfprotov5.LinkedResourceSchema, 0, len(in))
1186-
1187-
for _, schema := range in {
1188-
schemas = append(schemas, LinkedResourceSchema(schema))
1189-
}
1190-
1191-
return schemas
1192-
}
1193-
1194-
func LinkedResourceSchema(in *tfprotov6.LinkedResourceSchema) *tfprotov5.LinkedResourceSchema {
1175+
func ValidateActionConfigRequest(in *tfprotov6.ValidateActionConfigRequest) *tfprotov5.ValidateActionConfigRequest {
11951176
if in == nil {
11961177
return nil
11971178
}
11981179

1199-
return &tfprotov5.LinkedResourceSchema{
1200-
TypeName: in.TypeName,
1201-
Description: in.Description,
1180+
return &tfprotov5.ValidateActionConfigRequest{
1181+
Config: DynamicValue(in.Config),
1182+
ActionType: in.ActionType,
1183+
LinkedResources: LinkedResourceConfigs(in.LinkedResources),
12021184
}
12031185
}
12041186

1205-
func ValidateActionConfigRequest(in *tfprotov6.ValidateActionConfigRequest) *tfprotov5.ValidateActionConfigRequest {
1187+
func LinkedResourceConfigs(in []*tfprotov6.LinkedResourceConfig) []*tfprotov5.LinkedResourceConfig {
12061188
if in == nil {
12071189
return nil
12081190
}
12091191

1210-
return &tfprotov5.ValidateActionConfigRequest{
1211-
Config: DynamicValue(in.Config),
1212-
ActionType: in.ActionType,
1192+
linkedResources := make([]*tfprotov5.LinkedResourceConfig, 0, len(in))
1193+
1194+
for _, inLinkedResource := range in {
1195+
if inLinkedResource == nil {
1196+
linkedResources = append(linkedResources, nil)
1197+
continue
1198+
}
1199+
1200+
linkedResources = append(linkedResources, &tfprotov5.LinkedResourceConfig{
1201+
TypeName: inLinkedResource.TypeName,
1202+
Config: DynamicValue(inLinkedResource.Config),
1203+
})
12131204
}
1205+
1206+
return linkedResources
12141207
}
12151208

12161209
func ValidateActionConfigResponse(in *tfprotov6.ValidateActionConfigResponse) *tfprotov5.ValidateActionConfigResponse {

0 commit comments

Comments
 (0)