Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
49d363c
Started implementing resource identity for tf5muxserver
rainkwan Feb 11, 2025
26efadd
Fixed a bug to get a test to pass
rainkwan Feb 11, 2025
a90c989
Fixed a bug to get a test to pass
rainkwan Feb 11, 2025
89cdb3d
populate resourceIdentity map in serverDiscovery and pass a schema wi…
ansgarm Feb 11, 2025
10b6df2
fix copy paste wording for new error
ansgarm Feb 11, 2025
300093d
fix error message that was accidentally changed
ansgarm Feb 11, 2025
0473cdd
fix GetResourceIdentitySchemas test
ansgarm Feb 11, 2025
45960d4
add resource identity mapping support to tfprotov5tov6
ansgarm Feb 11, 2025
bcb529b
Updated tf6muxserver to add resource identity
rainkwan Feb 11, 2025
8cb8168
Added resource identity to internal/tfprotov6to5
rainkwan Feb 11, 2025
9c4f009
implement new rpcs for tf5to6server.go for resource identity
ansgarm Feb 11, 2025
5d4d1cb
wip - maybe this works to temp disable lint
ansgarm Feb 11, 2025
236a0f6
Added resource identity to internal/tf6to5test server and updated Get…
rainkwan Feb 11, 2025
4edd213
Updated resource identity in internal/tf5to6test server and added no …
rainkwan Feb 11, 2025
1d6c7d9
remove obsolete todo comments (they were all already addressed)
ansgarm Feb 13, 2025
709401d
remove resourceIdentity map as we already expect resource and resourc…
ansgarm Feb 13, 2025
3f2383e
safely skip server if it does not implement ProviderServerWithResourc…
ansgarm Feb 13, 2025
5c45d40
remove unused error
ansgarm Feb 18, 2025
5d5820e
Update .golangci.yml
rainkwan Feb 18, 2025
df22162
Updated for linters
rainkwan Feb 18, 2025
7bf12e8
Added changelog
rainkwan Feb 18, 2025
ab74492
Update tf5muxserver/mux_server_GetResourceIdentitySchemas.go
rainkwan Feb 19, 2025
4957a7e
Chore: removed extra line triggering linter
rainkwan Feb 19, 2025
257d83a
remove server discovery locking which wasn't needed
ansgarm Feb 24, 2025
5de4f26
remove unnecessary test server func
ansgarm Feb 24, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changes/unreleased/FEATURES-20250218-113243.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
kind: FEATURES
body: 'tf5muxserver+tf6muxserver+tf6to5server+tf5to6server: Upgraded protocols and added types to support the new resource identity feature'
time: 2025-02-18T11:32:43.959465-05:00
custom:
Issue: "278"
6 changes: 3 additions & 3 deletions .golangci.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
issues:
max-per-linter: 0
max-issues-per-linter: 0
max-same-issues: 0

linters:
disable-all: true
enable:
- copyloopvar
- durationcheck
- errcheck
- exportloopref
- forcetypeassert
- gofmt
- gosimple
Expand All @@ -19,7 +19,7 @@ linters:
- paralleltest
- predeclared
- staticcheck
- tenv
- unconvert
- unparam
- unused
- usetesting
10 changes: 5 additions & 5 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,16 @@ toolchain go1.22.7

require (
github.com/google/go-cmp v0.6.0
github.com/hashicorp/terraform-plugin-go v0.26.0
github.com/hashicorp/terraform-plugin-go v0.26.1-0.20250210164912-1d335b3d83c3
github.com/hashicorp/terraform-plugin-log v0.9.0
google.golang.org/grpc v1.69.4
google.golang.org/grpc v1.70.0
)

require (
github.com/fatih/color v1.13.0 // indirect
github.com/golang/protobuf v1.5.4 // indirect
github.com/hashicorp/go-hclog v1.5.0 // indirect
github.com/hashicorp/go-plugin v1.6.2 // indirect
github.com/hashicorp/go-plugin v1.6.3 // indirect
github.com/hashicorp/go-uuid v1.0.3 // indirect
github.com/hashicorp/terraform-registry-address v0.2.4 // indirect
github.com/hashicorp/terraform-svchost v0.1.1 // indirect
Expand All @@ -29,6 +29,6 @@ require (
golang.org/x/net v0.34.0 // indirect
golang.org/x/sys v0.29.0 // indirect
golang.org/x/text v0.21.0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 // indirect
google.golang.org/protobuf v1.36.3 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect
google.golang.org/protobuf v1.36.4 // indirect
)
40 changes: 20 additions & 20 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@ 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/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.2 h1:zdGAEd0V1lCaU0u+MxWQhtSDQmahpkwOun8U8EiRVog=
github.com/hashicorp/go-plugin v1.6.2/go.mod h1:CkgLQ5CZqNmdL9U9JzM532t8ZiYQ35+pj3b1FD37R0Q=
github.com/hashicorp/go-plugin v1.6.3 h1:xgHB+ZUSYeuJi96WtxEjzi23uh7YQpznjGh0U0UUrwg=
github.com/hashicorp/go-plugin v1.6.3/go.mod h1:MRobyh+Wc/nYy1V4KAXUiYfzxoYhs7V1mlH1Z7iY2h0=
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-go v0.26.0 h1:cuIzCv4qwigug3OS7iKhpGAbZTiypAfFQmw8aE65O2M=
github.com/hashicorp/terraform-plugin-go v0.26.0/go.mod h1:+CXjuLDiFgqR+GcrM5a2E2Kal5t5q2jb0E3D57tTdNY=
github.com/hashicorp/terraform-plugin-go v0.26.1-0.20250210164912-1d335b3d83c3 h1:1mWCKXiCv8KChHk9mHJjJvhWHBQ+MFkHfowvVkiiQk0=
github.com/hashicorp/terraform-plugin-go v0.26.1-0.20250210164912-1d335b3d83c3/go.mod h1:6Ivn6mt9Ov7gMiYNNCRsQm4N0Kaq28gv3z/Q64qcBwI=
github.com/hashicorp/terraform-plugin-log v0.9.0 h1:i7hOA+vdAItN1/7UrfBqBwvYPQ9TFvymaRGZED3FCV0=
github.com/hashicorp/terraform-plugin-log v0.9.0/go.mod h1:rKL8egZQ/eXSyDqzLUuwUYLVdlYeamldAHSxjUFADow=
github.com/hashicorp/terraform-registry-address v0.2.4 h1:JXu/zHB2Ymg/TGVCRu10XqNa4Sh2bWcqCNyKWjnCPJA=
Expand Down Expand Up @@ -54,16 +54,16 @@ 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=
go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY=
go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE=
go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE=
go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY=
go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk=
go.opentelemetry.io/otel/sdk v1.31.0/go.mod h1:TfRbMdhvxIIr/B2N2LQW2S5v9m3gOQ/08KsbbO5BPT0=
go.opentelemetry.io/otel/sdk/metric v1.31.0 h1:i9hxxLJF/9kkvfHppyLL55aW7iIJz4JjxTeYusH7zMc=
go.opentelemetry.io/otel/sdk/metric v1.31.0/go.mod h1:CRInTMVvNhUKgSAMbKyTMxqOBC0zgyxzW55lZzX43Y8=
go.opentelemetry.io/otel/trace v1.31.0 h1:ffjsj1aRouKewfr85U2aGagJ46+MvodynlQ1HYdmJys=
go.opentelemetry.io/otel/trace v1.31.0/go.mod h1:TXZkRk7SM2ZQLtR6eoAWQFIHPvzQ06FJAsO1tJg480A=
go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M=
go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8=
go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4=
go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU=
go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU=
go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ=
go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8=
golang.org/x/net v0.34.0 h1:Mb7Mrk043xzHgnRM88suvJFwzVrRfHEHJEl5/71CKw0=
golang.org/x/net v0.34.0/go.mod h1:di0qlW3YNM5oh6GqDGQr92MyTozJPmybPK4Ev/Gm31k=
golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
Expand All @@ -76,12 +76,12 @@ golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU=
golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo=
golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53 h1:X58yt85/IXCx0Y3ZwN6sEIKZzQtDEYaBWrDvErdXrRE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241015192408-796eee8c2d53/go.mod h1:GX3210XPVPUjJbTUbvwI8f2IpZDMZuPJWDzDuebbviI=
google.golang.org/grpc v1.69.4 h1:MF5TftSMkd8GLw/m0KM6V8CMOCY6NZ1NQDPGFgbTt4A=
google.golang.org/grpc v1.69.4/go.mod h1:vyjdE6jLBI76dgpDojsFGNaHlxdjXN9ghpnd2o7JGZ4=
google.golang.org/protobuf v1.36.3 h1:82DV7MYdb8anAVi3qge1wSnMDrnKK7ebr+I0hHRN1BU=
google.golang.org/protobuf v1.36.3/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o=
google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU=
google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ=
google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw=
google.golang.org/protobuf v1.36.4 h1:6A3ZDJHn/eNqc1i+IdefRzy/9PokBTPvcqMySR7NNIM=
google.golang.org/protobuf v1.36.4/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
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=
24 changes: 24 additions & 0 deletions internal/tf5testserver/tf5testserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ type TestServer struct {
GetProviderSchemaCalled bool
GetProviderSchemaResponse *tfprotov5.GetProviderSchemaResponse

GetResourceIdentitySchemasCalled bool
GetResourceIdentitySchemasResponse *tfprotov5.GetResourceIdentitySchemasResponse

ImportResourceStateCalled map[string]bool

MoveResourceStateCalled map[string]bool
Expand All @@ -52,6 +55,8 @@ type TestServer struct {
StopProviderCalled bool
StopProviderResponse *tfprotov5.StopProviderResponse

UpgradeResourceIdentityCalled map[string]bool

UpgradeResourceStateCalled map[string]bool

ValidateEphemeralResourceConfigCalled map[string]bool
Expand Down Expand Up @@ -136,6 +141,16 @@ func (s *TestServer) GetProviderSchema(_ context.Context, _ *tfprotov5.GetProvid
return &tfprotov5.GetProviderSchemaResponse{}, nil
}

func (s *TestServer) GetResourceIdentitySchemas(_ context.Context, _ *tfprotov5.GetResourceIdentitySchemasRequest) (*tfprotov5.GetResourceIdentitySchemasResponse, error) {
s.GetResourceIdentitySchemasCalled = true

if s.GetResourceIdentitySchemasResponse != nil {
return s.GetResourceIdentitySchemasResponse, nil
}

return &tfprotov5.GetResourceIdentitySchemasResponse{}, nil
}

func (s *TestServer) ImportResourceState(_ context.Context, req *tfprotov5.ImportResourceStateRequest) (*tfprotov5.ImportResourceStateResponse, error) {
if s.ImportResourceStateCalled == nil {
s.ImportResourceStateCalled = make(map[string]bool)
Expand Down Expand Up @@ -209,6 +224,15 @@ func (s *TestServer) StopProvider(_ context.Context, _ *tfprotov5.StopProviderRe
return &tfprotov5.StopProviderResponse{}, nil
}

func (s *TestServer) UpgradeResourceIdentity(_ context.Context, req *tfprotov5.UpgradeResourceIdentityRequest) (*tfprotov5.UpgradeResourceIdentityResponse, error) {
if s.UpgradeResourceIdentityCalled == nil {
s.UpgradeResourceIdentityCalled = make(map[string]bool)
}

s.UpgradeResourceIdentityCalled[req.TypeName] = true
return nil, nil
}

func (s *TestServer) UpgradeResourceState(_ context.Context, req *tfprotov5.UpgradeResourceStateRequest) (*tfprotov5.UpgradeResourceStateResponse, error) {
if s.UpgradeResourceStateCalled == nil {
s.UpgradeResourceStateCalled = make(map[string]bool)
Expand Down
24 changes: 24 additions & 0 deletions internal/tf6testserver/tf6testserver.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@ type TestServer struct {
GetProviderSchemaCalled bool
GetProviderSchemaResponse *tfprotov6.GetProviderSchemaResponse

GetResourceIdentitySchemasCalled bool
GetResourceIdentitySchemasResponse *tfprotov6.GetResourceIdentitySchemasResponse

ImportResourceStateCalled map[string]bool

MoveResourceStateCalled map[string]bool
Expand All @@ -49,6 +52,8 @@ type TestServer struct {
StopProviderCalled bool
StopProviderResponse *tfprotov6.StopProviderResponse

UpgradeResourceIdentityCalled map[string]bool

UpgradeResourceStateCalled map[string]bool

ValidateDataResourceConfigCalled map[string]bool
Expand Down Expand Up @@ -136,6 +141,16 @@ func (s *TestServer) GetProviderSchema(_ context.Context, _ *tfprotov6.GetProvid
return &tfprotov6.GetProviderSchemaResponse{}, nil
}

func (s *TestServer) GetResourceIdentitySchemas(_ context.Context, _ *tfprotov6.GetResourceIdentitySchemasRequest) (*tfprotov6.GetResourceIdentitySchemasResponse, error) {
s.GetResourceIdentitySchemasCalled = true

if s.GetResourceIdentitySchemasResponse != nil {
return s.GetResourceIdentitySchemasResponse, nil
}

return &tfprotov6.GetResourceIdentitySchemasResponse{}, nil
}

func (s *TestServer) ImportResourceState(_ context.Context, req *tfprotov6.ImportResourceStateRequest) (*tfprotov6.ImportResourceStateResponse, error) {
if s.ImportResourceStateCalled == nil {
s.ImportResourceStateCalled = make(map[string]bool)
Expand Down Expand Up @@ -209,6 +224,15 @@ func (s *TestServer) StopProvider(_ context.Context, _ *tfprotov6.StopProviderRe
return &tfprotov6.StopProviderResponse{}, nil
}

func (s *TestServer) UpgradeResourceIdentity(_ context.Context, req *tfprotov6.UpgradeResourceIdentityRequest) (*tfprotov6.UpgradeResourceIdentityResponse, error) {
if s.UpgradeResourceIdentityCalled == nil {
s.UpgradeResourceIdentityCalled = make(map[string]bool)
}

s.UpgradeResourceIdentityCalled[req.TypeName] = true
return nil, nil
}

func (s *TestServer) UpgradeResourceState(_ context.Context, req *tfprotov6.UpgradeResourceStateRequest) (*tfprotov6.UpgradeResourceStateResponse, error) {
if s.UpgradeResourceStateCalled == nil {
s.UpgradeResourceStateCalled = make(map[string]bool)
Expand Down
Loading
Loading