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 7a52389aabd0233c52d4d8b7de122eb654c0b0d9..f57a9b1200e070ad9cb6a194c22ed1fc4e540867 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 b09aad534eb0359466bcb3ca4e1199c882eabd91..61e1a93d48fd9915c6094d00a15d5705b29afac0 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); + } + }