Commit 5e1845b7 authored by Robert Rose's avatar Robert Rose Committed by Brad Davidson

Remove resources created by addon before deleting addon (#11975)

Remove the AddOn last, after any resources it created in the cluster have been deleted and the AddOn file is removed. Signed-off-by: 's avatarRobert Rose <robert.rose@mailbox.org>
parent ba4a6384
......@@ -303,19 +303,23 @@ func (w *watcher) delete(path string) error {
return err
}
// ensure that the addon is completely removed before deleting the objectSet,
// so return when err == nil, otherwise pods may get stuck terminating
w.recorder.Eventf(&addon, corev1.EventTypeNormal, "DeletingManifest", "Deleting manifest at %q", path)
if err := w.addons.Delete(addon.Namespace, addon.Name, &metav1.DeleteOptions{}); err == nil || !apierrors.IsNotFound(err) {
// Apply an empty set with owner & gvk data to delete
if err := w.apply.WithOwner(&addon).WithGVK(addonGVKs...).ApplyObjects(); err != nil {
return err
}
// apply an empty set with owner & gvk data to delete
if err := w.apply.WithOwner(&addon).WithGVK(addonGVKs...).ApplyObjects(); err != nil {
// Remove the addon file
if err := os.Remove(path); err != nil {
return err
}
// Delete the addon
w.recorder.Eventf(&addon, corev1.EventTypeNormal, "DeletingManifest", "Deleting manifest at %q", path)
if err := w.addons.Delete(addon.Namespace, addon.Name, &metav1.DeleteOptions{}); err != nil && !apierrors.IsNotFound(err) {
return err
}
return os.Remove(path)
return nil
}
// getOrCreateAddon attempts to get an Addon by name from the addon namespace, and creates a new one
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment