Fix pod recreation

(cherry picked from commit 3d05da0109)
release-2.8
Reinhard Nägele 8 years ago committed by Matthew Fisher
parent db39e0927f
commit d6dc3ded84
No known key found for this signature in database
GPG Key ID: CDEC67687EFAA34E

@ -428,40 +428,39 @@ func updateResource(c *Client, target *resource.Info, currentObj runtime.Object,
if err := target.Get(); err != nil { if err := target.Get(); err != nil {
return fmt.Errorf("error trying to refresh resource information: %v", err) return fmt.Errorf("error trying to refresh resource information: %v", err)
} }
return nil } else {
} // send patch to server
helper := resource.NewHelper(target.Client, target.Mapping)
// send patch to server
helper := resource.NewHelper(target.Client, target.Mapping)
obj, err := helper.Patch(target.Namespace, target.Name, patchType, patch)
if err != nil {
kind := target.Mapping.GroupVersionKind.Kind
log.Printf("Cannot patch %s: %q (%v)", kind, target.Name, err)
if force { obj, err := helper.Patch(target.Namespace, target.Name, patchType, patch)
// Attempt to delete... if err != nil {
if err := deleteResource(c, target); err != nil { kind := target.Mapping.GroupVersionKind.Kind
log.Printf("Cannot patch %s: %q (%v)", kind, target.Name, err)
if force {
// Attempt to delete...
if err := deleteResource(c, target); err != nil {
return err
}
log.Printf("Deleted %s: %q", kind, target.Name)
// ... and recreate
if err := createResource(target); err != nil {
return fmt.Errorf("Failed to recreate resource: %s", err)
}
log.Printf("Created a new %s called %q\n", kind, target.Name)
// No need to refresh the target, as we recreated the resource based
// on it. In addition, it might not exist yet and a call to `Refresh`
// may fail.
} else {
log.Print("Use --force to force recreation of the resource")
return err return err
} }
log.Printf("Deleted %s: %q", kind, target.Name)
// ... and recreate
if err := createResource(target); err != nil {
return fmt.Errorf("Failed to recreate resource: %s", err)
}
log.Printf("Created a new %s called %q\n", kind, target.Name)
// No need to refresh the target, as we recreated the resource based
// on it. In addition, it might not exist yet and a call to `Refresh`
// may fail.
} else { } else {
log.Print("Use --force to force recreation of the resource") // When patch succeeds without needing to recreate, refresh target.
return err target.Refresh(obj, true)
} }
} else {
// When patch succeeds without needing to recreate, refresh target.
target.Refresh(obj, true)
} }
if !recreate { if !recreate {

Loading…
Cancel
Save