/
delete.go
43 lines (37 loc) · 1.12 KB
/
delete.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package reconciler
import (
"context"
"fmt"
"strings"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"sigs.k8s.io/controller-runtime/pkg/client"
)
// DeleteSubResource delete CR instance sub resources
// Notice: argument [ list ] will store data, so don't make reference to them for gc
func DeleteSubResource(c client.Client, ctx context.Context, cr metav1.Object, list ...client.ObjectList) (err error) {
for _, v := range list {
labels := map[string]string{}
err = c.List(ctx, v, client.InNamespace(cr.GetName()), client.MatchingLabels(labels))
if err != nil && client.IgnoreNotFound(err) != nil {
err = fmt.Errorf("delete sub resource failed,[namespace=%s] [finalizer=%s] [cr=%s] , err is -> %s",
cr.GetNamespace(),
cr.GetName(),
strings.Join(cr.GetFinalizers(), ","),
err.Error(),
)
return err
} else {
for {
err = fmt.Errorf("delete sub resource failed,[namespace=%s] [finalizer=%s] [cr=%s] [subResourceName=%s], err is -> %s",
cr.GetNamespace(),
cr.GetName(),
strings.Join(cr.GetFinalizers(), ","),
"",
err.Error(),
)
return err
}
}
}
return nil
}