secret deletion

This commit is contained in:
kkb0318
2024-04-11 20:59:17 +09:00
parent 720bc912b9
commit 1b9ccebbc5
13 changed files with 155 additions and 65 deletions
+2 -23
View File
@@ -3,11 +3,7 @@ package kubernetes
import (
"context"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
)
func NewKubernetesClient(c client.Client, owner Owner) (*KubernetesClient, error) {
@@ -22,19 +18,10 @@ func (h KubernetesClient) Apply(ctx context.Context, obj client.Object) error {
client.ForceOwnership,
client.FieldOwner(h.owner.Field),
}
gvk, err := apiutil.GVKForObject(obj, h.client.Scheme())
u, err := h.toUnstructured(obj)
if err != nil {
return err
}
u := &unstructured.Unstructured{}
unstructured, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
if err != nil {
return err
}
u.Object = unstructured
u.SetGroupVersionKind(gvk)
u.SetManagedFields(nil)
err = h.client.Patch(ctx, u, client.Apply, opts...)
if err != nil {
return err
@@ -48,18 +35,10 @@ func (h KubernetesClient) PatchStatus(ctx context.Context, obj client.Object) er
FieldManager: h.owner.Field,
},
}
gvk, err := apiutil.GVKForObject(obj, h.client.Scheme())
u, err := h.toUnstructured(obj)
if err != nil {
return err
}
u := &unstructured.Unstructured{}
unstructured, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
if err != nil {
return err
}
u.Object = unstructured
u.SetGroupVersionKind(gvk)
u.SetManagedFields(nil)
return h.client.Status().Patch(ctx, u, client.Apply, opts)
}
+6 -18
View File
@@ -14,27 +14,15 @@ import (
"sigs.k8s.io/controller-runtime/pkg/client"
)
func (h *KubernetesClient) DeleteAll(ctx context.Context, resources []*unstructured.Unstructured, opts handler.DeleteOptions) error {
if !h.cleanup {
return nil
}
for _, r := range resources {
err := h.Delete(ctx, r, opts)
if err != nil {
return err
}
}
return nil
}
// Delete deletes the given object (not found errors are ignored).
func (h *KubernetesClient) Delete(ctx context.Context, object *unstructured.Unstructured, opts handler.DeleteOptions) error {
if !h.cleanup {
return nil
func (h *KubernetesClient) Delete(ctx context.Context, obj client.Object, opts handler.DeleteOptions) error {
u, err := h.toUnstructured(obj)
if err != nil {
return err
}
existingObject := &unstructured.Unstructured{}
existingObject.SetGroupVersionKind(object.GroupVersionKind())
err := h.client.Get(ctx, client.ObjectKeyFromObject(object), existingObject)
existingObject.SetGroupVersionKind(u.GroupVersionKind())
err = h.client.Get(ctx, client.ObjectKeyFromObject(u), existingObject)
if err != nil {
if !errors.IsNotFound(err) {
return fmt.Errorf("failed to delete: %w", err)
+26
View File
@@ -0,0 +1,26 @@
package kubernetes
import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"sigs.k8s.io/controller-runtime/pkg/client"
"sigs.k8s.io/controller-runtime/pkg/client/apiutil"
)
func (h KubernetesClient) toUnstructured(obj client.Object) (*unstructured.Unstructured, error) {
gvk, err := apiutil.GVKForObject(obj, h.client.Scheme())
if err != nil {
return nil, err
}
u := &unstructured.Unstructured{}
unstructured, err := runtime.DefaultUnstructuredConverter.ToUnstructured(obj)
if err != nil {
return nil, err
}
u.Object = unstructured
u.SetGroupVersionKind(gvk)
u.SetManagedFields(nil)
return u, nil
}