From bc0e7b63c9a986ac293f607070bb715ff6e7e362 Mon Sep 17 00:00:00 2001 From: Thomas Labarussias Date: Thu, 15 Feb 2024 13:36:45 +0100 Subject: [PATCH] add deletion of the namespace Signed-off-by: Thomas Labarussias --- actionners/actionners.go | 2 +- actionners/kubernetes/delete/delete.go | 2 ++ internal/kubernetes/client/client.go | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/actionners/actionners.go b/actionners/actionners.go index d01ec239..7917bf9e 100644 --- a/actionners/actionners.go +++ b/actionners/actionners.go @@ -123,7 +123,7 @@ func GetDefaultActionners() *Actionners { DefaultContinue: false, Init: k8s.Init, Checks: []checkActionner{ - k8sChecks.CheckPodExist, + k8sChecks.CheckTargetExist, }, CheckParameters: nil, Action: k8sDelete.Action, diff --git a/actionners/kubernetes/delete/delete.go b/actionners/kubernetes/delete/delete.go index 6eed0c03..d3c1163a 100644 --- a/actionners/kubernetes/delete/delete.go +++ b/actionners/kubernetes/delete/delete.go @@ -29,6 +29,8 @@ func Action(_ *rules.Action, event *events.Event) (utils.LogLine, error) { var err error switch resource { + case "namespaces": + err = client.Clientset.CoreV1().Namespaces().Delete(context.Background(), name, metav1.DeleteOptions{}) case "configmaps": err = client.Clientset.CoreV1().ConfigMaps(namespace).Delete(context.Background(), name, metav1.DeleteOptions{}) case "secrets": diff --git a/internal/kubernetes/client/client.go b/internal/kubernetes/client/client.go index c75a2388..e2a0665a 100644 --- a/internal/kubernetes/client/client.go +++ b/internal/kubernetes/client/client.go @@ -150,6 +150,8 @@ func (client Client) GetReplicasetFromPod(pod *corev1.Pod) (*appsv1.ReplicaSet, func (client Client) GetTarget(resource, name, namespace string) (interface{}, error) { switch resource { + case "namespaces": + return client.GetNamespace(name, namespace) case "configmaps": return client.GetConfigMap(name, namespace) case "secrets": @@ -175,6 +177,14 @@ func (client Client) GetTarget(resource, name, namespace string) (interface{}, e return nil, errors.New("the resource doesn't exist or its type is not yet managed") } +func (client Client) GetNamespace(name, namespace string) (*corev1.Namespace, error) { + p, err := client.Clientset.CoreV1().Namespaces().Get(context.Background(), name, metav1.GetOptions{}) + if err != nil { + return nil, fmt.Errorf("the namespace '%v' doesn't exist", name, namespace) + } + return p, nil +} + func (client Client) GetConfigMap(name, namespace string) (*corev1.ConfigMap, error) { p, err := client.Clientset.CoreV1().ConfigMaps(namespace).Get(context.Background(), name, metav1.GetOptions{}) if err != nil {