in pkg/cloud/rgraph/rnode/forwardingrule/node.go [74:110]
func (n *forwardingRuleNode) Diff(gotNode rnode.Node) (*rnode.PlanDetails, error) {
got, ok := gotNode.(*forwardingRuleNode)
if !ok {
return nil, nodeErr("invalid type to Diff: %T", gotNode)
}
diff, err := got.resource.Diff(n.resource)
if err != nil {
return nil, nodeErr("Diff: %w", err)
}
if diff.HasDiff() {
var changed changedFields
for _, item := range diff.Items {
changed.process(item)
}
if !changed.other {
return &rnode.PlanDetails{
Operation: rnode.OpUpdate,
Why: fmt.Sprintf("update in place (changed=%+v)", changed),
Diff: diff,
}, nil
}
return &rnode.PlanDetails{
Operation: rnode.OpRecreate,
Why: "needs to be recreated",
Diff: diff,
}, nil
}
return &rnode.PlanDetails{
Operation: rnode.OpNothing,
Why: "No diff between got and want",
}, nil
}