Pārlūkot izejas kodu

终止项目时,删除任务

root 2 gadi atpakaļ
vecāks
revīzija
d514b9207f

+ 3 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/ProjectService.java

@@ -452,6 +452,9 @@ public class ProjectService {
     @SneakyThrows
     @SneakyThrows
     public void stopProject(String projectId, String projectType) {
     public void stopProject(String projectId, String projectType) {
 
 
+        //1 删除项目所有任务
+        taskMapper.deleteByProject(projectId);
+
         //2 根据 pod 前缀删除所有 pod
         //2 根据 pod 前缀删除所有 pod
         String podPrefix = "project-" + projectId;
         String podPrefix = "project-" + projectId;
         Set<String> nodeOfPodKeySet = RedisUtil.getKeySetByPrefix(stringRedisTemplate, "pod:" + podPrefix);
         Set<String> nodeOfPodKeySet = RedisUtil.getKeySetByPrefix(stringRedisTemplate, "pod:" + podPrefix);

+ 18 - 3
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

@@ -88,6 +88,22 @@ public class ProjectUtil {
         log.info("ProjectUtil--deletePod 删除 pod 并删除 redis 键值对:" + key);
         log.info("ProjectUtil--deletePod 删除 pod 并删除 redis 键值对:" + key);
     }
     }
 
 
+    @SneakyThrows
+    public void deletePodAndAddOneParallelismToNode(String podName, String nodeName) {
+        String key = "pod:" + podName + ":node";
+        // 先删除 redis key
+        RedisUtil.deleteByKey(stringRedisTemplate, "pod:" + podName + ":node");
+        try {
+            KubernetesUtil.deletePod(apiClient, kubernetesConfiguration.getNamespace(), podName);
+            // 节点并行度加一
+            addOneParallelismToNode(nodeName);
+        } catch (Exception e) {
+            log.info("ProjectUtil--deletePod pod " + podName + " 不存在。");
+        }
+
+        log.info("ProjectUtil--deletePod 删除 pod 并删除 redis 键值对:" + key);
+    }
+
     public String getNodeNameOfPod(String podName) {
     public String getNodeNameOfPod(String podName) {
         return stringRedisTemplate.opsForValue().get("pod:" + podName + ":node");
         return stringRedisTemplate.opsForValue().get("pod:" + podName + ":node");
     }
     }
@@ -196,14 +212,13 @@ public class ProjectUtil {
         for (KubernetesNodeTO kubernetesNodeSource : initialNodeList) {
         for (KubernetesNodeTO kubernetesNodeSource : initialNodeList) {
             KubernetesNodeTO kubernetesNodeCopy = kubernetesNodeSource.clone();
             KubernetesNodeTO kubernetesNodeCopy = kubernetesNodeSource.clone();
             String nodeName = kubernetesNodeCopy.getName();   // 节点名称
             String nodeName = kubernetesNodeCopy.getName();   // 节点名称
-            String restParallelismKey = "node:" + nodeName + ":parallelism";   // 获取节点剩余并行度的 key
             int maxParallelism = kubernetesNodeCopy.getMaxParallelism();
             int maxParallelism = kubernetesNodeCopy.getMaxParallelism();
-            String restParallelismString = stringRedisTemplate.opsForValue().get(restParallelismKey);
+            String restParallelismString = stringRedisTemplate.opsForValue().get("node:" + nodeName + ":parallelism");// 获取节点剩余并行度的 key
             // -------------------------------- Comment --------------------------------
             // -------------------------------- Comment --------------------------------
             int restParallelism;
             int restParallelism;
             if (restParallelismString == null) {    // 如果剩余可用并行度没有值,说明是第一次查询,则重置成最大并行度的预设值
             if (restParallelismString == null) {    // 如果剩余可用并行度没有值,说明是第一次查询,则重置成最大并行度的预设值
                 restParallelism = maxParallelism;
                 restParallelism = maxParallelism;
-                stringRedisTemplate.opsForValue().set(restParallelismKey, restParallelism + "");
+                stringRedisTemplate.opsForValue().set("node:" + nodeName + ":parallelism", restParallelism + "");
             } else {
             } else {
                 restParallelism = Integer.parseInt(restParallelismString);
                 restParallelism = Integer.parseInt(restParallelismString);
                 kubernetesNodeCopy.setMaxParallelism(restParallelism);
                 kubernetesNodeCopy.setMaxParallelism(restParallelism);