func()

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
}