diff --git a/helper/resource/map.go b/helper/resource/map.go index 301db8b144..523c24b8e4 100644 --- a/helper/resource/map.go +++ b/helper/resource/map.go @@ -44,8 +44,7 @@ func (m *Map) Apply( if s.ID == "" { return r.Create(s, d, meta) } else { - panic("update no implemented yet") - //return r.Update(s, d, meta) + return r.Update(s, d, meta) } } diff --git a/helper/resource/map_test.go b/helper/resource/map_test.go new file mode 100644 index 0000000000..958e3540f7 --- /dev/null +++ b/helper/resource/map_test.go @@ -0,0 +1 @@ +package resource diff --git a/helper/resource/resource.go b/helper/resource/resource.go index 3409228d10..0437b34e1f 100644 --- a/helper/resource/resource.go +++ b/helper/resource/resource.go @@ -9,6 +9,7 @@ type Resource struct { Destroy DestroyFunc Diff DiffFunc Refresh RefreshFunc + Update UpdateFunc } // CreateFunc is a function that creates a resource that didn't previously @@ -35,3 +36,12 @@ type DiffFunc func( type RefreshFunc func( *terraform.ResourceState, interface{}) (*terraform.ResourceState, error) + +// UpdateFunc is a function that is called to update a resource that +// previously existed. The difference between this and CreateFunc is that +// the diff is guaranteed to only contain attributes that don't require +// a new resource. +type UpdateFunc func( + *terraform.ResourceState, + *terraform.ResourceDiff, + interface{}) (*terraform.ResourceState, error)