mirror of
https://github.com/rancher/norman.git
synced 2025-09-10 03:29:14 +00:00
Fix error handling in lifecycle
This commit is contained in:
@@ -51,7 +51,11 @@ func (o *objectLifecycleAdapter) sync(key string, obj runtime.Object) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
obj = obj.DeepCopyObject()
|
||||||
if newObj, err := o.lifecycle.Updated(obj); err != nil {
|
if newObj, err := o.lifecycle.Updated(obj); err != nil {
|
||||||
|
if newObj != nil {
|
||||||
|
o.objectClient.Update(metadata.GetName(), newObj)
|
||||||
|
}
|
||||||
return err
|
return err
|
||||||
} else if newObj != nil {
|
} else if newObj != nil {
|
||||||
_, err = o.objectClient.Update(metadata.GetName(), newObj)
|
_, err = o.objectClient.Update(metadata.GetName(), newObj)
|
||||||
@@ -72,29 +76,39 @@ func (o *objectLifecycleAdapter) finalize(metadata metav1.Object, obj runtime.Ob
|
|||||||
}
|
}
|
||||||
|
|
||||||
obj = obj.DeepCopyObject()
|
obj = obj.DeepCopyObject()
|
||||||
|
if newObj, err := o.lifecycle.Finalize(obj); err != nil {
|
||||||
|
if newObj != nil {
|
||||||
|
o.objectClient.Update(metadata.GetName(), newObj)
|
||||||
|
}
|
||||||
|
return false, err
|
||||||
|
} else if newObj != nil {
|
||||||
|
obj = newObj
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := removeFinalizer(o.name, obj); err != nil {
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err := o.objectClient.Update(metadata.GetName(), obj)
|
||||||
|
return false, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func removeFinalizer(name string, obj runtime.Object) error {
|
||||||
metadata, err := meta.Accessor(obj)
|
metadata, err := meta.Accessor(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
var finalizers []string
|
var finalizers []string
|
||||||
for _, finalizer := range metadata.GetFinalizers() {
|
for _, finalizer := range metadata.GetFinalizers() {
|
||||||
if finalizer == o.name {
|
if finalizer == name {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
finalizers = append(finalizers, finalizer)
|
finalizers = append(finalizers, finalizer)
|
||||||
}
|
}
|
||||||
metadata.SetFinalizers(finalizers)
|
metadata.SetFinalizers(finalizers)
|
||||||
|
|
||||||
if newObj, err := o.lifecycle.Finalize(obj); err != nil {
|
return nil
|
||||||
return false, err
|
|
||||||
} else if newObj != nil {
|
|
||||||
_, err = o.objectClient.Update(metadata.GetName(), newObj)
|
|
||||||
} else {
|
|
||||||
_, err = o.objectClient.Update(metadata.GetName(), obj)
|
|
||||||
}
|
|
||||||
|
|
||||||
return false, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *objectLifecycleAdapter) createKey() string {
|
func (o *objectLifecycleAdapter) createKey() string {
|
||||||
@@ -104,28 +118,31 @@ func (o *objectLifecycleAdapter) createKey() string {
|
|||||||
func (o *objectLifecycleAdapter) create(metadata metav1.Object, obj runtime.Object) (bool, error) {
|
func (o *objectLifecycleAdapter) create(metadata metav1.Object, obj runtime.Object) (bool, error) {
|
||||||
initialized := o.createKey()
|
initialized := o.createKey()
|
||||||
|
|
||||||
if metadata.GetLabels()[initialized] == "true" {
|
if metadata.GetAnnotations()[initialized] == "true" {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
obj = obj.DeepCopyObject()
|
obj = obj.DeepCopyObject()
|
||||||
|
if newObj, err := o.lifecycle.Create(obj); err != nil {
|
||||||
|
if newObj != nil {
|
||||||
|
o.objectClient.Update(metadata.GetName(), newObj)
|
||||||
|
}
|
||||||
|
return false, err
|
||||||
|
} else if newObj != nil {
|
||||||
|
obj = newObj
|
||||||
|
}
|
||||||
|
|
||||||
metadata, err := meta.Accessor(obj)
|
metadata, err := meta.Accessor(obj)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
|
|
||||||
if metadata.GetLabels() == nil {
|
if metadata.GetAnnotations() == nil {
|
||||||
metadata.SetLabels(map[string]string{})
|
metadata.SetAnnotations(map[string]string{})
|
||||||
}
|
}
|
||||||
|
|
||||||
metadata.SetFinalizers(append(metadata.GetFinalizers(), o.name))
|
metadata.SetFinalizers(append(metadata.GetFinalizers(), o.name))
|
||||||
metadata.GetLabels()[initialized] = "true"
|
metadata.GetAnnotations()[initialized] = "true"
|
||||||
if newObj, err := o.lifecycle.Create(obj); err != nil {
|
|
||||||
return false, err
|
|
||||||
} else if newObj != nil {
|
|
||||||
_, err = o.objectClient.Update(metadata.GetName(), newObj)
|
|
||||||
return false, err
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = o.objectClient.Update(metadata.GetName(), obj)
|
_, err = o.objectClient.Update(metadata.GetName(), obj)
|
||||||
return false, err
|
return false, err
|
||||||
|
Reference in New Issue
Block a user