1
0
mirror of https://github.com/rancher/norman.git synced 2025-09-09 19:19:42 +00:00

Fix checking object changes before update

This commit is contained in:
Darren Shepherd
2018-01-16 12:52:28 -07:00
parent cdb90f4937
commit fd47aed192

View File

@@ -57,8 +57,8 @@ func (o *objectLifecycleAdapter) sync(key string, obj runtime.Object) error {
return err return err
} }
obj = obj.DeepCopyObject() copyObj := obj.DeepCopyObject()
newObj, err := o.lifecycle.Updated(obj) newObj, err := o.lifecycle.Updated(copyObj)
o.update(metadata.GetName(), obj, newObj) o.update(metadata.GetName(), obj, newObj)
return err return err
} }
@@ -80,19 +80,19 @@ func (o *objectLifecycleAdapter) finalize(metadata metav1.Object, obj runtime.Ob
return false, nil return false, nil
} }
obj = obj.DeepCopyObject() copyObj := obj.DeepCopyObject()
if newObj, err := o.lifecycle.Finalize(obj); err != nil { if newObj, err := o.lifecycle.Finalize(copyObj); err != nil {
o.update(metadata.GetName(), obj, newObj) o.update(metadata.GetName(), obj, newObj)
return false, err return false, err
} else if newObj != nil { } else if newObj != nil {
obj = newObj copyObj = newObj
} }
if err := removeFinalizer(o.constructFinalizerKey(), obj); err != nil { if err := removeFinalizer(o.constructFinalizerKey(), copyObj); err != nil {
return false, err return false, err
} }
_, err := o.objectClient.Update(metadata.GetName(), obj) _, err := o.objectClient.Update(metadata.GetName(), copyObj)
return false, err return false, err
} }
@@ -130,21 +130,20 @@ func (o *objectLifecycleAdapter) create(metadata metav1.Object, obj runtime.Obje
return true, nil return true, nil
} }
// addFinalizer will always return a DeepCopy copyObj := obj.DeepCopyObject()
obj, err := o.addFinalizer(obj) copyObj, err := o.addFinalizer(copyObj)
if err != nil { if err != nil {
return false, err return false, err
} }
orig := obj.DeepCopyObject() if newObj, err := o.lifecycle.Create(copyObj); err != nil {
if newObj, err := o.lifecycle.Create(obj); err != nil { o.update(metadata.GetName(), obj, newObj)
o.update(metadata.GetName(), orig, newObj)
return false, err return false, err
} else if newObj != nil { } else if newObj != nil {
obj = newObj copyObj = newObj
} }
return false, o.setInitialized(obj) return false, o.setInitialized(copyObj)
} }
func (o *objectLifecycleAdapter) isInitialized(metadata metav1.Object) bool { func (o *objectLifecycleAdapter) isInitialized(metadata metav1.Object) bool {
@@ -170,8 +169,6 @@ func (o *objectLifecycleAdapter) setInitialized(obj runtime.Object) error {
} }
func (o *objectLifecycleAdapter) addFinalizer(obj runtime.Object) (runtime.Object, error) { func (o *objectLifecycleAdapter) addFinalizer(obj runtime.Object) (runtime.Object, error) {
obj = obj.DeepCopyObject()
metadata, err := meta.Accessor(obj) metadata, err := meta.Accessor(obj)
if err != nil { if err != nil {
return nil, err return nil, err