reghao 5 лет назад
Родитель
Сommit
2e46feab3e

+ 1 - 0
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/memory/Memory.java

@@ -21,6 +21,7 @@ public class Memory {
     public MemoryInfo info() {
         Map<String, String> map = parseMemInfo();
 
+        // TODO 使用 double,保留两位小数
         long total = Long.parseLong(map.get("MemTotal").split("kB")[0]);
         long free = Long.parseLong(map.get("MemFree").split("kB")[0]);
         long shared = Long.parseLong(map.get("Shmem").split("kB")[0]);

+ 1 - 1
dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/RabbitConsumer.java

@@ -50,7 +50,7 @@ public class RabbitConsumer implements ChannelAwareMessageListener {
             String ops = mqMessage.getOps();
             String payload = mqMessage.getPayload();
 
-            if (!machineId.equals(Machine.machineId()) && sendTime < startTime) {
+            if (!machineId.equals(Machine.machineId()) || sendTime < startTime) {
                 log.info("忽略不是发送到本机或 dagent 启动前发送到 MQ 中的所有消息...");
                 return;
             }

+ 8 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/crud/OrchestrateCrudController.java

@@ -92,6 +92,14 @@ public class OrchestrateCrudController {
         return ResponseEntity.ok().body(WebResult.success("ok"));
     }
 
+    @ApiOperation(value = "复制项目编排")
+    @PostMapping(value = "/proj/copy")
+    public ResponseEntity<String> copyProjOrchestration(@RequestParam("from") String from,
+                                                       @RequestParam("to") String to) throws Exception {
+        projCrudService.copy(from, to);
+        return ResponseEntity.ok().body(WebResult.success("ok"));
+    }
+
     @ApiOperation(value = "分页获取项目编排")
     @GetMapping("/proj")
     public ResponseEntity<String> getProjOrchestrationByPage(@RequestParam("page") int page,

+ 23 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/orchestarte/ProjCrudService.java

@@ -40,7 +40,29 @@ public class ProjCrudService implements CrudOps<ProjOrchestration> {
         projRepository.save(proj);
     }
 
-    public void copy() {
+    public void copy(String from, String to) throws Exception {
+        ProjOrchestration fromProj = projRepository.findByIsDeleteFalseAndProjId(from);
+        if (fromProj == null) {
+            throw new Exception("ID 为 " + from + " 的项目配置不存在...");
+        }
+
+        ProjOrchestration toProj = projRepository.findByIsDeleteFalseAndProjId(to);
+        if (toProj == null) {
+            toProj = (ProjOrchestration) fromProj.clone();
+            copyToDifferentProj(toProj, to);
+            projRepository.save(toProj);
+        }
+    }
+
+    private void copyToDifferentProj(ProjOrchestration proj, String to) {
+        proj.setProjId(to);
+        proj.setDescription("");
+        proj.setProjRepo("");
+        proj.setDirname("");
+
+        proj.setId(null);
+        proj.setCreateTime(null);
+        proj.setUpdateTime(null);
     }
 
     @Override