Преглед на файлове

dmaster 处理应用部署返回的值

reghao преди 4 години
родител
ревизия
7eb8f1a011

+ 11 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/log/BuildLogCrud.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.dmaster.app.db.crud.log;
+
+import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
+import cn.reghao.jdkutil.db.BaseCrud;
+
+/**
+ * @author reghao
+ * @date 2021-10-22 18:03:07
+ */
+public interface BuildLogCrud extends BaseCrud<BuildLog> {
+}

+ 41 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/log/BuildLogCrudImpl.java

@@ -0,0 +1,41 @@
+package cn.reghao.autodop.dmaster.app.db.crud.log;
+
+import cn.reghao.autodop.dmaster.app.db.repository.log.BuildLogRepository;
+import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-10-22 18:03:07
+ */
+@Service
+public class BuildLogCrudImpl implements BuildLogCrud {
+    private final BuildLogRepository buildLogRepository;
+    
+    public BuildLogCrudImpl(BuildLogRepository buildLogRepository) {
+        this.buildLogRepository = buildLogRepository;
+    }
+    
+    @Override
+    public BuildLog save(BuildLog buildLog) {
+        buildLogRepository.save(buildLog);
+        return buildLog;
+    }
+
+    @Override
+    public void saveAll(List<BuildLog> list) {
+        buildLogRepository.saveAll(list);
+    }
+
+    @Override
+    public void update(BuildLog buildLog) {
+        buildLogRepository.save(buildLog);
+    }
+
+    @Override
+    public void delete(BuildLog buildLog) {
+        buildLogRepository.delete(buildLog);
+    }
+}

+ 11 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/log/DeployLogCrud.java

@@ -0,0 +1,11 @@
+package cn.reghao.autodop.dmaster.app.db.crud.log;
+
+import cn.reghao.autodop.dmaster.app.model.po.log.DeployLog;
+import cn.reghao.jdkutil.db.BaseCrud;
+
+/**
+ * @author reghao
+ * @date 2021-10-22 18:03:07
+ */
+public interface DeployLogCrud extends BaseCrud<DeployLog> {
+}

+ 41 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/log/DeployLogCrudImpl.java

@@ -0,0 +1,41 @@
+package cn.reghao.autodop.dmaster.app.db.crud.log;
+
+import cn.reghao.autodop.dmaster.app.db.repository.log.DeployLogRepository;
+import cn.reghao.autodop.dmaster.app.model.po.log.DeployLog;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2021-10-22 18:03:07
+ */
+@Service
+public class DeployLogCrudImpl implements DeployLogCrud {
+    private final DeployLogRepository deployLogRepository;
+
+    public DeployLogCrudImpl(DeployLogRepository deployLogRepository) {
+        this.deployLogRepository = deployLogRepository;
+    }
+
+    @Override
+    public DeployLog save(DeployLog deployLog) {
+        deployLogRepository.save(deployLog);
+        return deployLog;
+    }
+
+    @Override
+    public void saveAll(List<DeployLog> list) {
+        deployLogRepository.saveAll(list);
+    }
+
+    @Override
+    public void update(DeployLog deployLog) {
+        deployLogRepository.save(deployLog);
+    }
+
+    @Override
+    public void delete(DeployLog deployLog) {
+        deployLogRepository.delete(deployLog);
+    }
+}

+ 1 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/AppDeployingService.java

@@ -2,7 +2,6 @@ package cn.reghao.autodop.dmaster.app.service.config;
 
 import cn.reghao.autodop.common.msg.rpc.dto.app.DeployResult;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
-import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
 
 /**
  * @author reghao
@@ -10,6 +9,6 @@ import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
  */
 public interface AppDeployingService {
     void add(AppDeployConfig appDeployConfig);
-    void refresh(String appId, String machineId, BuildLog buildLog, DeployResult deployResult);
+    void refresh(String appId, DeployResult deployResult);
     void delete(AppDeployConfig appDeployConfig);
 }

+ 1 - 1
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/AppRunningService.java

@@ -9,6 +9,6 @@ import cn.reghao.autodop.dmaster.app.model.po.AppDeploying;
  */
 public interface AppRunningService {
     void add(AppDeploying appDeploying);
-    void refresh(String appId, String machineId, StatusResult appStatus);
+    void refresh(StatusResult statusResult);
     void delete(AppDeploying appDeploying);
 }

+ 8 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/AppDeployingServiceImpl.java

@@ -3,6 +3,7 @@ package cn.reghao.autodop.dmaster.app.service.config.impl;
 import cn.reghao.autodop.common.msg.rpc.dto.app.DeployResult;
 import cn.reghao.autodop.dmaster.app.db.crud.AppDeployingCrud;
 import cn.reghao.autodop.dmaster.app.db.query.AppDeployingQuery;
+import cn.reghao.autodop.dmaster.app.db.query.log.BuildLogQuery;
 import cn.reghao.autodop.dmaster.app.model.po.AppDeploying;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppDeployConfig;
 import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
@@ -19,12 +20,14 @@ public class AppDeployingServiceImpl implements AppDeployingService {
     private final AppDeployingQuery deployingQuery;
     private final AppDeployingCrud deployingCrud;
     private final AppRunningService runningService;
+    private final BuildLogQuery buildLogQuery;
 
     public AppDeployingServiceImpl(AppDeployingQuery deployingQuery, AppDeployingCrud deployingCrud,
-                                   AppRunningService runningService) {
+                                   AppRunningService runningService, BuildLogQuery buildLogQuery) {
         this.deployingQuery = deployingQuery;
         this.deployingCrud = deployingCrud;
         this.runningService = runningService;
+        this.buildLogQuery = buildLogQuery;
     }
 
     @Override
@@ -35,7 +38,10 @@ public class AppDeployingServiceImpl implements AppDeployingService {
     }
 
     @Override
-    public void refresh(String appId, String machineId, BuildLog buildLog, DeployResult deployResult) {
+    public void refresh(String appId, DeployResult deployResult) {
+        String machineId = deployResult.getMachineId();
+        String buildLogId = deployResult.getBuildLogId();
+        BuildLog buildLog = buildLogQuery.findById(buildLogId);
         AppDeploying appDeploying = deployingQuery.findByAppIdAndMachineId(appId, machineId);
         if (appDeploying != null) {
             appDeploying.update(buildLog, deployResult);

+ 4 - 2
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/AppRunningServiceImpl.java

@@ -29,10 +29,12 @@ public class AppRunningServiceImpl implements AppRunningService {
     }
 
     @Override
-    public void refresh(String appId, String machineId, StatusResult appStatus) {
+    public void refresh(StatusResult statusResult) {
+        String appId = statusResult.getAppId();
+        String machineId = statusResult.getMachineId();
         AppRunning appRunning = runningQuery.findByAppIdAndMachineId(appId, machineId);
         if (appRunning != null) {
-            appRunning.update(appStatus);
+            appRunning.update(statusResult);
             runningCrud.update(appRunning);
         }
     }

+ 2 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/mqttsub/MqttSubListener.java

@@ -78,6 +78,7 @@ public class MqttSubListener implements MqttCallback {
     private void dispatchRpcResult(String msgId, RpcMsg rpcMsg) {
         RpcMsg rpcMsg1 = defaultMqttClient.getRecord(msgId);
         if (rpcMsg1 == null) {
+            log.error("RPC 调用结果 {} 找不到 RPC 调用参数", rpcMsg);
             return;
         }
 
@@ -89,6 +90,7 @@ public class MqttSubListener implements MqttCallback {
             default:
                 ;
         }
+        defaultMqttClient.removeRecord(msgId);
     }
 
     @Override

+ 27 - 95
dmaster/src/main/java/cn/reghao/autodop/dmaster/mqttsub/impl/rpcresult/AppRpcClazzResultImpl.java

@@ -1,117 +1,49 @@
 package cn.reghao.autodop.dmaster.mqttsub.impl.rpcresult;
 
-import cn.reghao.autodop.common.http.DefaultWebRequest;
-import cn.reghao.autodop.common.http.WebRequest;
 import cn.reghao.autodop.common.msg.rpc.dto.app.StatusResult;
 import cn.reghao.autodop.common.msg.rpc.dto.app.DeployResult;
-import cn.reghao.autodop.dmaster.app.db.crud.AppDeployingCrud;
-import cn.reghao.autodop.dmaster.app.db.crud.AppRunningCrud;
-import cn.reghao.autodop.dmaster.app.db.query.AppDeployingQuery;
-import cn.reghao.autodop.dmaster.app.db.query.AppRunningQuery;
-import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
-import cn.reghao.autodop.dmaster.app.db.repository.log.BuildLogRepository;
-import cn.reghao.autodop.dmaster.app.db.repository.log.DeployLogRepository;
-import cn.reghao.autodop.dmaster.app.model.po.AppDeploying;
-import cn.reghao.autodop.dmaster.app.model.po.AppRunning;
-import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
-import cn.reghao.autodop.dmaster.app.model.po.log.BuildLog;
-import cn.reghao.autodop.dmaster.app.model.po.log.DeployLog;
-import cn.reghao.autodop.dmaster.app.service.bd.DeployNotifyMsg;
-import cn.reghao.autodop.dmaster.notification.model.po.NotifyGroup;
-import cn.reghao.autodop.dmaster.notification.model.po.NotifyType;
-import cn.reghao.autodop.dmaster.notification.service.NotifyService;
-import cn.reghao.autodop.dmaster.notification.service.notifier.ding.DingMsg;
+import cn.reghao.autodop.dmaster.app.db.crud.log.DeployLogCrud;
+import cn.reghao.autodop.dmaster.app.service.config.AppDeployingService;
+import cn.reghao.autodop.dmaster.app.service.config.AppRunningService;
+import cn.reghao.jdkutil.result.Result;
+import cn.reghao.jdkutil.result.ResultStatus;
+import cn.reghao.jdkutil.serializer.JsonConverter;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
-import java.util.List;
-import java.util.Optional;
-
 /**
  * @author reghao
  * @date 2021-07-01 20:15:57
  */
+@Slf4j
 @Service
 public class AppRpcClazzResultImpl {
-    private AppRunningQuery appRunningQuery;
-    private AppRunningCrud appRunningCrud;
-    private NotifyService notifyService;
-    private WebRequest webRequest;
-    private BuildLogRepository buildLogRepository;
-    private DeployLogRepository deployLogRepository;
-    private AppConfigQuery appConfigQuery;
-    private AppDeployingQuery appDeployingQuery;
-    private AppDeployingCrud appDeployingCrud;
+    private DeployLogCrud deployLogCrud;
+    private AppDeployingService deployingService;
+    private final AppRunningService runningService;
 
-    public AppRpcClazzResultImpl(AppRunningQuery appRunningQuery, AppRunningCrud appRunningCrud,
-                                 NotifyService notifyService,
-                                 BuildLogRepository buildLogRepository,
-                                 DeployLogRepository deployLogRepository,
-                                 AppConfigQuery appConfigQuery, AppDeployingQuery appDeployingQuery,
-                                 AppDeployingCrud appDeployingCrud) {
-        this.appRunningQuery = appRunningQuery;
-        this.appRunningCrud = appRunningCrud;
-        this.notifyService = notifyService;
-        this.webRequest = new DefaultWebRequest();
-        this.buildLogRepository = buildLogRepository;
-        this.deployLogRepository = deployLogRepository;
-        this.appConfigQuery = appConfigQuery;
-        this.appDeployingQuery = appDeployingQuery;
-        this.appDeployingCrud = appDeployingCrud;
+    public AppRpcClazzResultImpl(AppDeployingService deployingService, AppRunningService runningService) {
+        this.deployingService = deployingService;
+        this.runningService = runningService;
     }
 
     public void deployResult(DeployResult deployResult) {
-        DeployLog deployLog = DeployLog.from(deployResult);
-        deployLogRepository.save(deployLog);
-
-        String buildId = deployResult.getBuildLogId();
-        // TODO 部署时将 BuildLog 放到缓存中
-        Optional<BuildLog> optional = buildLogRepository.findById(buildId);
-        if (optional.isPresent()) {
-            BuildLog buildLog = optional.get();
-            updateDeployingStatus(buildLog, deployResult);
-            updateRunningStatus(buildLog, deployResult);
-            deployNotify(buildLog, deployResult);
-        }
-    }
-
-    private void updateDeployingStatus(BuildLog buildLog, DeployResult deployResult) {
-        String appId = buildLog.getAppId();
-        String machineId = deployResult.getMachineId();
-        AppDeploying deploying = appDeployingQuery.findByAppIdAndMachineId(appId, machineId);
-        if (deploying != null) {
-            deploying.update(buildLog, deployResult);
-            appDeployingCrud.update(deploying);
+        Result result = deployResult.getResult();
+        int code = result.getCode();
+        String msg = result.getMsg();
+        if (code != ResultStatus.SUCCESS.getCode()) {
+            log.error("msg -> {}", msg);
+            return;
         }
-    }
-
-    private void updateRunningStatus(BuildLog buildLog, DeployResult deployResult) {
-        String appId = buildLog.getAppId();
-        String machineId = deployResult.getMachineId();
-        AppRunning running = appRunningQuery.findByAppIdAndMachineId(appId, machineId);
-    }
 
-    private void deployNotify(BuildLog buildLog, DeployResult deployResult) {
-        AppConfig app = appConfigQuery.findByAppId(buildLog.getAppId());
-        List<NotifyGroup> notifyGroups = app.getNotifyGroups();
-        notifyGroups.forEach(notifyGroup -> {
-            String notifyType = notifyGroup.getNotifyType();
-            switch (NotifyType.valueOf(notifyType)) {
-                case ding:
-                    DingMsg dingMsg = new DeployNotifyMsg(buildLog, deployResult).dingMsg();
-                    notifyService.notify(notifyGroup, dingMsg);
-                    break;
-                case email:
-                    break;
-                case sms:
-                    break;
-                default:
-            }
-        });
+        // 1.添加 DeployLog
+        // 2.更新 AppDeploying
+        // 3.更新 AppRunning
+        // 4.发送部署通知
+        StatusResult statusResult = JsonConverter.jsonToObject(msg, StatusResult.class);
     }
 
-    public void statusResult(StatusResult appStatus) {
-        String appId = appStatus.getAppId();
-        String machineId = appStatus.getMachineId();
-        AppRunning appRunning = appRunningQuery.findByAppIdAndMachineId(appId, machineId);
+    public void statusResult(StatusResult statusResult) {
+        runningService.refresh(statusResult);
     }
 }