Skip to content

Commit 223fc8f

Browse files
authored
Merge pull request #11665 from sbueringer/pr-optimize-patchhelper
🌱 patchHelper: call toUnstructured only if necessary
2 parents 54f46b4 + 426a1c0 commit 223fc8f

File tree

1 file changed

+8
-9
lines changed

1 file changed

+8
-9
lines changed

util/patch/patch.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -84,16 +84,9 @@ func NewHelper(obj client.Object, crClient client.Client) (*Helper, error) {
8484
return nil, errors.Wrapf(err, "failed to identify condition fields for object %s", klog.KObj(obj))
8585
}
8686

87-
// Convert the object to unstructured to compare against our before copy.
88-
unstructuredObj, err := toUnstructured(obj, gvk)
89-
if err != nil {
90-
return nil, errors.Wrapf(err, "failed to create patch helper for %s %s: failed to convert object to Unstructured", gvk.Kind, klog.KObj(obj))
91-
}
92-
9387
return &Helper{
9488
client: crClient,
9589
gvk: gvk,
96-
before: unstructuredObj,
9790
beforeObject: obj.DeepCopyObject().(client.Object),
9891
metav1ConditionsFieldPath: metav1ConditionsFieldPath,
9992
clusterv1ConditionsFieldPath: clusterv1ConditionsFieldPath,
@@ -138,10 +131,16 @@ func (h *Helper) Patch(ctx context.Context, obj client.Object, opts ...Option) e
138131
h.metav1ConditionsFieldPath = nil
139132
}
140133

141-
// Convert the object to unstructured to compare against our before copy.
134+
// Convert the before object to unstructured.
135+
h.before, err = toUnstructured(h.beforeObject, gvk)
136+
if err != nil {
137+
return errors.Wrapf(err, "failed to patch %s %s: failed to convert before object to Unstructured", h.gvk.Kind, klog.KObj(h.beforeObject))
138+
}
139+
140+
// Convert the after object to unstructured.
142141
h.after, err = toUnstructured(obj, gvk)
143142
if err != nil {
144-
return errors.Wrapf(err, "failed to patch %s %s: failed to convert object to Unstructured", h.gvk.Kind, klog.KObj(h.beforeObject))
143+
return errors.Wrapf(err, "failed to patch %s %s: failed to convert after object to Unstructured", h.gvk.Kind, klog.KObj(h.beforeObject))
145144
}
146145

147146
// Determine if the object has status.

0 commit comments

Comments
 (0)