瀏覽代碼

重构 dagent

reghao 5 年之前
父節點
當前提交
b72870bfbc
共有 64 個文件被更改,包括 481 次插入261 次删除
  1. 3 18
      common/pom.xml
  2. 0 14
      common/src/main/java/cn/reghao/autodop/common/amqp/MessageSender.java
  3. 9 0
      common/src/main/java/cn/reghao/autodop/common/amqp/RabbitConsumer.java
  4. 3 3
      common/src/main/java/cn/reghao/autodop/common/amqp/RabbitProducer.java
  5. 7 7
      common/src/main/java/cn/reghao/autodop/common/amqp/RpcResult.java
  6. 17 0
      common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatus.java
  7. 40 1
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/Machine.java
  8. 18 0
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/MachineService.java
  9. 4 4
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineLog.java
  10. 10 10
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineRegistry.java
  11. 1 4
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/cpu/CPUInfo.java
  12. 2 5
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/disk/DiskInfo.java
  13. 1 3
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/memory/MemoryInfo.java
  14. 1 3
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/network/NetworkInfo.java
  15. 1 3
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/system/os/OSInfo.java
  16. 37 0
      dagent/src/main/java/cn/reghao/autodop/dagent/app/App.java
  17. 20 0
      dagent/src/main/java/cn/reghao/autodop/dagent/app/AppService.java
  18. 49 0
      dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppService.java
  19. 0 19
      dagent/src/main/java/cn/reghao/autodop/dagent/app/pojo/AppStatus.java
  20. 39 0
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/AppMessageDispatcher.java
  21. 36 0
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/MachineMessageDispatcher.java
  22. 1 1
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/MessageDispatcher.java
  23. 13 0
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/RabbitConfig.java
  24. 93 0
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/RabbitConsumer.java
  25. 8 12
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/RabbitConsumerConfig.java
  26. 0 22
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/config/DmasterProperties.java
  27. 0 74
      dagent/src/main/java/cn/reghao/autodop/dagent/utils/mq/RemoteCallDispatcher.java
  28. 0 4
      dagent/src/main/resources/application-dev.yml
  29. 0 4
      dagent/src/main/resources/application-prod.yml
  30. 0 4
      dagent/src/main/resources/application-test.yml
  31. 18 3
      dmaster/pom.xml
  32. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/BuildDir.java
  33. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/NotifierConfig.java
  34. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/CompilerConfig.java
  35. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/PackerConfig.java
  36. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/RepoConfig.java
  37. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppOrchestration.java
  38. 1 3
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/ProjOrchestration.java
  39. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildDeployApp.java
  40. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java
  41. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/CommitLog.java
  42. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java
  43. 7 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java
  44. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/NotifyTask.java
  45. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3.java
  46. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3Bak.java
  47. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3BakLog.java
  48. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/Permission.java
  49. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/Role.java
  50. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/UserAuth.java
  51. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/MachineMessageDispatcher.java
  52. 9 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/MessageDispatcher.java
  53. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/RabbitConsumer.java
  54. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/RabbitConsumerConfig.java
  55. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/crud/MachineCrudService.java
  56. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/orm/BaseDocument.java
  57. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/common/orm/BaseEntity.java
  58. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/DingNotify.java
  59. 3 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/EmailNotify.java
  60. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/Notify.java
  61. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/SmsNotify.java
  62. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/ding/DingMsg.java
  63. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/ding/DingText.java
  64. 1 1
      dmaster/src/test/java/cn/reghao/autodop/common/amqp/RabbitProducerTest.java

+ 3 - 18
common/pom.xml

@@ -55,24 +55,9 @@
         </dependency>
 
         <dependency>
-            <groupId>com.sun.mail</groupId>
-            <artifactId>javax.mail</artifactId>
-            <version>RELEASE</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-jpa</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-data-mongodb</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-websocket</artifactId>
+            <groupId>org.quartz-scheduler</groupId>
+            <artifactId>quartz</artifactId>
+            <version>2.3.2</version>
         </dependency>
     </dependencies>
 

+ 0 - 14
common/src/main/java/cn/reghao/autodop/common/amqp/MessageSender.java

@@ -19,18 +19,4 @@ public class MessageSender {
     public MessageSender(RabbitTemplate rabbitTemplate) {
         this.rabbitTemplate = rabbitTemplate;
     }
-
-    public void send(String routeKey, Object obj) {
-        String msg = JsonConverter.objectToJson(obj);
-        rabbitTemplate.convertAndSend(routeKey, msg);
-    }
-
-    public RpcResult callRemote(String routeKey, String msg) {
-        // TODO RPC 调用等待超时,若 RPC 服务端业务处理的时间超过设定的超时,则会引发不可知的错误
-        rabbitTemplate.setReplyTimeout(60_000);
-        // TODO 处理未成功发送到 mq 时的情况
-        // TODO 处理 RPC 服务端未启动时的情况
-        String result = (String) rabbitTemplate.convertSendAndReceive(routeKey, msg);
-        return (RpcResult) JsonConverter.jsonToObject(result, RpcResult.class);
-    }
 }

+ 9 - 0
common/src/main/java/cn/reghao/autodop/common/amqp/RabbitConsumer.java

@@ -0,0 +1,9 @@
+package cn.reghao.autodop.common.amqp;
+
+/**
+ * @author reghao
+ * @date 2021-02-22 17:01:47
+ */
+public class RabbitConsumer {
+
+}

+ 3 - 3
common/src/main/java/cn/reghao/autodop/common/amqp/RabbitProducer.java

@@ -23,16 +23,16 @@ public class RabbitProducer {
         rabbitTemplate.convertAndSend(routeKey, msg);
     }
 
-    public RPCResult callRemote(String routeKey, MQMessage mqMessage) {
+    public RpcResult callRemote(String routeKey, MQMessage mqMessage) {
         String msg = JsonConverter.objectToJson(mqMessage);
         // TODO RPC 调用等待超时,若 RPC 服务端业务处理的时间超过设定的超时,则会引发不可知的错误
         rabbitTemplate.setReplyTimeout(30_000);
         // TODO 处理未成功发送到 mq 时的情况
         String result = (String) rabbitTemplate.convertSendAndReceive(routeKey, msg);
         if (result == null) {
-            return RPCResult.fail("RPC timeout...");
+            return RpcResult.fail("RPC timeout...");
         } else {
-            return (RPCResult) JsonConverter.jsonToObject(result, RPCResult.class);
+            return (RpcResult) JsonConverter.jsonToObject(result, RpcResult.class);
         }
     }
 }

+ 7 - 7
common/src/main/java/cn/reghao/autodop/common/amqp/RPCResult.java → common/src/main/java/cn/reghao/autodop/common/amqp/RpcResult.java

@@ -12,19 +12,19 @@ import static cn.reghao.autodop.common.result.ResultCode.SUCCESS;
  */
 @Data
 @AllArgsConstructor
-public class RPCResult {
+public class RpcResult {
     private int statusCode;
     private String result;
 
-    public static RPCResult success(String data) {
-        return new RPCResult(SUCCESS.getCode(), data);
+    public static RpcResult success(String data) {
+        return new RpcResult(SUCCESS.getCode(), data);
     }
 
-    public static RPCResult fail(String data) {
-        return new RPCResult(FAIL.getCode(), data);
+    public static RpcResult fail(String data) {
+        return new RpcResult(FAIL.getCode(), data);
     }
 
-    public static RPCResult error(String data) {
-        return new RPCResult(FAIL.getCode(), data);
+    public static RpcResult error(String data) {
+        return new RpcResult(FAIL.getCode(), data);
     }
 }

+ 17 - 0
common/src/main/java/cn/reghao/autodop/common/dagent/app/api/data/AppStatus.java

@@ -0,0 +1,17 @@
+package cn.reghao.autodop.common.dagent.app.api.data;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2021-02-22 16:24:08
+ */
+@Data
+public class AppStatus {
+    private String appId;
+    private String commitId;
+    private String host;
+    private String status;
+    private String startedTime;
+    private int pid;
+}

+ 40 - 1
common/src/main/java/cn/reghao/autodop/common/dagent/machine/Machine.java

@@ -1,22 +1,32 @@
 package cn.reghao.autodop.common.dagent.machine;
 
+import cn.reghao.autodop.common.amqp.RpcResult;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineHeartbeat;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineLog;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
 import cn.reghao.autodop.common.dagent.machine.hardware.cpu.CPU;
 import cn.reghao.autodop.common.dagent.machine.hardware.disk.Disk;
 import cn.reghao.autodop.common.dagent.machine.hardware.memory.Memory;
 import cn.reghao.autodop.common.dagent.machine.hardware.network.Network;
 import cn.reghao.autodop.common.dagent.machine.system.os.OS;
+import cn.reghao.autodop.common.utils.text.TextFile;
 
 /**
  * @author reghao
  * @date 2020-10-22 15:47:58
  */
-public class Machine {
+public class Machine implements MachineService {
+    private final static String machineId;
     private OS os;
     private CPU cpu;
     private Memory memory;
     private Disk disk;
     private Network network;
 
+    static {
+        machineId = new TextFile().readFile("/etc/machine-id");
+    }
+
     public Machine() {
         this.os = new OS();
         this.cpu = new CPU();
@@ -24,4 +34,33 @@ public class Machine {
         this.disk = new Disk();
         this.network = new Network();
     }
+
+    public static String machineId() {
+        return machineId;
+    }
+
+    @Override
+    public MachineRegistry registry() {
+        return null;
+    }
+
+    @Override
+    public MachineHeartbeat heartbeat() {
+        return null;
+    }
+
+    @Override
+    public MachineLog log() {
+        return null;
+    }
+
+    @Override
+    public RpcResult shell(String script) {
+        return RpcResult.success("");
+    }
+
+    @Override
+    public RpcResult state() {
+        return RpcResult.success("");
+    }
 }

+ 18 - 0
common/src/main/java/cn/reghao/autodop/common/dagent/machine/MachineService.java

@@ -0,0 +1,18 @@
+package cn.reghao.autodop.common.dagent.machine;
+
+import cn.reghao.autodop.common.amqp.RpcResult;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineHeartbeat;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineLog;
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
+
+/**
+ * @author reghao
+ * @date 2021-02-22 17:25:23
+ */
+public interface MachineService {
+    MachineRegistry registry();
+    MachineHeartbeat heartbeat();
+    MachineLog log();
+    RpcResult shell(String payload);
+    RpcResult state();
+}

+ 4 - 4
common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineLog.java

@@ -1,9 +1,9 @@
 package cn.reghao.autodop.common.dagent.machine.api.data;
 
-import cn.reghao.autodop.common.orm.BaseDocument;
+//import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.springframework.data.mongodb.core.mapping.Document;
+//import org.springframework.data.mongodb.core.mapping.Document;
 
 /**
  * @author reghao
@@ -11,8 +11,8 @@ import org.springframework.data.mongodb.core.mapping.Document;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Document("MachineLog")
-public class MachineLog extends BaseDocument {
+//@Document("MachineLog")
+public class MachineLog {
     private String machineId;
     private long timestamp;
     private String threadName;

+ 10 - 10
common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineRegistry.java

@@ -5,15 +5,15 @@ import cn.reghao.autodop.common.dagent.machine.hardware.disk.DiskInfo;
 import cn.reghao.autodop.common.dagent.machine.hardware.memory.MemoryInfo;
 import cn.reghao.autodop.common.dagent.machine.hardware.network.NetworkInfo;
 import cn.reghao.autodop.common.dagent.machine.system.os.OSInfo;
-import cn.reghao.autodop.common.orm.BaseEntity;
+//import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
-import org.hibernate.annotations.LazyCollection;
+/*import org.hibernate.annotations.LazyCollection;
 import org.hibernate.annotations.LazyCollectionOption;
 
 import javax.persistence.Column;
 import javax.persistence.ElementCollection;
-import javax.persistence.Entity;
+import javax.persistence.Entity;*/
 import java.util.List;
 
 /**
@@ -22,17 +22,17 @@ import java.util.List;
  */
 @Data
 @EqualsAndHashCode(callSuper = false)
-@Entity
-public class MachineRegistry extends BaseEntity {
-    @Column(nullable = false, unique = true)
+//@Entity
+public class MachineRegistry {
+    //@Column(nullable = false, unique = true)
     private String machineId;
     private CPUInfo cpuInfo;
     private MemoryInfo memoryInfo;
-    @ElementCollection(targetClass = DiskInfo.class)
-    @LazyCollection(LazyCollectionOption.FALSE)
+    //@ElementCollection(targetClass = DiskInfo.class)
+    //@LazyCollection(LazyCollectionOption.FALSE)
     private List<DiskInfo> diskInfo;
-    @ElementCollection(targetClass = NetworkInfo.class)
-    @LazyCollection(LazyCollectionOption.FALSE)
+    //@ElementCollection(targetClass = NetworkInfo.class)
+    //@LazyCollection(LazyCollectionOption.FALSE)
     private List<NetworkInfo> networkInfo;
     private OSInfo osInfo;
 }

+ 1 - 4
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/cpu/CPUInfo.java

@@ -1,16 +1,13 @@
 package cn.reghao.autodop.common.dagent.machine.hardware.cpu;
 
 import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.persistence.Embeddable;
 
 /**
  * @author reghao
  * @date 2020-10-20 09:51:52
  */
 @Data
-@Embeddable
+//@Embeddable
 public class CPUInfo {
     private String byteOrder;
     private int cpuCores;

+ 2 - 5
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/disk/DiskInfo.java

@@ -1,11 +1,9 @@
 package cn.reghao.autodop.common.dagent.machine.hardware.disk;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 
-import javax.persistence.Embeddable;
-import javax.persistence.Entity;
+/*import javax.persistence.Embeddable;
+import javax.persistence.Entity;*/
 
 /**
  * df -h 命令输出
@@ -14,7 +12,6 @@ import javax.persistence.Entity;
  * @date 2020-10-20 10:51:59
  */
 @Data
-@Embeddable
 public class DiskInfo {
     private String diskPath;
     private String fsType;

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

@@ -2,8 +2,6 @@ package cn.reghao.autodop.common.dagent.machine.hardware.memory;
 
 import lombok.Data;
 
-import javax.persistence.Embeddable;
-
 /**
  * free -h 命令输出
  *
@@ -11,7 +9,7 @@ import javax.persistence.Embeddable;
  * @date 2020-10-20 10:51:50
  */
 @Data
-@Embeddable
+//@Embeddable
 public class MemoryInfo {
     private String total;
     private String used;

+ 1 - 3
common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/network/NetworkInfo.java

@@ -2,14 +2,12 @@ package cn.reghao.autodop.common.dagent.machine.hardware.network;
 
 import lombok.Data;
 
-import javax.persistence.Embeddable;
-
 /**
  * @author reghao
  * @date 2020-10-20 10:53:12
  */
 @Data
-@Embeddable
+//@Embeddable
 public class NetworkInfo {
     private String iface;
     private String mac;

+ 1 - 3
common/src/main/java/cn/reghao/autodop/common/dagent/machine/system/os/OSInfo.java

@@ -2,14 +2,12 @@ package cn.reghao.autodop.common.dagent.machine.system.os;
 
 import lombok.Data;
 
-import javax.persistence.Embeddable;
-
 /**
  * @author reghao
  * @date 2020-10-20 23:16:42
  */
 @Data
-@Embeddable
+//@Embeddable
 public class OSInfo {
     private String type;
     private String name;

+ 37 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/app/App.java

@@ -0,0 +1,37 @@
+package cn.reghao.autodop.dagent.app;
+
+import cn.reghao.autodop.common.amqp.RpcResult;
+
+/**
+ * @author reghao
+ * @date 2021-02-22 16:20:22
+ */
+public class App {
+    public RpcResult deploy(String payload) {
+        return RpcResult.success("");
+    }
+
+    public RpcResult status(String payload) {
+        return RpcResult.success("");
+    }
+
+    public RpcResult log(String payload) {
+        return RpcResult.success("");
+    }
+
+    public RpcResult start(String payload) {
+        return RpcResult.success("");
+    }
+
+    public RpcResult stop(String payload) {
+        return RpcResult.success("");
+    }
+
+    public RpcResult restart(String payload) {
+        return RpcResult.success("");
+    }
+
+    public RpcResult run(String payload) {
+        return RpcResult.success("");
+    }
+}

+ 20 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/app/AppService.java

@@ -0,0 +1,20 @@
+package cn.reghao.autodop.dagent.app;
+
+import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
+import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-02-22 16:21:28
+ */
+public interface AppService {
+    void deploy(AppDeployArgs appDeployArgs);
+    List<String> log(String appId, String logType, String logLevel, String filePath);
+    AppStatus status(String appId);
+    void start(String appId);
+    void stop(String appId);
+    void restart(String appId);
+    void run(String appId, String commitId);
+}

+ 49 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/app/DockerAppService.java

@@ -0,0 +1,49 @@
+package cn.reghao.autodop.dagent.app;
+
+import cn.reghao.autodop.common.dagent.app.api.data.AppStatus;
+import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-02-22 16:21:37
+ */
+public class DockerAppService implements AppService {
+    @Override
+    public void deploy(AppDeployArgs appDeployArgs) {
+
+    }
+
+    @Override
+    public List<String> log(String appId, String logType, String logLevel, String filePath) {
+        List<String> list = new ArrayList<>();
+        return list;
+    }
+
+    @Override
+    public AppStatus status(String appId) {
+        return null;
+    }
+
+    @Override
+    public void start(String appId) {
+
+    }
+
+    @Override
+    public void stop(String appId)  {
+
+    }
+
+    @Override
+    public void restart(String appId)  {
+
+    }
+
+    @Override
+    public void run(String appId, String commitId) {
+
+    }
+}

+ 0 - 19
dagent/src/main/java/cn/reghao/autodop/dagent/app/pojo/AppStatus.java

@@ -1,19 +0,0 @@
-package cn.reghao.autodop.dagent.app.pojo;
-
-import java.io.Serializable;
-
-/**
- * 应用状态
- *
- * @author reghao
- * @date 2020-09-29 18:04:06
- */
-public class AppStatus implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String appId;
-    private String commitId;
-    private String host;
-    private boolean isRunning;
-    private String startTime;
-}

+ 39 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/AppMessageDispatcher.java

@@ -0,0 +1,39 @@
+package cn.reghao.autodop.dagent.utils.amqp;
+
+import cn.reghao.autodop.common.amqp.RpcResult;
+import cn.reghao.autodop.common.dagent.app.api.AppOps;
+import cn.reghao.autodop.dagent.app.App;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author reghao
+ * @date 2020-12-30 10:26:47
+ */
+@Slf4j
+public class AppMessageDispatcher {
+    public App app;
+    
+    public AppMessageDispatcher(App app) {
+        this.app = app;
+    }
+
+    public void dispatch(String ops, String payload) {
+    }
+    
+    public RpcResult rpcDispatch(String ops, String payload) {
+        switch (AppOps.valueOf(ops)) {
+            case appDeployOps:
+                log.info("部署应用...");
+                return app.deploy(payload);
+            case appLogOps:
+                log.info("返回应用日志...");
+                return app.log(payload);
+            case appStatusOps:
+                log.info("返回应用状态...");
+                return app.status(payload);
+            default:
+                log.error("AppOps 中没有相应类型...");
+                return RpcResult.error("AppOps 中没有相应类型...");
+        }
+    }
+}

+ 36 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/MachineMessageDispatcher.java

@@ -0,0 +1,36 @@
+package cn.reghao.autodop.dagent.utils.amqp;
+
+import cn.reghao.autodop.common.amqp.RpcResult;
+import cn.reghao.autodop.common.dagent.machine.Machine;
+import cn.reghao.autodop.common.dagent.machine.api.MachineOps;
+import lombok.extern.slf4j.Slf4j;
+
+/**
+ * @author reghao
+ * @date 2020-12-30 10:26:47
+ */
+@Slf4j
+public class MachineMessageDispatcher {
+    private Machine machine;
+
+    public MachineMessageDispatcher(Machine machine) {
+        this.machine = machine;
+    }
+
+    public void dispatch(String ops, String payload) {
+    }
+
+    public RpcResult rpcDispatch(String ops, String payload) {
+        switch (MachineOps.valueOf(ops)) {
+            case machineStateOps:
+                log.info("机器状态...");
+                return machine.state();
+            case machineShellOps:
+                log.info("执行脚本...");
+                return machine.shell(payload);
+            default:
+                log.error("MachineOps 中没有相应类型...");
+                return RpcResult.error("MachineOps 中没有相应类型...");
+        }
+    }
+}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/MessageDispatcher.java → dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/MessageDispatcher.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.cluster;
+package cn.reghao.autodop.dagent.utils.amqp;
 
 /**
  * @author reghao

+ 13 - 0
dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/RabbitConfig.java

@@ -0,0 +1,13 @@
+package cn.reghao.autodop.dagent.utils.amqp;
+
+/**
+ * @author reghao
+ * @date 2020-09-04 10:57:56
+ */
+public class RabbitConfig {
+    private String host;
+    private int port;
+    private String vhost;
+    private String username;
+    private String password;
+}

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

@@ -0,0 +1,93 @@
+package cn.reghao.autodop.dagent.utils.amqp;
+
+import cn.reghao.autodop.common.amqp.MQMessage;
+import cn.reghao.autodop.common.amqp.MessageType;
+import cn.reghao.autodop.common.amqp.RpcResult;
+import cn.reghao.autodop.common.dagent.machine.Machine;
+import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
+import com.rabbitmq.client.Channel;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.amqp.core.Message;
+import org.springframework.amqp.core.MessageProperties;
+import org.springframework.amqp.rabbit.core.RabbitTemplate;
+import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
+import org.springframework.stereotype.Component;
+
+import java.lang.management.ManagementFactory;
+
+/**
+ * 消息分发
+ *
+ * @author reghao
+ * @date 2020-09-04 11:00:22
+ */
+@Slf4j
+@Component
+public class RabbitConsumer implements ChannelAwareMessageListener {
+    private RabbitTemplate rabbitTemplate;
+    private MachineMessageDispatcher machineMessageDispatcher;
+    private AppMessageDispatcher appMessageDispatcher;
+
+    public RabbitConsumer(RabbitTemplate rabbitTemplate) {
+        this.rabbitTemplate = rabbitTemplate;
+    }
+
+    @Override
+    public void onMessage(Message msg, Channel channel) {
+        MessageProperties messageProperties = msg.getMessageProperties();
+        long startTime = ManagementFactory.getRuntimeMXBean().getStartTime();
+        String body = new String(msg.getBody());
+        try {
+            MQMessage mqMessage = (MQMessage) JsonConverter.jsonToObject(body, MQMessage.class);
+            String machineId = mqMessage.getMachineId();
+            long sendTime = mqMessage.getSendTime();
+            boolean isRpc = mqMessage.isRpc();
+            String type = mqMessage.getType();
+            String ops = mqMessage.getOps();
+            String payload = mqMessage.getPayload();
+
+            if (!machineId.equals(Machine.machineId()) && sendTime < startTime) {
+                log.info("忽略不是发送到本机或 dagent 启动前发送到 mq 中的所有消息...");
+            }
+
+            switch (MessageType.valueOf(type)) {
+                case machineType:
+                    if (isRpc) {
+                        RpcResult rpcResult = machineMessageDispatcher.rpcDispatch(ops, payload);
+                        rpcReply(messageProperties, rpcResult);
+                    } else {
+                        machineMessageDispatcher.dispatch(ops, payload);
+                    }
+                    break;
+                case appType:
+                    if (isRpc) {
+                        RpcResult rpcResult = appMessageDispatcher.rpcDispatch(ops, payload);
+                        rpcReply(messageProperties, rpcResult);
+                    } else {
+                        appMessageDispatcher.dispatch(ops, payload);
+                    }
+                    break;
+                default:
+            }
+            channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
+        } catch (Exception e) {
+            log.error(e.getMessage());
+        }
+    }
+
+    /**
+     * RPC 调用响应
+     *
+     * @param
+     * @return
+     * @date 2021-02-22 下午5:43
+     */
+    private void rpcReply(MessageProperties messageProperties, RpcResult result) {
+        String replyTo = messageProperties.getReplyTo();
+        String correlationId = messageProperties.getCorrelationId();
+        rabbitTemplate.convertAndSend(replyTo, result, message -> {
+            message.getMessageProperties().setCorrelationId(correlationId);
+            return message;
+        });
+    }
+}

+ 8 - 12
dagent/src/main/java/cn/reghao/autodop/dagent/utils/mq/RabbitConfig.java → dagent/src/main/java/cn/reghao/autodop/dagent/utils/amqp/RabbitConsumerConfig.java

@@ -1,38 +1,34 @@
-package cn.reghao.autodop.dagent.utils.mq;
+package cn.reghao.autodop.dagent.utils.amqp;
 
-import cn.reghao.autodop.common.utils.NetworkUtil;
 import org.springframework.amqp.core.Queue;
 import org.springframework.amqp.rabbit.connection.ConnectionFactory;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
 import org.springframework.amqp.rabbit.listener.SimpleMessageListenerContainer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 
-import java.net.SocketException;
-
 /**
  * @author reghao
  * @date 2020-09-04 10:57:56
  */
 @Configuration
-public class RabbitConfig {
-    private RabbitTemplate rabbitTemplate;
+public class RabbitConsumerConfig {
+    private RabbitConsumer rabbitConsumer;
 
-    public RabbitConfig(RabbitTemplate rabbitTemplate) {
-        this.rabbitTemplate = rabbitTemplate;
+    public RabbitConsumerConfig(RabbitConsumer rabbitConsumer) {
+        this.rabbitConsumer = rabbitConsumer;
     }
 
     @Bean
-    public Queue dagentQueue() throws SocketException {
+    public Queue dagentQueue() {
         String queueName = "dagent";
         return new Queue(queueName, true);
     }
 
     @Bean
-    public SimpleMessageListenerContainer messageListenerContainers(ConnectionFactory connectionFactory) throws SocketException {
+    public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
         SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
         container.setConnectionFactory(connectionFactory);
-        container.setMessageListener(new RemoteCallDispatcher(rabbitTemplate));
+        container.setMessageListener(rabbitConsumer);
         container.addQueues(dagentQueue());
         return container;
     }

+ 0 - 22
dagent/src/main/java/cn/reghao/autodop/dagent/utils/config/DmasterProperties.java

@@ -1,22 +0,0 @@
-package cn.reghao.autodop.dagent.utils.config;
-
-import lombok.Data;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.stereotype.Component;
-
-/**
- * @author reghao
- * @date 2019-08-27 00:17:55
- */
-@Data
-@Component
-@ConfigurationProperties(prefix = "dmaster")
-public class DmasterProperties {
-    @Value("${dmaster.address}")
-    private String address;
-    @Value("${dmaster.port}")
-    private int port;
-    @Value("${dmaster.api}")
-    private String api;
-}

+ 0 - 74
dagent/src/main/java/cn/reghao/autodop/dagent/utils/mq/RemoteCallDispatcher.java

@@ -1,74 +0,0 @@
-package cn.reghao.autodop.dagent.utils.mq;
-
-import cn.reghao.autodop.common.result.RpcResult;
-import com.rabbitmq.client.Channel;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.amqp.core.Message;
-import org.springframework.amqp.core.MessageProperties;
-import org.springframework.amqp.rabbit.core.RabbitTemplate;
-import org.springframework.amqp.rabbit.listener.api.ChannelAwareMessageListener;
-
-/**
- * RPC 调用分发
- *
- * @author reghao
- * @date 2020-09-04 11:00:22
- */
-@Slf4j
-public class RemoteCallDispatcher implements ChannelAwareMessageListener {
-    private RabbitTemplate rabbitTemplate;
-
-    public RemoteCallDispatcher(RabbitTemplate rabbitTemplate) {
-        this.rabbitTemplate = rabbitTemplate;
-    }
-
-    // TODO dagent 启动时如何处理 mq 中积压的消息?
-    @Override
-    public void onMessage(Message msg, Channel channel) {
-        log.info("RPC 调用...");
-        MessageProperties messageProperties = msg.getMessageProperties();
-        sendResult(messageProperties, RpcResult.success());
-
-        /*String body = new String(msg.getBody());
-        JsonObject jsonObject = new JsonParser().parse(body).getAsJsonObject();
-        long sendTime = jsonObject.get("sendTime").getAsLong();
-        long startTime = ManagementFactory.getRuntimeMXBean().getStartTime();
-        // 忽略 dagent 启动前发送到 mq 中的所有消息
-        if (sendTime < startTime) {
-            log.info("忽略 dagent 启动前发送到 mq 中的所有消息...");
-            return;
-        }
-
-        String msgType = jsonObject.get("msgType").getAsString();
-        try {
-            switch (MsgType.valueOf(msgType)) {
-                case deploy:
-                    DeployConfig deployConfig = new Gson().fromJson(jsonObject.get("msg").toString(), DeployConfig.class);
-                    AppDeployService appDeployService = new AppDeployService();
-                    appDeployService.deploy(deployConfig);
-                    break;
-                case log:
-                    break;
-                case status:
-                    break;
-                default:
-                    break;
-            }
-            sendResult(messageProperties, RpcResult.success());
-        } catch (Exception e) {
-            sendResult(messageProperties, RpcResult.fail(e.getMessage()));
-        }*/
-        //channel.basicAck(msg.getMessageProperties().getDeliveryTag(), false);
-    }
-
-    private void sendResult(MessageProperties messageProperties, String result) {
-        String replyTo = messageProperties.getReplyTo();
-        String correlationId = messageProperties.getCorrelationId();
-        log.info("replyTo -> {}", replyTo);
-        log.info("correlationId -> {}", correlationId);
-        rabbitTemplate.convertAndSend(replyTo, result, message -> {
-            message.getMessageProperties().setCorrelationId(correlationId);
-            return message;
-        });
-    }
-}

+ 0 - 4
dagent/src/main/resources/application-dev.yml

@@ -1,7 +1,3 @@
-dmaster:
-  address: 192.168.0.222
-  port: 4000
-  api: /api/node/start
 spring:
   rabbitmq:
 #    host: mq.srv.iquizoo.com

+ 0 - 4
dagent/src/main/resources/application-prod.yml

@@ -1,7 +1,3 @@
-dmaster:
-  address: 192.168.0.50
-  port: 4000
-  api: /api/machine/status
 spring:
   rabbitmq:
     host: mq.srv.iquizoo.com

+ 0 - 4
dagent/src/main/resources/application-test.yml

@@ -1,7 +1,3 @@
-dmaster:
-  address: 192.168.0.50
-  port: 4000
-  api: /api/machine/status
 spring:
   rabbitmq:
     host: mq.srv.iquizoo.com

+ 18 - 3
dmaster/pom.xml

@@ -126,9 +126,24 @@
         </dependency>
 
         <dependency>
-            <groupId>org.quartz-scheduler</groupId>
-            <artifactId>quartz</artifactId>
-            <version>2.3.2</version>
+            <groupId>com.sun.mail</groupId>
+            <artifactId>javax.mail</artifactId>
+            <version>RELEASE</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-jpa</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-data-mongodb</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-websocket</artifactId>
         </dependency>
     </dependencies>
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/BuildDir.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/NotifierConfig.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.config;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.NoArgsConstructor;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/CompilerConfig.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/PackerConfig.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/build/tools/RepoConfig.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.config.build.tools;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/AppOrchestration.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.config.orchestration;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
 import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
 import cn.reghao.autodop.dmaster.app.entity.deploy.DeployConfig;

+ 1 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/config/orchestration/ProjOrchestration.java

@@ -1,9 +1,7 @@
 package cn.reghao.autodop.dmaster.app.entity.config.orchestration;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
-import cn.reghao.autodop.dmaster.app.entity.config.NotifierConfig;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.config.build.BuildConfig;
-import cn.reghao.autodop.dmaster.auth.entity.Role;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildDeployApp.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.config.orchestration.AppOrchestration;
 import lombok.Data;
 import lombok.EqualsAndHashCode;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
-import cn.reghao.autodop.common.orm.BaseDocument;
+import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
 import cn.reghao.autodop.dmaster.app.constant.BuildStage;
 import lombok.Data;
 import lombok.EqualsAndHashCode;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/CommitLog.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
-import cn.reghao.autodop.common.orm.BaseDocument;
+import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.log;
 
-import cn.reghao.autodop.common.orm.BaseDocument;
+import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;

+ 7 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/AppDeployer.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.service.deploy;
 
 import cn.reghao.autodop.common.amqp.MQMessage;
 import cn.reghao.autodop.common.amqp.MessageType;
-import cn.reghao.autodop.common.amqp.RPCResult;
+import cn.reghao.autodop.common.amqp.RpcResult;
 import cn.reghao.autodop.common.dagent.app.api.AppOps;
 import cn.reghao.autodop.common.dagent.app.api.data.deploy.AppDeployArgs;
 import cn.reghao.autodop.common.amqp.RabbitProducer;
@@ -12,7 +12,6 @@ import cn.reghao.autodop.dmaster.app.entity.deploy.DeployConfig;
 import cn.reghao.autodop.dmaster.app.entity.log.BuildLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployLog;
 import cn.reghao.autodop.dmaster.app.entity.log.DeployResult;
-import cn.reghao.autodop.dmaster.cluster.repository.MachineRegistryRepository;
 import cn.reghao.autodop.dmaster.common.exception.ExceptionUtil;
 import cn.reghao.autodop.dmaster.common.thread.ThreadPoolWrapper;
 import org.springframework.stereotype.Component;
@@ -48,7 +47,7 @@ public class AppDeployer {
      * @date 2020-03-13 下午1:00
      */
     public DeployResult deploy(BuildLog buildLog, List<DeployConfig> deployConfigs) {
-        Map<String, Future<RPCResult>> futureMap = new HashMap<>(deployConfigs.size());
+        Map<String, Future<RpcResult>> futureMap = new HashMap<>(deployConfigs.size());
         for (DeployConfig deployConfig : deployConfigs) {
             AppDeployArgs appDeployArgs = new AppDeployArgs();
             appDeployArgs.setAppId(buildLog.getAppId());
@@ -70,8 +69,8 @@ public class AppDeployer {
         LocalDateTime deployTime = LocalDateTime.now();
         deployResult.setDeployTime(deployTime);
         List<DeployLog> deployLogs = new ArrayList<>();
-        for (Map.Entry<String, Future<RPCResult>> entry : futureMap.entrySet()) {
-            Future<RPCResult> future = entry.getValue();
+        for (Map.Entry<String, Future<RpcResult>> entry : futureMap.entrySet()) {
+            Future<RpcResult> future = entry.getValue();
             while (!future.isDone() && !future.isCancelled()) {
                 // 休眠等待异步任务结束
                 try {
@@ -87,7 +86,7 @@ public class AppDeployer {
             deployLog.setCommitId(buildLog.getCommitId());
             deployLog.setMachineId(entry.getKey());
             try {
-                RPCResult rpcResult = future.get();
+                RpcResult rpcResult = future.get();
                 if (rpcResult != null) {
                     deployLog.setDeployTime(deployTime);
                     deployLog.setStatusCode(rpcResult.getStatusCode());
@@ -106,7 +105,7 @@ public class AppDeployer {
         return deployResult;
     }
 
-    class DeployTask implements Callable<RPCResult> {
+    class DeployTask implements Callable<RpcResult> {
         private String machineId;
         private AppDeployArgs appDeployArgs;
 
@@ -116,7 +115,7 @@ public class AppDeployer {
         }
 
         @Override
-        public RPCResult call() {
+        public RpcResult call() {
             MQMessage mqMessage = new MQMessage();
             mqMessage.setMachineId(machineId);
             mqMessage.setSendTime(System.currentTimeMillis());

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/deploy/NotifyTask.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.deploy;
 
-import cn.reghao.autodop.common.notifier.Notify;
+import cn.reghao.autodop.dmaster.utils.notifier.Notify;
 import java.util.concurrent.Callable;
 
 /**

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app3.entity;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 
 import javax.persistence.Column;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3Bak.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app3.entity;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 
 import javax.persistence.Column;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3BakLog.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app3.entity;
 
-import cn.reghao.autodop.common.orm.BaseDocument;
+import cn.reghao.autodop.dmaster.common.orm.BaseDocument;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/Permission.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.entity;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/Role.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.entity;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/UserAuth.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.auth.entity;
 
-import cn.reghao.autodop.common.orm.BaseEntity;
+import cn.reghao.autodop.dmaster.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/MachineMessageDispatcher.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/MachineMessageDispatcher.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.cluster;
+package cn.reghao.autodop.dmaster.cluster.amqp;
 
 import cn.reghao.autodop.common.dagent.machine.api.data.MachineLog;
 import cn.reghao.autodop.common.dagent.machine.api.data.MachineHeartbeat;

+ 9 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/MessageDispatcher.java

@@ -0,0 +1,9 @@
+package cn.reghao.autodop.dmaster.cluster.amqp;
+
+/**
+ * @author reghao
+ * @date 2020-12-30 10:26:47
+ */
+public interface MessageDispatcher {
+    void dispatch(String ops, String payload);
+}

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/RabbitConsumer.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/RabbitConsumer.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.cluster;
+package cn.reghao.autodop.dmaster.cluster.amqp;
 
 import cn.reghao.autodop.common.amqp.MQMessage;
 import cn.reghao.autodop.common.amqp.MessageType;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/RabbitConsumerConfig.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/amqp/RabbitConsumerConfig.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.cluster;
+package cn.reghao.autodop.dmaster.cluster.amqp;
 
 import org.springframework.amqp.core.Queue;
 import org.springframework.amqp.rabbit.connection.ConnectionFactory;

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/crud/MachineCrudService.java

@@ -26,7 +26,7 @@ public class MachineCrudService implements CrudOps<MachineRegistry> {
         // 重复 machineId 则更新
         MachineRegistry machineEntity = machineRepository.findByMachineId(machineRegistry.getMachineId());
         if (machineEntity == null) {
-            machineRegistry.setIsDelete(false);
+            //machineRegistry.setIsDelete(false);
             machineRepository.save(machineRegistry);
         }
     }

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/orm/BaseDocument.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/common/orm/BaseDocument.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.orm;
+package cn.reghao.autodop.dmaster.common.orm;
 
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/orm/BaseEntity.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/common/orm/BaseEntity.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.orm;
+package cn.reghao.autodop.dmaster.common.orm;
 
 import lombok.Data;
 import lombok.NoArgsConstructor;

+ 2 - 2
common/src/main/java/cn/reghao/autodop/common/notifier/DingNotify.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/DingNotify.java

@@ -1,9 +1,9 @@
-package cn.reghao.autodop.common.notifier;
+package cn.reghao.autodop.dmaster.utils.notifier;
 
 import cn.reghao.autodop.common.httpc.DefaultWebRequest;
 import cn.reghao.autodop.common.httpc.WebRequest;
 import cn.reghao.autodop.common.httpc.WebResponse;
-import cn.reghao.autodop.common.notifier.ding.DingText;
+import cn.reghao.autodop.dmaster.utils.notifier.ding.DingText;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 
 /**

+ 3 - 2
common/src/main/java/cn/reghao/autodop/common/notifier/EmailNotify.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/EmailNotify.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.notifier;
+package cn.reghao.autodop.dmaster.utils.notifier;
 
 import javax.mail.Session;
 import javax.mail.Transport;
@@ -76,8 +76,9 @@ public class EmailNotify implements Notify {
         String smtp = "smtp.163.com";
         EmailNotify emailNotify = new EmailNotify(account, password, smtp);
 
-        String dest = "reghaodev@gmail.com";
+        String dest = "506193266@qq.com";
         String content = "据可靠消息,火箭军将于本月 15 日在西北试射一枚 DF-41 导弹,目的地位于美国西部外海。";
+        content = "据可靠消息,火箭军将于本月 15 日在黄海外海试射一枚巨浪 3 型导弹,目的地位于美国西部外海。";
         emailNotify.send(dest, content);
     }
 }

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/notifier/Notify.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/Notify.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.notifier;
+package cn.reghao.autodop.dmaster.utils.notifier;
 
 /**
  * @author reghao

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/notifier/SmsNotify.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/SmsNotify.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.notifier;
+package cn.reghao.autodop.dmaster.utils.notifier;
 
 import cn.reghao.autodop.common.httpc.DefaultWebRequest;
 import cn.reghao.autodop.common.httpc.WebRequest;

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/notifier/ding/DingMsg.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/ding/DingMsg.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.notifier.ding;
+package cn.reghao.autodop.dmaster.utils.notifier.ding;
 
 import lombok.Data;
 

+ 1 - 1
common/src/main/java/cn/reghao/autodop/common/notifier/ding/DingText.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/utils/notifier/ding/DingText.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.common.notifier.ding;
+package cn.reghao.autodop.dmaster.utils.notifier.ding;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;

+ 1 - 1
dmaster/src/test/java/cn/reghao/autodop/common/amqp/RabbitProducerTest.java

@@ -62,7 +62,7 @@ class RabbitProducerTest {
         mqMessage.setOps(MachineOps.machineShellOps.name());
         mqMessage.setPayload(JsonConverter.objectToJson(machineShellArgs));
 
-        RPCResult rpcResult = rabbitProducer.callRemote(queueName, mqMessage);
+        RpcResult rpcResult = rabbitProducer.callRemote(queueName, mqMessage);
         MachineShell machineShell = (MachineShell) JsonConverter.jsonToObject(rpcResult.getResult(), MachineShell.class);
         System.out.println(rpcResult.getResult());
     }