diff --git a/helper/schema/resource_diff.go b/helper/schema/resource_diff.go index 05398998c9..af3c797b38 100644 --- a/helper/schema/resource_diff.go +++ b/helper/schema/resource_diff.go @@ -131,10 +131,9 @@ type ResourceDiff struct { // A writer that writes overridden new fields. newWriter *newValueWriter - // Tracks which keys have been updated by SetNew, SetNewComputed, and SetDiff - // to ensure that the diff does not get re-run on keys that were not touched, - // or diffs that were just removed (re-running on the latter would just roll - // back the removal). + // Tracks which keys have been updated by ResourceDiff to ensure that the + // diff does not get re-run on keys that were not touched, or diffs that were + // just removed (re-running on the latter would just roll back the removal). updatedKeys map[string]bool } @@ -198,8 +197,8 @@ func newResourceDiff(schema map[string]*Schema, config *terraform.ResourceConfig return d } -// UpdatedKeys returns the keys that were updated by SetNew, SetNewComputed, or -// SetDiff. These are the only keys that a diff should be re-calculated for. +// UpdatedKeys returns the keys that were updated by this ResourceDiff run. +// These are the only keys that a diff should be re-calculated for. func (d *ResourceDiff) UpdatedKeys() []string { var s []string for k := range d.updatedKeys { @@ -208,9 +207,9 @@ func (d *ResourceDiff) UpdatedKeys() []string { return s } -// Clear wipes the diff for a particular key. It is called by SetDiff to remove -// any possibility of conflicts, but can be called on its own to just remove a -// specific key from the diff completely. +// Clear wipes the diff for a particular key. It is called by ResourceDiff's +// functionality to remove any possibility of conflicts, but can be called on +// its own to just remove a specific key from the diff completely. // // Note that this does not wipe an override. This function is only allowed on // computed keys. @@ -260,7 +259,7 @@ func (d *ResourceDiff) SetNew(key string, value interface{}) error { return err } - return d.setDiff(key, d.get(strings.Split(key, "."), "state").Value, value, false) + return d.setDiff(key, value, false) } // SetNewComputed functions like SetNew, except that it blanks out a new value @@ -272,11 +271,11 @@ func (d *ResourceDiff) SetNewComputed(key string) error { return err } - return d.setDiff(key, d.get(strings.Split(key, "."), "state").Value, nil, true) + return d.setDiff(key, nil, true) } // setDiff performs common diff setting behaviour. -func (d *ResourceDiff) setDiff(key string, old, new interface{}, computed bool) error { +func (d *ResourceDiff) setDiff(key string, new interface{}, computed bool) error { if err := d.clear(key); err != nil { return err } @@ -300,9 +299,9 @@ func (d *ResourceDiff) ForceNew(key string) error { return fmt.Errorf("ForceNew: No changes for %s", key) } - old, new := d.GetChange(key) + _, new := d.GetChange(key) d.schema[key].ForceNew = true - return d.setDiff(key, old, new, false) + return d.setDiff(key, new, false) } // Get hands off to ResourceData.Get.