update create_before_destroy when refreshing
In order to save any changes to lifecycle options, we need to record those changes during refresh, otherwise they would only be updated when there is a change in the resource to be applied.
This commit is contained in:
parent
014bd30a67
commit
27809871ca
|
@ -529,3 +529,33 @@ func (n *EvalWriteResourceState) Eval(ctx EvalContext) (interface{}, error) {
|
||||||
|
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EvalRefreshLifecycle is an EvalNode implementation that updates
|
||||||
|
// the status of the lifecycle options stored in the state.
|
||||||
|
// This currently only applies to create_before_destroy.
|
||||||
|
type EvalRefreshLifecycle struct {
|
||||||
|
Config *configs.Resource
|
||||||
|
// Prior State
|
||||||
|
State **states.ResourceInstanceObject
|
||||||
|
// ForceCreateBeforeDestroy indicates a create_before_destroy resource
|
||||||
|
// depends on this resource.
|
||||||
|
ForceCreateBeforeDestroy bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (n *EvalRefreshLifecycle) Eval(ctx EvalContext) (interface{}, error) {
|
||||||
|
state := *n.State
|
||||||
|
if state == nil {
|
||||||
|
// no existing state
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// In 0.13 we could be refreshing a resource with no config.
|
||||||
|
// We should be operating on managed resource, but check here to be certain
|
||||||
|
if n.Config == nil || n.Config.Managed == nil {
|
||||||
|
log.Print("[WARN] no Managed config value found in instance state")
|
||||||
|
}
|
||||||
|
|
||||||
|
state.CreateBeforeDestroy = n.Config.Managed.CreateBeforeDestroy || n.ForceCreateBeforeDestroy
|
||||||
|
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
|
@ -148,6 +148,11 @@ func (n *NodePlannableResourceInstance) evalTreeManagedResource(addr addrs.AbsRe
|
||||||
ProviderSchema: &providerSchema,
|
ProviderSchema: &providerSchema,
|
||||||
Output: &instanceRefreshState,
|
Output: &instanceRefreshState,
|
||||||
},
|
},
|
||||||
|
&EvalRefreshLifecycle{
|
||||||
|
Config: n.Config,
|
||||||
|
State: &instanceRefreshState,
|
||||||
|
ForceCreateBeforeDestroy: n.ForceCreateBeforeDestroy,
|
||||||
|
},
|
||||||
&EvalRefresh{
|
&EvalRefresh{
|
||||||
Addr: addr.Resource,
|
Addr: addr.Resource,
|
||||||
ProviderAddr: n.ResolvedProvider,
|
ProviderAddr: n.ResolvedProvider,
|
||||||
|
|
Loading…
Reference in New Issue