From 67b365ecb3589e5f3563535eb8cb84ee7ded2824 Mon Sep 17 00:00:00 2001
From: kbeyro <121854496+kbeyro@users.noreply.github.com>
Date: Mon, 26 May 2025 12:32:36 +0200
Subject: [PATCH] cluster delete function

---
 .../kubernetes/RemoteClusterManager.java             | 12 ++++++++++++
 .../api/RemoteClusterManagerController.java          |  8 ++++++++
 2 files changed, 20 insertions(+)

diff --git a/src/main/java/net/geant/nmaas/externalservices/kubernetes/RemoteClusterManager.java b/src/main/java/net/geant/nmaas/externalservices/kubernetes/RemoteClusterManager.java
index 7a52389aa..f57a9b120 100644
--- a/src/main/java/net/geant/nmaas/externalservices/kubernetes/RemoteClusterManager.java
+++ b/src/main/java/net/geant/nmaas/externalservices/kubernetes/RemoteClusterManager.java
@@ -331,4 +331,16 @@ public class RemoteClusterManager implements ClusterMonitoringService {
         return Files.exists(path) && Files.isRegularFile(path) && Files.isReadable(path);
     }
 
+    public void removeCluster(Long id) {
+        try {
+            if(clusterRepository.existsById(id)) {
+                this.clusterRepository.deleteById(id);
+            }
+        } catch (RuntimeException ex) {
+            log.warn("Can not delete cluster {}", id);
+            log.error("Exception: {}", ex.getMessage());
+        }
+
+    }
+
 }
\ No newline at end of file
diff --git a/src/main/java/net/geant/nmaas/externalservices/kubernetes/api/RemoteClusterManagerController.java b/src/main/java/net/geant/nmaas/externalservices/kubernetes/api/RemoteClusterManagerController.java
index b09aad534..61e1a93d4 100644
--- a/src/main/java/net/geant/nmaas/externalservices/kubernetes/api/RemoteClusterManagerController.java
+++ b/src/main/java/net/geant/nmaas/externalservices/kubernetes/api/RemoteClusterManagerController.java
@@ -6,7 +6,9 @@ import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import net.geant.nmaas.externalservices.kubernetes.RemoteClusterManager;
 import net.geant.nmaas.externalservices.kubernetes.api.model.RemoteClusterView;
+import org.springframework.http.ResponseEntity;
 import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PathVariable;
 import org.springframework.web.bind.annotation.PostMapping;
@@ -58,4 +60,10 @@ public class RemoteClusterManagerController {
         return remoteClusterManager.updateCluster(view, id);
     }
 
+    @PreAuthorize("hasRole('ROLE_SYSTEM_ADMIN') || hasRole('ROLE_OPERATOR')")
+    @DeleteMapping("/{id}")
+    public void deleteCluster(@PathVariable Long id) {
+         remoteClusterManager.removeCluster(id);
+    }
+
 }
-- 
GitLab