mirror of
https://github.com/hashicorp/terraform.git
synced 2026-02-03 20:50:59 -05:00
Generate Resource Config: set state in proto req (#37895)
Some checks are pending
build / Determine intended Terraform version (push) Waiting to run
build / Determine Go toolchain version (push) Waiting to run
build / Generate release metadata (push) Blocked by required conditions
build / Build for freebsd_386 (push) Blocked by required conditions
build / Build for linux_386 (push) Blocked by required conditions
build / Build for openbsd_386 (push) Blocked by required conditions
build / Build for windows_386 (push) Blocked by required conditions
build / Build for darwin_amd64 (push) Blocked by required conditions
build / Build for freebsd_amd64 (push) Blocked by required conditions
build / Build for linux_amd64 (push) Blocked by required conditions
build / Build for openbsd_amd64 (push) Blocked by required conditions
build / Build for solaris_amd64 (push) Blocked by required conditions
build / Build for windows_amd64 (push) Blocked by required conditions
build / Build for freebsd_arm (push) Blocked by required conditions
build / Build for linux_arm (push) Blocked by required conditions
build / Build for darwin_arm64 (push) Blocked by required conditions
build / Build for linux_arm64 (push) Blocked by required conditions
build / Build for windows_arm64 (push) Blocked by required conditions
build / Build Docker image for linux_386 (push) Blocked by required conditions
build / Build Docker image for linux_amd64 (push) Blocked by required conditions
build / Build Docker image for linux_arm (push) Blocked by required conditions
build / Build Docker image for linux_arm64 (push) Blocked by required conditions
build / Build e2etest for linux_386 (push) Blocked by required conditions
build / Build e2etest for windows_386 (push) Blocked by required conditions
build / Build e2etest for darwin_amd64 (push) Blocked by required conditions
build / Build e2etest for linux_amd64 (push) Blocked by required conditions
build / Build e2etest for windows_amd64 (push) Blocked by required conditions
build / Build e2etest for linux_arm (push) Blocked by required conditions
build / Build e2etest for darwin_arm64 (push) Blocked by required conditions
build / Build e2etest for linux_arm64 (push) Blocked by required conditions
build / Run e2e test for linux_386 (push) Blocked by required conditions
build / Run e2e test for windows_386 (push) Blocked by required conditions
build / Run e2e test for darwin_amd64 (push) Blocked by required conditions
build / Run e2e test for linux_amd64 (push) Blocked by required conditions
build / Run e2e test for windows_amd64 (push) Blocked by required conditions
build / Run e2e test for linux_arm (push) Blocked by required conditions
build / Run e2e test for linux_arm64 (push) Blocked by required conditions
build / Run terraform-exec test for linux amd64 (push) Blocked by required conditions
Quick Checks / Unit Tests (push) Waiting to run
Quick Checks / Race Tests (push) Waiting to run
Quick Checks / End-to-end Tests (push) Waiting to run
Quick Checks / Code Consistency Checks (push) Waiting to run
Some checks are pending
build / Determine intended Terraform version (push) Waiting to run
build / Determine Go toolchain version (push) Waiting to run
build / Generate release metadata (push) Blocked by required conditions
build / Build for freebsd_386 (push) Blocked by required conditions
build / Build for linux_386 (push) Blocked by required conditions
build / Build for openbsd_386 (push) Blocked by required conditions
build / Build for windows_386 (push) Blocked by required conditions
build / Build for darwin_amd64 (push) Blocked by required conditions
build / Build for freebsd_amd64 (push) Blocked by required conditions
build / Build for linux_amd64 (push) Blocked by required conditions
build / Build for openbsd_amd64 (push) Blocked by required conditions
build / Build for solaris_amd64 (push) Blocked by required conditions
build / Build for windows_amd64 (push) Blocked by required conditions
build / Build for freebsd_arm (push) Blocked by required conditions
build / Build for linux_arm (push) Blocked by required conditions
build / Build for darwin_arm64 (push) Blocked by required conditions
build / Build for linux_arm64 (push) Blocked by required conditions
build / Build for windows_arm64 (push) Blocked by required conditions
build / Build Docker image for linux_386 (push) Blocked by required conditions
build / Build Docker image for linux_amd64 (push) Blocked by required conditions
build / Build Docker image for linux_arm (push) Blocked by required conditions
build / Build Docker image for linux_arm64 (push) Blocked by required conditions
build / Build e2etest for linux_386 (push) Blocked by required conditions
build / Build e2etest for windows_386 (push) Blocked by required conditions
build / Build e2etest for darwin_amd64 (push) Blocked by required conditions
build / Build e2etest for linux_amd64 (push) Blocked by required conditions
build / Build e2etest for windows_amd64 (push) Blocked by required conditions
build / Build e2etest for linux_arm (push) Blocked by required conditions
build / Build e2etest for darwin_arm64 (push) Blocked by required conditions
build / Build e2etest for linux_arm64 (push) Blocked by required conditions
build / Run e2e test for linux_386 (push) Blocked by required conditions
build / Run e2e test for windows_386 (push) Blocked by required conditions
build / Run e2e test for darwin_amd64 (push) Blocked by required conditions
build / Run e2e test for linux_amd64 (push) Blocked by required conditions
build / Run e2e test for windows_amd64 (push) Blocked by required conditions
build / Run e2e test for linux_arm (push) Blocked by required conditions
build / Run e2e test for linux_arm64 (push) Blocked by required conditions
build / Run terraform-exec test for linux amd64 (push) Blocked by required conditions
Quick Checks / Unit Tests (push) Waiting to run
Quick Checks / Race Tests (push) Waiting to run
Quick Checks / End-to-end Tests (push) Waiting to run
Quick Checks / Code Consistency Checks (push) Waiting to run
* marshal state and set in the proto req for generate resource config * changelog * set state in the proto req for generate resource config in plugin6 * add GRPC tests for GenerateResourceConfig * remove changelog entry since this fix is backported to 1.14
This commit is contained in:
parent
2c075b9f8e
commit
c9d024062a
4 changed files with 80 additions and 2 deletions
|
|
@ -940,9 +940,15 @@ func (p *GRPCProvider) GenerateResourceConfig(r providers.GenerateResourceConfig
|
|||
return resp
|
||||
}
|
||||
|
||||
mp, err := msgpack.Marshal(r.State, resSchema.Body.ImpliedType())
|
||||
if err != nil {
|
||||
resp.Diagnostics = resp.Diagnostics.Append(err)
|
||||
return resp
|
||||
}
|
||||
|
||||
protoReq := &proto.GenerateResourceConfig_Request{
|
||||
TypeName: r.TypeName,
|
||||
State: nil,
|
||||
State: &proto.DynamicValue{Msgpack: mp},
|
||||
}
|
||||
|
||||
protoResp, err := p.client.GenerateResourceConfig(p.ctx, protoReq)
|
||||
|
|
|
|||
|
|
@ -2102,3 +2102,36 @@ func TestGRPCProvider_ListResource_Limit(t *testing.T) {
|
|||
t.Fatalf("Expected 2 events, got %d", len(results))
|
||||
}
|
||||
}
|
||||
|
||||
func TestGRPCProvider_GenerateResourceConfig(t *testing.T) {
|
||||
client := mockProviderClient(t)
|
||||
p := &GRPCProvider{
|
||||
client: client,
|
||||
}
|
||||
client.EXPECT().GenerateResourceConfig(
|
||||
gomock.Any(),
|
||||
gomock.Cond[any](func(x any) bool {
|
||||
req := x.(*proto.GenerateResourceConfig_Request)
|
||||
if req.TypeName != "resource" {
|
||||
return false
|
||||
}
|
||||
if req.State == nil {
|
||||
t.Log("GenerateResourceConfig state is nil")
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}),
|
||||
).Return(&proto.GenerateResourceConfig_Response{
|
||||
Config: &proto.DynamicValue{
|
||||
Msgpack: []byte("\x81\xa4attr\xa3bar"),
|
||||
},
|
||||
}, nil)
|
||||
resp := p.GenerateResourceConfig(providers.GenerateResourceConfigRequest{
|
||||
TypeName: "resource",
|
||||
State: cty.ObjectVal(map[string]cty.Value{
|
||||
"computed": cty.StringVal("computed"),
|
||||
"attr": cty.StringVal("foo"),
|
||||
}),
|
||||
})
|
||||
checkDiags(t, resp.Diagnostics)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -945,9 +945,15 @@ func (p *GRPCProvider) GenerateResourceConfig(r providers.GenerateResourceConfig
|
|||
return resp
|
||||
}
|
||||
|
||||
mp, err := msgpack.Marshal(r.State, resSchema.Body.ImpliedType())
|
||||
if err != nil {
|
||||
resp.Diagnostics = resp.Diagnostics.Append(err)
|
||||
return resp
|
||||
}
|
||||
|
||||
protoReq := &proto6.GenerateResourceConfig_Request{
|
||||
TypeName: r.TypeName,
|
||||
State: nil,
|
||||
State: &proto6.DynamicValue{Msgpack: mp},
|
||||
}
|
||||
|
||||
protoResp, err := p.client.GenerateResourceConfig(p.ctx, protoReq)
|
||||
|
|
|
|||
|
|
@ -3367,3 +3367,36 @@ func TestGRPCProvider_WriteStateBytes(t *testing.T) {
|
|||
}
|
||||
})
|
||||
}
|
||||
|
||||
func TestGRPCProvider_GenerateResourceConfig(t *testing.T) {
|
||||
client := mockProviderClient(t)
|
||||
p := &GRPCProvider{
|
||||
client: client,
|
||||
}
|
||||
client.EXPECT().GenerateResourceConfig(
|
||||
gomock.Any(),
|
||||
gomock.Cond[any](func(x any) bool {
|
||||
req := x.(*proto.GenerateResourceConfig_Request)
|
||||
if req.TypeName != "resource" {
|
||||
return false
|
||||
}
|
||||
if req.State == nil {
|
||||
t.Log("GenerateResourceConfig state is nil")
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}),
|
||||
).Return(&proto.GenerateResourceConfig_Response{
|
||||
Config: &proto.DynamicValue{
|
||||
Msgpack: []byte("\x81\xa4attr\xa3bar"),
|
||||
},
|
||||
}, nil)
|
||||
resp := p.GenerateResourceConfig(providers.GenerateResourceConfigRequest{
|
||||
TypeName: "resource",
|
||||
State: cty.ObjectVal(map[string]cty.Value{
|
||||
"computed": cty.StringVal("computed"),
|
||||
"attr": cty.StringVal("foo"),
|
||||
}),
|
||||
})
|
||||
checkDiags(t, resp.Diagnostics)
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue