@@ -130,24 +130,39 @@ func (k *commandProvider) Diff(ctx context.Context, req *pulumirpc.DiffRequest)
130130 }
131131
132132 changes := pulumirpc .DiffResponse_DIFF_NONE
133- replaces := []string {}
133+ var diffs , replaces []string
134+ properties := map [string ]bool {
135+ "environment" : false ,
136+ "dir" : false ,
137+ "interpreter" : false ,
138+ "create" : false ,
139+ "delete" : false ,
140+ "localPath" : false ,
141+ "remotePath" : false ,
142+ "connection" : true ,
143+ "triggers" : true ,
144+ }
134145 if d := olds .Diff (news ); d != nil {
135- // TODO: Non-replace changes
136- for _ , replaceKey := range []string {"environment" , "dir" , "interpreter" , "create" , "connection" , "localPath" , "remotePath" } {
137- i := sort .SearchStrings (req .IgnoreChanges , replaceKey )
138- if i < len (req .IgnoreChanges ) && req .IgnoreChanges [i ] == replaceKey {
146+ for key , replace := range properties {
147+ i := sort .SearchStrings (req .IgnoreChanges , key )
148+ if i < len (req .IgnoreChanges ) && req .IgnoreChanges [i ] == key {
139149 continue
140150 }
141- if d .Changed (resource .PropertyKey (replaceKey )) {
151+
152+ if d .Changed (resource .PropertyKey (key )) {
142153 changes = pulumirpc .DiffResponse_DIFF_SOME
143- replaces = append (replaces , replaceKey )
154+ diffs = append (diffs , key )
155+
156+ if replace {
157+ replaces = append (replaces , key )
158+ }
144159 }
145160 }
146161 }
147- // TODO: Detailed diffs
148162
149163 return & pulumirpc.DiffResponse {
150164 Changes : changes ,
165+ Diffs : diffs ,
151166 Replaces : replaces ,
152167 }, nil
153168}
@@ -256,13 +271,14 @@ func (k *commandProvider) Update(ctx context.Context, req *pulumirpc.UpdateReque
256271 ctx = k .addContext (ctx )
257272 defer k .removeContext (ctx )
258273 urn := resource .URN (req .GetUrn ())
259- ty := urn .Type ()
260274 if err := check (urn ); err != nil {
261275 return nil , err
262276 }
263277
264- // Our Random resource will never be updated - if there is a diff, it will be a replacement.
265- return nil , status .Errorf (codes .Unimplemented , "Update is not yet implemented for %q" , ty )
278+ // Updates are currently no-ops. The `create` command does not re-run except on replacement.
279+ return & pulumirpc.UpdateResponse {
280+ Properties : req .GetNews (),
281+ }, nil
266282}
267283
268284// Delete tears down an existing resource with the given ID. If it fails, the resource is assumed
0 commit comments