|
|
@ -31,6 +31,7 @@ import (
|
|
|
|
|
|
|
|
|
|
|
|
jsonpatch "github.com/evanphx/json-patch"
|
|
|
|
jsonpatch "github.com/evanphx/json-patch"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
"github.com/pkg/errors"
|
|
|
|
|
|
|
|
"helm.sh/helm/v3/pkg/release"
|
|
|
|
batch "k8s.io/api/batch/v1"
|
|
|
|
batch "k8s.io/api/batch/v1"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
|
|
v1 "k8s.io/api/core/v1"
|
|
|
|
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
|
|
|
apiextv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
|
|
|
@ -476,7 +477,20 @@ func delete(c *Client, resources ResourceList, propagation metav1.DeletionPropag
|
|
|
|
mtx := sync.Mutex{}
|
|
|
|
mtx := sync.Mutex{}
|
|
|
|
err := perform(resources, func(info *resource.Info) error {
|
|
|
|
err := perform(resources, func(info *resource.Info) error {
|
|
|
|
c.Log("Starting delete for %q %s", info.Name, info.Mapping.GroupVersionKind.Kind)
|
|
|
|
c.Log("Starting delete for %q %s", info.Name, info.Mapping.GroupVersionKind.Kind)
|
|
|
|
err := deleteResource(info, propagation)
|
|
|
|
object, err := resource.NewHelper(info.Client, info.Mapping).WithFieldManager(getManagedFieldsManager()).Get(info.Namespace, info.Name)
|
|
|
|
|
|
|
|
if err != nil && !apierrors.IsNotFound(err) {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if object != nil {
|
|
|
|
|
|
|
|
annotations, err := metadataAccessor.Annotations(object)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if prop := getAnnotationDeletePropagation(annotations); prop != "" {
|
|
|
|
|
|
|
|
propagation = metav1.DeletionPropagation(prop)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
err = deleteResource(info, propagation)
|
|
|
|
if err == nil || apierrors.IsNotFound(err) {
|
|
|
|
if err == nil || apierrors.IsNotFound(err) {
|
|
|
|
if err != nil {
|
|
|
|
if err != nil {
|
|
|
|
c.Log("Ignoring delete failure for %q %s: %v", info.Name, info.Mapping.GroupVersionKind, err)
|
|
|
|
c.Log("Ignoring delete failure for %q %s: %v", info.Name, info.Mapping.GroupVersionKind, err)
|
|
|
@ -842,3 +856,19 @@ func (c *Client) WaitAndGetCompletedPodPhase(name string, timeout time.Duration)
|
|
|
|
|
|
|
|
|
|
|
|
return v1.PodUnknown, err
|
|
|
|
return v1.PodUnknown, err
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func getAnnotationDeletePropagation(annotation map[string]string) metav1.DeletionPropagation {
|
|
|
|
|
|
|
|
if propagation, ok := annotation[release.HookDeletePropagationAnnotation]; ok {
|
|
|
|
|
|
|
|
switch metav1.DeletionPropagation(propagation) {
|
|
|
|
|
|
|
|
case metav1.DeletePropagationBackground:
|
|
|
|
|
|
|
|
return metav1.DeletePropagationBackground
|
|
|
|
|
|
|
|
case metav1.DeletePropagationForeground:
|
|
|
|
|
|
|
|
return metav1.DeletePropagationForeground
|
|
|
|
|
|
|
|
case metav1.DeletePropagationOrphan:
|
|
|
|
|
|
|
|
return metav1.DeletePropagationOrphan
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return ""
|
|
|
|
|
|
|
|
}
|
|
|
|