Skip to content

Commit

Permalink
Revert "Pass state back to the engine if Apply encountered an error (#…
Browse files Browse the repository at this point in the history
…2695)"

This reverts commit 0c46ff5.
  • Loading branch information
VenelinMartinov committed Dec 10, 2024
1 parent faeba17 commit 81ce180
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 67 deletions.
51 changes: 0 additions & 51 deletions pkg/tests/schema_pulumi_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -189,54 +189,3 @@ func TestMakeTerraformResultNilVsEmptyMap(t *testing.T) {
assert.True(t, props["test"].DeepEquals(emptyMap))
})
}

func TestResourceInitFailure(t *testing.T) {
t.Parallel()

resMap := map[string]*schema.Resource{
"prov_test": {
Schema: map[string]*schema.Schema{
"test": {
Type: schema.TypeString,
Required: true,
},
},
CreateContext: func(ctx context.Context, rd *schema.ResourceData, i interface{}) diag.Diagnostics {
rd.SetId("1")
return diag.Errorf("INIT TEST ERROR")
},
},
}
prov := &schema.Provider{ResourcesMap: resMap}
bridgedProvider := pulcheck.BridgedProvider(t, "prov", prov)

pt := pulcheck.PulCheck(t, bridgedProvider, `
name: test
runtime: yaml
resources:
mainRes:
type: prov:index:Test
properties:
test: "hello"
`)

_, err := pt.CurrentStack().Up(pt.Context())
require.Error(t, err)
require.ErrorContains(t, err, "INIT TEST ERROR")

stack := pt.ExportStack(t)

data, err := stack.Deployment.MarshalJSON()
require.NoError(t, err)

var stateMap map[string]interface{}
err = json.Unmarshal(data, &stateMap)
require.NoError(t, err)

resourcesList := stateMap["resources"].([]interface{})
require.Len(t, resourcesList, 3)
mainResState := resourcesList[2].(map[string]interface{}) // stack, provider, resource
initErrors := mainResState["initErrors"].([]interface{})
require.Len(t, initErrors, 1)
require.Contains(t, initErrors[0], "INIT TEST ERROR")
}
37 changes: 21 additions & 16 deletions pkg/tfshim/sdk-v2/provider2.go
Original file line number Diff line number Diff line change
Expand Up @@ -347,7 +347,15 @@ func (p *planResourceChangeImpl) Apply(
maps.Copy(priv, diff.v2InstanceDiff.tf.Meta)
}

return p.server.ApplyResourceChange(ctx, t, ty, cfg, st, pl, priv, meta)
resp, err := p.server.ApplyResourceChange(ctx, t, ty, cfg, st, pl, priv, meta)
if err != nil {
return nil, err
}
return &v2InstanceState2{
resourceType: t,
stateValue: resp.stateValue,
meta: resp.meta,
}, nil
}

// This method is called to service `pulumi refresh` requests and maps naturally to the TF
Expand Down Expand Up @@ -654,28 +662,25 @@ func (s *grpcServer) ApplyResourceChange(
}
req.ProviderMeta = &tfprotov5.DynamicValue{MsgPack: providerMetaVal}
}
resp, applyErr := s.gserver.ApplyResourceChange(ctx, req)
newState := cty.Value{}
resp, err := s.gserver.ApplyResourceChange(ctx, req)
if err := handleDiagnostics(ctx, resp.Diagnostics, err); err != nil {
return nil, err
}
newState, err := msgpack.Unmarshal(resp.NewState.MsgPack, ty)
if err != nil {
return nil, err
}
var meta map[string]interface{}
if resp != nil {
if resp.NewState != nil {
newState, err = msgpack.Unmarshal(resp.NewState.MsgPack, ty)
if err != nil {
return nil, err
}
}
if resp.Private != nil {
if err := json.Unmarshal(resp.Private, &meta); err != nil {
return nil, err
}
if resp.Private != nil {
if err := json.Unmarshal(resp.Private, &meta); err != nil {
return nil, err
}
}
returnErr := handleDiagnostics(ctx, resp.Diagnostics, applyErr)
return &v2InstanceState2{
resourceType: typeName,
stateValue: newState,
meta: meta,
}, returnErr
}, nil
}

func (s *grpcServer) ReadResource(
Expand Down

0 comments on commit 81ce180

Please sign in to comment.