root 2 years ago
parent
commit
c1788882d9
16 changed files with 60 additions and 39 deletions
  1. 25 14
      api-common/src/main/java/api/common/util/FileUtil.java
  2. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/algorithm/AlgorithmPlatform.java
  3. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/algorithm/OauthParameter.java
  4. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/docker/DockerConfiguration.java
  5. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/git/GitConfiguration.java
  6. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/http/HttpConfiguration.java
  7. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/kafka/KafkaAdminConfiguration.java
  8. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/kubernetes/KubernetesConfiguration.java
  9. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/minio/MinioConfiguration.java
  10. 1 1
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/redis/RedisTemplateConfiguration.java
  11. 2 2
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/scheduler/AlgorithmScheduler.java
  12. 7 7
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/scheduler/ClusterScheduler.java
  13. 0 0
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/scheduler/ProjectScheduler.java
  14. 7 2
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/manager/ProjectManager.java
  15. 3 3
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/service/ProjectService.java
  16. 7 2
      simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

+ 25 - 14
api-common/src/main/java/api/common/util/FileUtil.java

@@ -1,6 +1,7 @@
 package api.common.util;
 
 import lombok.SneakyThrows;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
 import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
 import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
@@ -15,6 +16,7 @@ import java.nio.file.Files;
 import java.nio.file.Paths;
 import java.util.*;
 
+@Slf4j
 public class FileUtil {
 
     /**
@@ -1016,7 +1018,7 @@ public class FileUtil {
      * 将字符串保存为本地文件
      */
     @SneakyThrows
-    public static void writeStringToLocalFile(String string, String filePath) throws IOException {
+    public static void writeStringToLocalFile(String string, String filePath) {
         writeInputStreamToLocalFile(new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8)), filePath);
     }
 
@@ -1024,7 +1026,7 @@ public class FileUtil {
      * 将字符串保存为本地文件
      */
     @SneakyThrows
-    public static void writeStringToLocalFile(String string, String filePath, int bufferLength) throws IOException {
+    public static void writeStringToLocalFile(String string, String filePath, int bufferLength) {
         writeInputStreamToLocalFile(new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8)), filePath, bufferLength);
     }
 
@@ -1032,25 +1034,34 @@ public class FileUtil {
     /**
      * 将输入流保存为本地文件
      */
-    public static void writeInputStreamToLocalFile(InputStream inputStream, String filePath) throws IOException {
+    public static void writeInputStreamToLocalFile(InputStream inputStream, String filePath) {
         writeInputStreamToLocalFile(inputStream, filePath, 4096);
     }
 
     /**
      * 将输入流保存为本地文件
      */
-    public static void writeInputStreamToLocalFile(InputStream inputStream, String filePath, int bufferLength) throws IOException {
-        BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
-        byte[] data = new byte[bufferLength];
-        int dataLength;
-        File file = new File(filePath);
-        createParentDirectory(file);
-        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file, false));
-        while ((dataLength = bufferedInputStream.read(data)) != -1) {
-            bufferedOutputStream.write(data, 0, dataLength);
+    public static void writeInputStreamToLocalFile(InputStream inputStream, String filePath, int bufferLength) {
+        try {
+            final File file1 = new File(filePath);
+            if(file1.exists()){
+                file1.delete();
+            }
+            BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
+            byte[] data = new byte[bufferLength];
+            int dataLength;
+            File file = new File(filePath);
+            createParentDirectory(file);
+            BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(file, false));
+            while ((dataLength = bufferedInputStream.read(data)) != -1) {
+                bufferedOutputStream.write(data, 0, dataLength);
+            }
+            bufferedOutputStream.close();
+            bufferedInputStream.close();
+        } catch (IOException e) {
+            log.error(e.getMessage());
+            throw new RuntimeException(e);
         }
-        bufferedOutputStream.close();
-        bufferedInputStream.close();
     }
 
     /**

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/algorithm/AlgorithmPlatform.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/algorithm/AlgorithmPlatform.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.algorithm;
+package com.css.simulation.resource.scheduler.common.configuration.algorithm;
 
 import api.common.util.HttpUtil;
 import api.common.util.JsonUtil;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/algorithm/OauthParameter.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/algorithm/OauthParameter.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.algorithm;
+package com.css.simulation.resource.scheduler.common.configuration.algorithm;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/docker/DockerConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/docker/DockerConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.docker;
+package com.css.simulation.resource.scheduler.common.configuration.docker;
 
 import com.css.simulation.resource.scheduler.pojo.to.DockerNodeTO;
 import lombok.Data;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/git/GitConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/git/GitConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.git;
+package com.css.simulation.resource.scheduler.common.configuration.git;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/http/HttpConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/http/HttpConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.http;
+package com.css.simulation.resource.scheduler.common.configuration.http;
 
 import org.apache.http.client.config.RequestConfig;
 import org.apache.http.conn.ssl.NoopHostnameVerifier;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/kafka/KafkaAdminConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/kafka/KafkaAdminConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.kafka;
+package com.css.simulation.resource.scheduler.common.configuration.kafka;
 
 import org.apache.kafka.clients.admin.Admin;
 import org.apache.kafka.clients.admin.KafkaAdminClient;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/kubernetes/KubernetesConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/kubernetes/KubernetesConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.kubernetes;
+package com.css.simulation.resource.scheduler.common.configuration.kubernetes;
 
 import com.css.simulation.resource.scheduler.pojo.to.KubernetesNodeTO;
 import io.kubernetes.client.openapi.ApiClient;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/minio/MinioConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/minio/MinioConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.minio;
+package com.css.simulation.resource.scheduler.common.configuration.minio;
 
 import io.minio.MinioClient;
 import lombok.Data;

+ 1 - 1
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/configuration/redis/RedisTemplateConfiguration.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/configuration/redis/RedisTemplateConfiguration.java

@@ -1,4 +1,4 @@
-package com.css.simulation.resource.scheduler.configuration.redis;
+package com.css.simulation.resource.scheduler.common.configuration.redis;
 
 import com.fasterxml.jackson.annotation.JsonAutoDetect;
 import com.fasterxml.jackson.annotation.PropertyAccessor;

+ 2 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/AlgorithmScheduler.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/scheduler/AlgorithmScheduler.java

@@ -1,7 +1,7 @@
-package com.css.simulation.resource.scheduler.scheduler;
+package com.css.simulation.resource.scheduler.common.scheduler;
 
 import api.common.util.SshUtil;
-import com.css.simulation.resource.scheduler.configuration.docker.DockerConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.docker.DockerConfiguration;
 import com.css.simulation.resource.scheduler.mapper.AlgorithmMapper;
 import com.css.simulation.resource.scheduler.pojo.po.AlgorithmPO;
 import com.css.simulation.resource.scheduler.pojo.to.DockerNodeTO;

+ 7 - 7
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/ClusterScheduler.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/scheduler/ClusterScheduler.java

@@ -1,8 +1,8 @@
-package com.css.simulation.resource.scheduler.scheduler;
+package com.css.simulation.resource.scheduler.common.scheduler;
 
 import api.common.pojo.constants.DictConstants;
 import api.common.util.CollectionUtil;
-import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.kubernetes.KubernetesConfiguration;
 import com.css.simulation.resource.scheduler.mapper.AutoSubProjectMapper;
 import com.css.simulation.resource.scheduler.mapper.ManualProjectMapper;
 import com.css.simulation.resource.scheduler.pojo.po.ProjectPO;
@@ -25,15 +25,15 @@ public class ClusterScheduler {
 
 
     @Resource
-    KubernetesConfiguration kubernetesConfiguration;
+    private KubernetesConfiguration kubernetesConfiguration;
     @Resource
-    ApiClient apiClient;
+    private ApiClient apiClient;
     @Resource
-    StringRedisTemplate stringRedisTemplate;
+    private  StringRedisTemplate stringRedisTemplate;
     @Resource
-    ManualProjectMapper manualProjectMapper;
+    private ManualProjectMapper manualProjectMapper;
     @Resource
-    AutoSubProjectMapper autoSubProjectMapper;
+    private AutoSubProjectMapper autoSubProjectMapper;
 
     /**
      * 闲时重置所有并行度

+ 0 - 0
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/scheduler/ProjectScheduler.java → simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/common/scheduler/ProjectScheduler.java


+ 7 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/manager/ProjectManager.java

@@ -2,13 +2,14 @@ package com.css.simulation.resource.scheduler.manager;
 
 import api.common.pojo.constants.DictConstants;
 import api.common.util.FileUtil;
-import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
-import com.css.simulation.resource.scheduler.configuration.minio.MinioConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.kubernetes.KubernetesConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.minio.MinioConfiguration;
 import com.css.simulation.resource.scheduler.mapper.VehicleMapper;
 import com.css.simulation.resource.scheduler.util.ProjectUtil;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.data.redis.core.StringRedisTemplate;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -36,6 +37,8 @@ public class ProjectManager {
     private ProjectUtil projectUtil;
     @Resource
     private VehicleMapper vehicleMapper;
+    @Resource
+    private StringRedisTemplate stringRedisTemplate;
 
 
     /**
@@ -78,6 +81,7 @@ public class ProjectManager {
             String replace14;
             if (currentCount == 0) {
                 replace14 = replace13.replace("cpu-order", "\"" + cpuOrder + "\"");     // 指定 cpu 编号
+                stringRedisTemplate.opsForValue().set("pod:" + podName + ":cpu", cpuOrder + "");    //  pod 运行使用的 cpu编号
             } else {
                 replace14 = replace13;
             }
@@ -125,6 +129,7 @@ public class ProjectManager {
             String replace19;
             if (currentCount == 0) {
                 replace19 = replace18.replace("cpu-order", "\"" + cpuOrder + "\"");     // 指定 cpu 编号
+                stringRedisTemplate.opsForValue().set("pod:" + podName + ":cpu", cpuOrder + "");    //  pod 运行使用的 cpu编号
             } else {
                 replace19 = replace18;
             }

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

@@ -3,9 +3,9 @@ package com.css.simulation.resource.scheduler.service;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.dto.ProjectMessageDTO;
 import api.common.util.*;
-import com.css.simulation.resource.scheduler.configuration.docker.DockerConfiguration;
-import com.css.simulation.resource.scheduler.configuration.git.GitConfiguration;
-import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.docker.DockerConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.git.GitConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.kubernetes.KubernetesConfiguration;
 import com.css.simulation.resource.scheduler.manager.ProjectManager;
 import com.css.simulation.resource.scheduler.mapper.*;
 import com.css.simulation.resource.scheduler.pojo.po.AlgorithmPO;

+ 7 - 2
simulation-resource-scheduler/src/main/java/com/css/simulation/resource/scheduler/util/ProjectUtil.java

@@ -3,7 +3,7 @@ package com.css.simulation.resource.scheduler.util;
 import api.common.pojo.constants.DictConstants;
 import api.common.pojo.dto.ProjectMessageDTO;
 import api.common.util.*;
-import com.css.simulation.resource.scheduler.configuration.kubernetes.KubernetesConfiguration;
+import com.css.simulation.resource.scheduler.common.configuration.kubernetes.KubernetesConfiguration;
 import com.css.simulation.resource.scheduler.mapper.*;
 import com.css.simulation.resource.scheduler.pojo.po.ProjectPO;
 import com.css.simulation.resource.scheduler.pojo.po.UserPO;
@@ -145,8 +145,13 @@ public class ProjectUtil {
         }
         for (String absolutePath : list) {
             if (absolutePath.contains(nodeName) && absolutePath.contains(projectId)) {
+                String cpuOrderString = stringRedisTemplate.opsForValue().get("pod:" + lastPodName + ":cpu");
+                Optional.ofNullable(cpuOrderString).orElseThrow(() -> new RuntimeException("createNextPod2() pod " + lastPodName + " 缓存的 cpu 编号为空。"));
+                final String read = FileUtil.read(absolutePath);
+                final String replace = read.replace("cpu-order", "\"" + cpuOrderString + "\"");
+                FileUtil.writeStringToLocalFile(replace, absolutePath);
                 createPod2(absolutePath);
-                log.info("createNextPod2() 创建项目 " + projectId + " 在节点" + nodeName + "的下一个 pod。");
+                log.info("createNextPod2() 创建项目 " + projectId + " 在节点 " + nodeName + " 的下一个 pod。");
                 return;
             }
         }