reghao 5 年 前
コミット
6ce8f2160a

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

@@ -15,6 +15,7 @@ import javax.persistence.Entity;
 @EqualsAndHashCode(callSuper = false)
 @Entity
 public class LocalDir extends BaseEntity {
+    // 主机唯一标识
     private String hostId;
     // 本地仓库
     private String localRepo;

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

@@ -19,14 +19,6 @@ public class Notification extends BaseEntity {
     private String url;
     private String payload;
 
-    public Notification vo() {
-        this.setId(null);
-        this.setIsDelete(null);
-        this.setCreateTime(null);
-        this.setUpdateTime(null);
-        return this;
-    }
-
     @Override
     public boolean equals(Object obj) {
         if (obj == this) {
@@ -51,4 +43,12 @@ public class Notification extends BaseEntity {
         result = result * 31 + url.hashCode();
         return result;
     }
+
+    public Notification vo() {
+        this.setId(null);
+        this.setIsDelete(null);
+        this.setCreateTime(null);
+        this.setUpdateTime(null);
+        return this;
+    }
 }

+ 20 - 15
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/crud/global/LocalDirCrudService.java

@@ -4,6 +4,7 @@ import cn.reghao.autodop.common.utils.data.db.CrudOps;
 import cn.reghao.autodop.common.utils.data.db.PageList;
 import cn.reghao.autodop.dmaster.app.entity.LocalDir;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.LocalDirRepository;
+import cn.reghao.autodop.dmaster.common.config.SysConfig;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Sort;
@@ -28,22 +29,13 @@ public class LocalDirCrudService implements CrudOps<LocalDir> {
     @Override
     public void addOrModify(LocalDir localDir) throws Exception {
         // 检查并创建目录
-        File localRepo = new File(localDir.getLocalRepo());
-        if (!localRepo.exists() && !localRepo.mkdirs()) {
-            throw new Exception(localDir.getLocalRepo() + "不存在且创建失败...");
-        }
-
-        File compileDir = new File(localDir.getCompileDir());
-        if (!compileDir.exists() && !compileDir.mkdirs()) {
-            throw new Exception(localDir.getCompileDir() + "不存在且创建失败...");
-        }
-
-        File packDir = new File(localDir.getPackDir());
-        if (!packDir.exists() && !packDir.mkdirs()) {
-            throw new Exception(localDir.getPackDir() + "不存在且创建失败...");
-        }
+        checkOrMkdir(localDir.getLocalRepo());
+        checkOrMkdir(localDir.getCompileDir());
+        checkOrMkdir(localDir.getPackDir());
 
-        LocalDir localDirEntity = localDirRepository.findByHostId(localDir.getHostId());
+        // 只做修改,不新增
+        String hostId = localDir.getHostId();
+        LocalDir localDirEntity = localDirRepository.findByHostId(hostId);
         if (localDirEntity != null) {
             localDir.setId(localDirEntity.getId());
             localDir.setCreateTime(localDirEntity.getCreateTime());
@@ -51,6 +43,19 @@ public class LocalDirCrudService implements CrudOps<LocalDir> {
             localDir.setIsDelete(localDirEntity.getIsDelete());
 
             localDirRepository.save(localDir);
+
+            SysConfig.localRepo = localDir.getLocalRepo();
+            SysConfig.compileDir = localDir.getCompileDir();
+            SysConfig.packDir = localDir.getPackDir();
+        } else {
+            throw new Exception(hostId + " 不存在...");
+        }
+    }
+
+    private void checkOrMkdir(String dirPath) throws Exception {
+        File dir = new File(dirPath);
+        if (!dir.exists() && !dir.mkdirs()) {
+            throw new Exception(dirPath + " 不存在且创建失败...");
         }
     }
 

+ 14 - 20
dmaster/src/main/java/cn/reghao/autodop/dmaster/common/utils/AfterAppStart.java

@@ -1,7 +1,7 @@
 package cn.reghao.autodop.dmaster.common.utils;
 
 import cn.reghao.autodop.common.utils.FileOps;
-import cn.reghao.autodop.common.utils.NetworkUtil;
+import cn.reghao.autodop.common.utils.text.TextFile;
 import cn.reghao.autodop.dmaster.app.entity.LocalDir;
 import cn.reghao.autodop.dmaster.app.repository.build.AppCompileRepository;
 import cn.reghao.autodop.dmaster.app.repository.orchestration.LocalDirRepository;
@@ -40,26 +40,20 @@ public class AfterAppStart implements ApplicationRunner {
 
     @Override
     public void run(ApplicationArguments args) {
-        try {
-            String hostId = NetworkUtil.hostAddr().get(0).getIpv4();
-            LocalDir localDir = localDirRepository.findByHostId(hostId);
-            if (localDir == null) {
-                String home = System.getProperty("user.home");
-                localDir = new LocalDir();
-                localDir.setHostId(hostId);
-                localDir.setLocalRepo(home + "/opt/data/autodop/local-repo");
-                localDir.setCompileDir(home + "/opt/data/autodop/compile-dir");
-                localDir.setPackDir(home + "/opt/data/autodop/pack-dir");
-                localDir.setIsDelete(false);
-                localDirRepository.save(localDir);
-            }
-            initialize(localDir);
-            log.info("autodop-master 初始化完成...");
-        } catch (SocketException e) {
-            e.printStackTrace();
-            // TODO 结束 autodop-master 进程
-            log.error("autodop-master 启动失败...");
+        String hostId = new TextFile().read("/etc/machine-id").get(0);
+        LocalDir localDir = localDirRepository.findByHostId(hostId);
+        if (localDir == null) {
+            String home = System.getProperty("user.home");
+            localDir = new LocalDir();
+            localDir.setHostId(hostId);
+            localDir.setLocalRepo(home + "/opt/data/autodop/local-repo");
+            localDir.setCompileDir(home + "/opt/data/autodop/compile-dir");
+            localDir.setPackDir(home + "/opt/data/autodop/pack-dir");
+            localDir.setIsDelete(false);
+            localDirRepository.save(localDir);
         }
+        initialize(localDir);
+        log.info("autodop-master 初始化完成...");
     }
 
     public void initialize(LocalDir localDir) {