reghao пре 5 година
родитељ
комит
ced0260c05
47 измењених фајлова са 221 додато и 94 уклоњено
  1. 10 0
      common/pom.xml
  2. 1 0
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineHeartbeat.java
  3. 11 1
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineLog.java
  4. 19 1
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineRegistry.java
  5. 4 1
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/cpu/CPUInfo.java
  6. 6 0
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/disk/DiskInfo.java
  7. 3 0
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/memory/MemoryInfo.java
  8. 3 0
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/hardware/network/NetworkInfo.java
  9. 3 0
      common/src/main/java/cn/reghao/autodop/common/dagent/machine/system/os/OSInfo.java
  10. 6 14
      common/src/main/java/cn/reghao/autodop/common/dockerc/Docker.java
  11. 1 1
      common/src/main/java/cn/reghao/autodop/common/orm/BaseDocument.java
  12. 1 1
      common/src/main/java/cn/reghao/autodop/common/orm/BaseEntity.java
  13. 2 2
      dagent/src/main/java/cn/reghao/autodop/dagent/app/deploy/DockerDeploy.java
  14. 3 3
      dagent/src/main/java/cn/reghao/autodop/dagent/app/log/DockerAppLogServiceImpl.java
  15. 5 5
      dagent/src/main/java/cn/reghao/autodop/dagent/app/status/DockerAppStatusServiceImpl.java
  16. 0 10
      dmaster/pom.xml
  17. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/DmasterApplication.java
  18. 1 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/LocalDir.java
  19. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/Notification.java
  20. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppCompile.java
  21. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppPack.java
  22. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/build/AppUpdate.java
  23. 4 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppDeploy.java
  24. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/DeployedApp.java
  25. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/BuildLog.java
  26. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/log/DeployLog.java
  27. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/AppOrchestration.java
  28. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/orchestration/ProjOrchestration.java
  29. 2 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/packer/DockerPack.java
  30. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/updater/CommitLog.java
  31. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3.java
  32. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3Bak.java
  33. 4 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/app3/entity/App3BakLog.java
  34. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/Permission.java
  35. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/Role.java
  36. 1 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/auth/entity/UserAuth.java
  37. 17 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/MachineMessageDispatcher.java
  38. 4 2
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/RabbitConsumer.java
  39. 7 1
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/RabbitConsumerConfig.java
  40. 0 9
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/agent/AgentStatus.java
  41. 13 8
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/controller/MachineController.java
  42. 11 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/repository/MachineLogRepository.java
  43. 19 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/repository/MachineRegistryRepository.java
  44. 30 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/MachineService.java
  45. 0 11
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/NodeService.java
  46. 12 0
      dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/vo/MachineVO.java
  47. 2 2
      dmaster/src/main/resources/application-dev.yml

+ 10 - 0
common/pom.xml

@@ -59,6 +59,16 @@
             <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>
     </dependencies>
 
     <build>

+ 1 - 0
common/src/main/java/cn/reghao/autodop/common/dagent/machine/api/data/MachineHeartbeat.java

@@ -12,6 +12,7 @@ import java.util.List;
  */
 @Data
 public class MachineHeartbeat {
+    private String machineId;
     private MemoryInfo memoryInfo;
     private List<DiskInfo> diskInfo;
 }

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

@@ -1,15 +1,25 @@
 package cn.reghao.autodop.common.dagent.machine.api.data;
 
+import cn.reghao.autodop.common.orm.BaseDocument;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springframework.data.mongodb.core.mapping.Document;
+import org.springframework.data.mongodb.core.mapping.Field;
 
 /**
  * @author reghao
  * @date 2020-10-22 15:45:29
  */
 @Data
-public class MachineLog {
+@EqualsAndHashCode(callSuper = false)
+@Document(collection = "machine_log")
+public class MachineLog extends BaseDocument {
+    @Field("machine_id")
+    private String machineId;
     private long timestamp;
+    @Field("thread_name")
     private String threadName;
+    @Field("logger_name")
     private String loggerName;
     private String level;
     private String msg;

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

@@ -5,19 +5,37 @@ 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 lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hibernate.annotations.LazyCollection;
+import org.hibernate.annotations.LazyCollectionOption;
+import sun.nio.ch.Net;
 
+import javax.persistence.Column;
+import javax.persistence.ElementCollection;
+import javax.persistence.Entity;
+import javax.persistence.FetchType;
 import java.util.List;
+import java.util.Set;
 
 /**
  * @author reghao
  * @date 2020-12-25 17:53:15
  */
 @Data
-public class MachineRegistry {
+@EqualsAndHashCode(callSuper = false)
+@Entity
+public class MachineRegistry extends BaseEntity {
+    @Column(nullable = false, unique = true)
+    private String machineId;
     private CPUInfo cpuInfo;
     private MemoryInfo memoryInfo;
+    @ElementCollection(targetClass = DiskInfo.class)
+    @LazyCollection(LazyCollectionOption.FALSE)
     private List<DiskInfo> diskInfo;
+    @ElementCollection(targetClass = NetworkInfo.class)
+    @LazyCollection(LazyCollectionOption.FALSE)
     private List<NetworkInfo> networkInfo;
     private OSInfo osInfo;
 }

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

@@ -1,14 +1,17 @@
 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
 public class CPUInfo {
-    private String arch;
     private String byteOrder;
     private int cpuCores;
     private int cpus;

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

@@ -1,6 +1,11 @@
 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;
 
 /**
  * df -h 命令输出
@@ -9,6 +14,7 @@ import lombok.Data;
  * @date 2020-10-20 10:51:59
  */
 @Data
+@Embeddable
 public class DiskInfo {
     private String diskPath;
     private String fsType;

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

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

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

@@ -2,11 +2,14 @@ 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
 public class NetworkInfo {
     private String iface;
     private String mac;

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

@@ -2,11 +2,14 @@ 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
 public class OSInfo {
     private String type;
     private String name;

+ 6 - 14
common/src/main/java/cn/reghao/autodop/common/dockerc/DockerClient.java → common/src/main/java/cn/reghao/autodop/common/dockerc/Docker.java

@@ -36,11 +36,11 @@ import java.util.stream.Collectors;
  * @author reghao
  * @date 2020-01-13 14:16:38
  */
-public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
-    private static final Logger log = LoggerFactory.getLogger(DockerClient.class);
+public class Docker implements ImageOps, ContainerOps, AutoCloseable {
+    private static final Logger log = LoggerFactory.getLogger(Docker.class);
     private HttpClient client;
 
-    public DockerClient() {
+    public Docker() {
         client = new HttpClient(new UnixSocketClient());
     }
 
@@ -53,7 +53,7 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
         if (response != null) {
             int statusCode = response.status().code();
             String result = response.content().toString(StandardCharsets.UTF_8);
-            if (statusCode >= 300) {
+            if (statusCode >= 400) {
                 throw new DockerException(result);
             }
 
@@ -359,16 +359,8 @@ public class DockerClient implements ImageOps, ContainerOps, AutoCloseable {
 
     public static void main(String[] args) throws Exception {
         String appEntryDir = "/home/reghao/opt/data/autodop/compile-dir/dnkt-mgr/IQuizoo.BMS";
-        try (DockerClient docker = new DockerClient()) {
-            List<Container> containers = docker.ps(true);
-
-            String image = "hahahaha1";
-            // Dockerfile 默认在 appEntryDir 中
-            // TODO Dockerfile 错误导致不能成功构建时,不会抛出异常
-            //docker.build(image, appEntryDir);
-            // TODO 有时不能成功 push,特别是 push 到远程主机上时
-            //docker.push(image);
-            // TODO try-with-resource 中不需要显式调用 close
+        try (Docker docker = new Docker()) {
+            docker.push("docker.alpha.iquizoo.com/iq3x/dnkt:e1757c4d");
         }
     }
 }

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

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

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

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

+ 2 - 2
dagent/src/main/java/cn/reghao/autodop/dagent/app/deploy/DockerDeploy.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dagent.app.deploy;
 
-import cn.reghao.autodop.common.dockerc.DockerClient;
+import cn.reghao.autodop.common.dockerc.Docker;
 import cn.reghao.autodop.common.dockerc.exception.DockerException;
 
 /**
@@ -10,7 +10,7 @@ import cn.reghao.autodop.common.dockerc.exception.DockerException;
 public class DockerDeploy implements Deploy {
     @Override
     public void deploy(String appId, String appPath, String runningDir) throws DockerException {
-        try(DockerClient docker = new DockerClient()) {
+        try(Docker docker = new Docker()) {
             docker.pull(appPath);
             docker.run(appId, appPath);
         }

+ 3 - 3
dagent/src/main/java/cn/reghao/autodop/dagent/app/log/DockerAppLogServiceImpl.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dagent.app.log;
 
 import cn.reghao.autodop.common.dagent.app.api.data.log.LogLevel;
 import cn.reghao.autodop.common.dagent.app.api.data.log.LogType;
-import cn.reghao.autodop.common.dockerc.DockerClient;
+import cn.reghao.autodop.common.dockerc.Docker;
 import cn.reghao.autodop.common.utils.text.TextFile;
 
 import java.util.ArrayList;
@@ -15,7 +15,7 @@ import java.util.List;
 public class DockerAppLogServiceImpl implements AppLogService {
     @Override
     public List<String> logFiles(String appId, String logType, String logLevel, String logPath) throws Exception {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String containerId = docker.getIdByName(appId);
             LogType type = LogType.valueOf(logType);
             switch (type) {
@@ -37,7 +37,7 @@ public class DockerAppLogServiceImpl implements AppLogService {
 
     @Override
     public List<String> logContent(String appId, String logType, String logLevel, String logfilePath) throws Exception {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String containerId = docker.getIdByName(appId);
             LogType type = LogType.valueOf(logType);
             switch (type) {

+ 5 - 5
dagent/src/main/java/cn/reghao/autodop/dagent/app/status/DockerAppStatusServiceImpl.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dagent.app.status;
 
 import cn.reghao.autodop.common.deploy.AppStatus;
-import cn.reghao.autodop.common.dockerc.DockerClient;
+import cn.reghao.autodop.common.dockerc.Docker;
 import cn.reghao.autodop.common.dockerc.exception.DockerException;
 import cn.reghao.autodop.common.dockerc.pojo.ContainerInspect;
 import cn.reghao.autodop.common.dockerc.pojo.State;
@@ -21,7 +21,7 @@ public class DockerAppStatusServiceImpl implements AppStatusService {
 
     @Override
     public void start(String appId) throws DockerException {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String containerId = docker.getIdByName(appId);
             docker.start(containerId);
         }
@@ -29,7 +29,7 @@ public class DockerAppStatusServiceImpl implements AppStatusService {
 
     @Override
     public void stop(String appId) throws DockerException {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String containerId = docker.getIdByName(appId);
             docker.stop(containerId);
         }
@@ -37,7 +37,7 @@ public class DockerAppStatusServiceImpl implements AppStatusService {
 
     @Override
     public void restart(String appId) throws DockerException {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String containerId = docker.getIdByName(appId);
             docker.restart(containerId);
         }
@@ -45,7 +45,7 @@ public class DockerAppStatusServiceImpl implements AppStatusService {
 
     @Override
     public AppStatus status(String appId) throws DockerException {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String containerId = docker.getIdByName(appId);
             ContainerInspect container = docker.inspectContainer(containerId);
             State state = container.getState();

+ 0 - 10
dmaster/pom.xml

@@ -44,16 +44,6 @@
             <artifactId>spring-boot-starter-cache</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-data-jpa</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>com.github.ben-manes.caffeine</groupId>
             <artifactId>caffeine</artifactId>

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/DmasterApplication.java

@@ -13,8 +13,8 @@ import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
 //@EnableScheduling
 @SpringBootApplication
 @EnableJpaRepositories
-@EntityScan
-@ComponentScan({"cn.reghao.autodop.dmaster", "cn.reghao.autodop.common.amqp"})
+@EntityScan({"cn.reghao.autodop.dmaster", "cn.reghao.autodop.common.dagent.machine.api.data"})
+@ComponentScan({"cn.reghao.autodop.dmaster", "cn.reghao.autodop.common"})
 public class DmasterApplication {
 	public static void main(String[] args) {
 		SpringApplication.run(DmasterApplication.class, args);

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

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

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

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.app.entity;
 
+import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
-import lombok.EqualsAndHashCode;
 
 import javax.persistence.Column;
 import javax.persistence.Entity;

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

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

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

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

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

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

+ 4 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/entity/deploy/AppDeploy.java

@@ -1,5 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.deploy;
 
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
 import lombok.Data;
 
 import javax.persistence.*;
@@ -14,6 +15,9 @@ import java.util.Set;
 public class AppDeploy {
     @ElementCollection(fetch = FetchType.EAGER)
     private Set<String> hosts;
+    /*@ManyToOne(cascade = CascadeType.DETACH)
+    @JoinColumn(name = "machine_registry_id", foreignKey = @ForeignKey(value = ConstraintMode.NO_CONSTRAINT))
+    private MachineRegistry machineRegistry;*/
     // 绝对路径
     private String runningDir;
 }

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

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.deploy;
 
-import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.build.AppCompile;
 import cn.reghao.autodop.dmaster.app.entity.build.AppPack;
 import cn.reghao.autodop.dmaster.app.service.build.tools.updater.CommitLog;

+ 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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

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

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.entity.orchestration;
 
-import cn.reghao.autodop.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseEntity;
 import cn.reghao.autodop.dmaster.app.entity.Notification;
 import cn.reghao.autodop.dmaster.app.entity.build.AppBuild;
 import cn.reghao.autodop.dmaster.app.entity.deploy.AppDeploy;

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

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

+ 2 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/packer/DockerPack.java

@@ -1,6 +1,6 @@
 package cn.reghao.autodop.dmaster.app.service.build.tools.packer;
 
-import cn.reghao.autodop.common.dockerc.DockerClient;
+import cn.reghao.autodop.common.dockerc.Docker;
 
 /**
  * 打包为 docker 应用
@@ -17,7 +17,7 @@ public class DockerPack implements CodePacker {
 
     @Override
     public String pack(String appId, String version, String appEntryDir) throws Exception {
-        try (DockerClient docker = new DockerClient()) {
+        try (Docker docker = new Docker()) {
             String repo = appRootPath + "/" + appId;
             String image = repo + ":" + version;
 

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/build/tools/updater/CommitLog.java

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

+ 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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
 
 import javax.persistence.Column;

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

@@ -1,7 +1,8 @@
 package cn.reghao.autodop.dmaster.app3.entity;
 
+import cn.reghao.autodop.common.orm.BaseDocument;
 import lombok.Data;
-import org.springframework.data.annotation.Id;
+import lombok.EqualsAndHashCode;
 import org.springframework.data.mongodb.core.mapping.Document;
 import org.springframework.data.mongodb.core.mapping.Field;
 
@@ -11,8 +12,9 @@ import org.springframework.data.mongodb.core.mapping.Field;
  * @author reghao
  * @date 2020-11-10 17:15:59
  */
-@Document(collection = "app3_bak_log")
 @Data
+@EqualsAndHashCode(callSuper = false)
+@Document(collection = "app3_bak_log")
 public class App3BakLog extends BaseDocument {
     @Field("app3name")
     private String app3name;

+ 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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.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.dmaster.app.entity.BaseEntity;
+import cn.reghao.autodop.common.orm.BaseEntity;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;

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

@@ -1,33 +1,49 @@
 package cn.reghao.autodop.dmaster.cluster;
 
-import cn.reghao.autodop.common.dagent.machine.MachineInfo;
 import cn.reghao.autodop.common.dagent.machine.api.data.MachineLog;
 import cn.reghao.autodop.common.dagent.machine.api.data.MachineHeartbeat;
 import cn.reghao.autodop.common.dagent.machine.api.MachineOps;
 import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
 import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
+import cn.reghao.autodop.dmaster.cluster.repository.MachineLogRepository;
+import cn.reghao.autodop.dmaster.cluster.repository.MachineRegistryRepository;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
 
 /**
  * @author reghao
  * @date 2020-12-30 10:26:47
  */
 @Slf4j
+@Component
 public class MachineMessageDispatcher implements MessageDispatcher {
+    private MachineRegistryRepository machineRegistryRepository;
+    private MachineLogRepository machineLogRepository;
+
+    public MachineMessageDispatcher(MachineRegistryRepository machineRegistryRepository,
+                                    MachineLogRepository machineLogRepository) {
+        this.machineRegistryRepository = machineRegistryRepository;
+        this.machineLogRepository = machineLogRepository;
+    }
+
     @Override
     public void dispatch(String ops, String payload) {
         switch (MachineOps.valueOf(ops)) {
             case machineRegistryOps:
                 log.info("机器注册消息...");
                 MachineRegistry machineRegistry = (MachineRegistry) JsonConverter.jsonToObject(payload, MachineRegistry.class);
+                // 重复 machineId 则更新
+                machineRegistryRepository.save(machineRegistry);
                 break;
             case machineHeartbeatOps:
                 log.info("机器心跳消息...");
+                // TODO 做一些逻辑处理,判断内存和磁盘的使用量,然后存入数据库,更新数据
                 MachineHeartbeat machineHeartbeat = (MachineHeartbeat) JsonConverter.jsonToObject(payload, MachineHeartbeat.class);
                 break;
             case machineLogOps:
                 log.info("dagent 日志消息...");
                 MachineLog machineLog = (MachineLog) JsonConverter.jsonToObject(payload, MachineLog.class);
+                machineLogRepository.save(machineLog);
                 break;
             default:
                 log.info("来自机器的消息...");

+ 4 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/RabbitConsumer.java

@@ -6,6 +6,7 @@ import cn.reghao.autodop.common.utils.data.serializer.JsonConverter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.amqp.core.Message;
 import org.springframework.amqp.core.MessageListener;
+import org.springframework.stereotype.Component;
 
 /**
  * 消息分发
@@ -14,11 +15,12 @@ import org.springframework.amqp.core.MessageListener;
  * @date 2020-09-04 11:00:22
  */
 @Slf4j
+@Component
 public class RabbitConsumer implements MessageListener {
     private MessageDispatcher machineMessageDispatcher;
 
-    public RabbitConsumer() {
-        this.machineMessageDispatcher = new MachineMessageDispatcher();
+    public RabbitConsumer(MessageDispatcher machineMessageDispatcher) {
+        this.machineMessageDispatcher = machineMessageDispatcher;
     }
 
     @Override

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

@@ -12,6 +12,12 @@ import org.springframework.context.annotation.Configuration;
  */
 @Configuration
 public class RabbitConsumerConfig {
+    private RabbitConsumer rabbitConsumer;
+
+    public RabbitConsumerConfig(RabbitConsumer rabbitConsumer) {
+        this.rabbitConsumer = rabbitConsumer;
+    }
+
     @Bean
     public Queue dmasterQueue() {
         String queueName = "dmaster";
@@ -22,7 +28,7 @@ public class RabbitConsumerConfig {
     public SimpleMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) {
         SimpleMessageListenerContainer container = new SimpleMessageListenerContainer();
         container.setConnectionFactory(connectionFactory);
-        container.setMessageListener(new RabbitConsumer());
+        container.setMessageListener(rabbitConsumer);
         container.addQueues(dmasterQueue());
         return container;
     }

+ 0 - 9
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/agent/AgentStatus.java

@@ -1,9 +0,0 @@
-package cn.reghao.autodop.dmaster.cluster.agent;
-
-/**
- * @author reghao
- * @date 2020-10-19 15:02:59
- */
-public class AgentStatus {
-    private String agentId;
-}

+ 13 - 8
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/controller/NodeController.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/controller/MachineController.java

@@ -1,6 +1,7 @@
 package cn.reghao.autodop.dmaster.cluster.controller;
 
 import cn.reghao.autodop.common.result.WebResult;
+import cn.reghao.autodop.dmaster.cluster.service.MachineService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.web.bind.annotation.*;
@@ -9,19 +10,23 @@ import org.springframework.web.bind.annotation.*;
  * @author reghao
  * @date 2019-11-15 08:44:50
  */
-@Api(tags = "主机节点接口")
+@Api(tags = "主机接口")
 @RestController
-@RequestMapping("/api/host")
-public class NodeController {
-    @ApiOperation(value = "")
-    @PostMapping("/agent/public_ip")
-    public String add(@RequestBody String json) {
+@RequestMapping("/api/machine")
+public class MachineController {
+    private MachineService machineService;
+
+    public MachineController(MachineService machineService) {
+        this.machineService = machineService;
+    }
+
+    @GetMapping("/logs")
+    public String logs() {
         return WebResult.success("ok");
     }
 
-    @ApiOperation(value = "")
     @GetMapping("/list")
-    public String nodeList() {
+    public String machineList() {
         return WebResult.success("ok");
     }
 }

+ 11 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/repository/MachineLogRepository.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.dmaster.cluster.repository;
+
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineLog;
+import org.springframework.data.mongodb.repository.MongoRepository;
+
+/**
+ * @author reghao
+ * @date 2020-01-21 14:53:03
+ */
+public interface MachineLogRepository extends MongoRepository<MachineLog, Long> {
+}

+ 19 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/repository/MachineRegistryRepository.java

@@ -0,0 +1,19 @@
+package cn.reghao.autodop.dmaster.cluster.repository;
+
+import cn.reghao.autodop.common.dagent.machine.api.data.MachineRegistry;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Modifying;
+
+import javax.transaction.Transactional;
+
+/**
+ * @author reghao
+ * @date 2020-01-21 14:53:03
+ */
+public interface MachineRegistryRepository extends JpaRepository<MachineRegistry, Long> {
+    MachineRegistry findByIsDeleteFalseAndMachineId(String machineId);
+
+    @Modifying
+    @Transactional
+    void deleteByMachineId(String machineId);
+}

+ 30 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/MachineService.java

@@ -0,0 +1,30 @@
+package cn.reghao.autodop.dmaster.cluster.service;
+
+import cn.reghao.autodop.dmaster.cluster.repository.MachineLogRepository;
+import cn.reghao.autodop.dmaster.cluster.repository.MachineRegistryRepository;
+import cn.reghao.autodop.dmaster.cluster.vo.MachineVO;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2019-11-15 08:48:04
+ */
+@Service
+public class MachineService {
+    private MachineRegistryRepository machineRegistryRepository;
+    private MachineLogRepository machineLogRepository;
+
+    public MachineService(MachineRegistryRepository machineRegistryRepository,
+                          MachineLogRepository machineLogRepository) {
+        this.machineRegistryRepository = machineRegistryRepository;
+        this.machineLogRepository = machineLogRepository;
+    }
+
+    List<MachineVO> machineList() {
+        List<MachineVO> vos = new ArrayList<>();
+        return vos;
+    }
+}

+ 0 - 11
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/service/NodeService.java

@@ -1,11 +0,0 @@
-package cn.reghao.autodop.dmaster.cluster.service;
-
-import org.springframework.stereotype.Service;
-
-/**
- * @author reghao
- * @date 2019-11-15 08:48:04
- */
-@Service
-public class NodeService {
-}

+ 12 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/cluster/vo/MachineVO.java

@@ -0,0 +1,12 @@
+package cn.reghao.autodop.dmaster.cluster.vo;
+
+import lombok.Data;
+
+/**
+ * @author reghao
+ * @date 2020-10-19 15:02:59
+ */
+@Data
+public class MachineVO {
+    private String machineId;
+}

+ 2 - 2
dmaster/src/main/resources/application-dev.yml

@@ -1,11 +1,11 @@
 spring:
   datasource:
-    url: jdbc:mysql://localhost/reghao_autodop_rdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
+    url: jdbc:mysql://localhost/reghao_autodop_rdb1?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
     username: dev
     password: Dev@12345678
   data:
     mongodb:
-      uri: mongodb://localhost/log
+      uri: mongodb://localhost/reghao_autodop_rdb
   rabbitmq:
 #    host: mq.srv.iquizoo.com
 #    port: 5672