Ver código fonte

优化 app 模块的代码结构

reghao 4 anos atrás
pai
commit
60b61d6831

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/controller/BuildDeployController.java

@@ -2,7 +2,7 @@ package cn.reghao.autodop.dmaster.app.controller;
 
 import cn.reghao.autodop.dmaster.app.service.BuildDeployService;
 import cn.reghao.jdkutil.result.WebBody;
-import cn.reghao.autodop.dmaster.app.service.AppBuildDeployService;
+import cn.reghao.autodop.dmaster.app.service.impl.BuildDeployConfigServiceImpl;
 import cn.reghao.autodop.dmaster.app.service.BuildDeployDispatcher;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiImplicitParam;
@@ -24,10 +24,10 @@ public class BuildDeployController {
     private final BuildDeployService buildDeployService;
 
     private final BuildDeployDispatcher buildDeployDispatcher;
-    private final AppBuildDeployService buildService;
+    private final BuildDeployConfigServiceImpl buildService;
 
     public BuildDeployController(BuildDeployService buildDeployService,
-                                 BuildDeployDispatcher buildDeployDispatcher, AppBuildDeployService buildService) {
+                                 BuildDeployDispatcher buildDeployDispatcher, BuildDeployConfigServiceImpl buildService) {
         this.buildDeployService = buildDeployService;
         this.buildDeployDispatcher = buildDeployDispatcher;
         this.buildService = buildService;

+ 3 - 3
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/db/crud/config/AppConfigCrud.java

@@ -11,7 +11,7 @@ import cn.reghao.autodop.dmaster.notification.model.po.NotifyType;
 import cn.reghao.autodop.dmaster.app.model.po.AppRunning;
 import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
 import cn.reghao.autodop.dmaster.app.db.repository.AppRunningRepository;
-import cn.reghao.autodop.dmaster.app.service.AppBuildDeployService;
+import cn.reghao.autodop.dmaster.app.service.impl.BuildDeployConfigServiceImpl;
 import cn.reghao.autodop.dmaster.app.model.vo.NewApp;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
 import cn.reghao.autodop.dmaster.app.db.repository.config.AppConfigRepository;
@@ -34,13 +34,13 @@ public class AppConfigCrud {
     private AppConfigRepository appRepository;
     private MachineHostQuery machineHostQuery;
     private SharedEntityChecker sharedEntityChecker;
-    private AppBuildDeployService appBuildService;
+    private BuildDeployConfigServiceImpl appBuildService;
     private AppRunningRepository runningRepository;
 
     public AppConfigCrud(AppConfigRepository appRepository,
                          MachineHostQuery machineHostQuery,
                          SharedEntityChecker sharedEntityChecker,
-                         AppBuildDeployService appBuildService,
+                         BuildDeployConfigServiceImpl appBuildService,
                          AppRunningRepository runningRepository) {
         this.appRepository = appRepository;
         this.machineHostQuery = machineHostQuery;

+ 8 - 124
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/AppStatusService.java

@@ -1,21 +1,10 @@
 package cn.reghao.autodop.dmaster.app.service;
 
-import cn.reghao.autodop.common.message.AsyncMsg;
-import cn.reghao.autodop.common.message.MessageType;
-import cn.reghao.autodop.common.message.ops.AppOps;
-import cn.reghao.autodop.common.msg.rpc.dto.app.AppIdParam;
-import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
-import cn.reghao.jdkutil.serializer.JsonConverter;
 import cn.reghao.autodop.dmaster.app.model.constant.StatusOps;
-import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
 import cn.reghao.autodop.dmaster.app.model.po.AppRunning;
 import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
 import cn.reghao.autodop.common.dagent.app.log.LogFile;
-import cn.reghao.autodop.dmaster.app.db.repository.AppRunningRepository;
-import org.eclipse.paho.client.mqttv3.MqttException;
-import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -24,117 +13,12 @@ import java.util.List;
  * @author reghao
  * @date 2019-11-27 11:30:28
  */
-@Service
-public class AppStatusService {
-    private DefaultMqttClient mqttClient;
-    private AppRunningRepository runningRepository;
-    private AppConfigQuery appConfigQuery;
-
-    public AppStatusService(DefaultMqttClient mqttClient, AppRunningRepository runningRepository, AppConfigQuery appConfigQuery) {
-        this.mqttClient = mqttClient;
-        this.runningRepository = runningRepository;
-        this.appConfigQuery = appConfigQuery;
-    }
-
-    public void changeStatus(String appId, String machineId, StatusOps statusOps) {
-        AppConfig app = appConfigQuery.findByAppId(appId);
-        switch (statusOps) {
-            case restart:
-                setAppStatus(app, machineId, AppOps.appRestart);
-                break;
-            case stop:
-                setAppStatus(app, machineId, AppOps.appStop);
-                break;
-            case start:
-                setAppStatus(app, machineId, AppOps.appStart);
-                break;
-            default:
-                ;
-        }
-    }
-
-    private void setAppStatus(AppConfig app, String machineId, AppOps appOps) {
-        AppIdParam appIdParam = new AppIdParam(app.getPackerConfig().getType(), app.getAppId());
-        AsyncMsg asyncMsg = new AsyncMsg();
-        asyncMsg.setMachineId(machineId);
-        asyncMsg.setSendTime(System.currentTimeMillis());
-        asyncMsg.setType(MessageType.appType.name());
-        asyncMsg.setOps(appOps.name());
-        asyncMsg.setPayload(JsonConverter.objectToJson(appIdParam));
-
-        String topic = "dagent/" + machineId;
-        // TODO 获取应用状态
-        /*try {
-            mqttClient.pubWithResult(topic, 1, asyncMsg);
-        } catch (MqttException e) {
-            e.printStackTrace();
-        }*/
-    }
-
-    public void refreshAppStatus() {
-        List<AppRunning> appRunnings = runningRepository.findAll();
-        appRunnings.forEach(appRunning -> {
-            String appId = appRunning.getAppId();
-            AppConfig app = appConfigQuery.findByAppId(appId);
-            String machineId = appRunning.getMachineId();
-            getStatus(app, machineId);
-        });
-    }
-
-    public void refreshAppStatus(String appId) {
-        List<AppRunning> appRunnings = runningRepository.findByAppId(appId);
-    }
-
-    public void refreshAppStatus(AppRunning appRunning) {
-        String appId = appRunning.getAppId();
-        AppConfig app = appConfigQuery.findByAppId(appId);
-        String machineId = appRunning.getMachineId();
-        getStatus(app, machineId);
-    }
-
-    public void getStatus(AppConfig app, String machineId) {
-        AppIdParam appIdParam = new AppIdParam(app.getPackerConfig().getType(), app.getAppId());
-        AsyncMsg asyncMsg = new AsyncMsg();
-        asyncMsg.setMachineId(machineId);
-        asyncMsg.setSendTime(System.currentTimeMillis());
-        asyncMsg.setType(MessageType.appType.name());
-        asyncMsg.setOps(AppOps.appStatus.name());
-        asyncMsg.setPayload(JsonConverter.objectToJson(appIdParam));
-
-        String topic = "dagent/" + machineId;
-        // TODO 获取应用状态
-        /*try {
-            mqttClient.pubWithResult(topic, 1, asyncMsg);
-        } catch (MqttException e) {
-            e.printStackTrace();
-        }*/
-    }
-
-    /**
-     * 获取应用日志文件列表
-     *
-     * @param
-     * @return
-     * @date 2021-02-26 上午8:23
-     */
-    public List<LogFile> logFiles(String appId, String machineId) {
-        AppConfig app = appConfigQuery.findByAppId(appId);
-        return null;
-    }
-
-    /**
-     * 获取应用日志内容
-     *
-     * @param
-     * @return
-     * @date 2021-02-26 上午8:23
-     */
-    public List<String> logContent(String appId, String logType, String logLevel, String machineId, String logFile) {
-        AppConfig app = appConfigQuery.findByAppId(appId);
-        return null;
-    }
-
-    private List<String> getAppLog(String appId, String logType, String logLevel, String machineId, String logFile) {
-        return new ArrayList<>();
-    }
+public interface AppStatusService {
+    void changeStatus(String appId, String machineId, StatusOps statusOps);
+    void refreshAppStatus();
+    void refreshAppStatus(String appId);
+    void refreshAppStatus(AppRunning appRunning);
+    void getStatus(AppConfig app, String machineId);
+    List<LogFile> logFiles(String appId, String machineId);
+    List<String> logContent(String appId, String logType, String logLevel, String machineId, String logFile);
 }

+ 18 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployConfigService.java

@@ -0,0 +1,18 @@
+package cn.reghao.autodop.dmaster.app.service;
+
+import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author reghao
+ * @date 2021-09-17 11:30:16
+ */
+public interface BuildDeployConfigService {
+    void refresh();
+    void refreshApp(AppConfig app);
+    void refreshAppBuilding(List<AppConfig> apps, Set<String> appIds);
+    void refreshAppDeployingAndRunning(List<AppConfig> apps, Set<String> appIds);
+    void delete(String appId);
+}

+ 8 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployLogService.java

@@ -0,0 +1,8 @@
+package cn.reghao.autodop.dmaster.app.service;
+
+/**
+ * @author reghao
+ * @date 2021-09-17 11:30:16
+ */
+public interface BuildDeployLogService {
+}

+ 3 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/BuildDeployService.java

@@ -1,10 +1,13 @@
 package cn.reghao.autodop.dmaster.app.service;
 
+import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
+
 /**
  * @author reghao
  * @date 2021-09-17 11:30:16
  */
 public interface BuildDeployService {
+    //void addApp(AppConfig appConfig);
     String buildAndDeploy(String appId);
     String build(String appId);
     String build(String appId, String commitId);

+ 6 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/config/impl/AppConfigServiceImpl.java

@@ -10,7 +10,7 @@ import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
 import cn.reghao.autodop.dmaster.app.model.po.config.DeployConfig;
 import cn.reghao.autodop.dmaster.app.model.po.config.ProjConfig;
 import cn.reghao.autodop.dmaster.app.model.vo.NewApp;
-import cn.reghao.autodop.dmaster.app.service.AppBuildDeployService;
+import cn.reghao.autodop.dmaster.app.service.impl.BuildDeployConfigServiceImpl;
 import cn.reghao.autodop.dmaster.app.service.config.AppConfigService;
 import cn.reghao.autodop.dmaster.machine.db.query.MachineHostQuery;
 import cn.reghao.autodop.dmaster.machine.model.po.MachineHost;
@@ -36,14 +36,14 @@ public class AppConfigServiceImpl implements AppConfigService {
     private AppConfigRepository appRepository;
     private MachineHostQuery machineHostQuery;
     private SharedEntityChecker sharedEntityChecker;
-    private AppBuildDeployService appBuildService;
+    private BuildDeployConfigServiceImpl appBuildService;
     private AppRunningRepository runningRepository;
 
     public AppConfigServiceImpl(AppConfigRepository appRepository,
-                         MachineHostQuery machineHostQuery,
-                         SharedEntityChecker sharedEntityChecker,
-                         AppBuildDeployService appBuildService,
-                         AppRunningRepository runningRepository) {
+                                MachineHostQuery machineHostQuery,
+                                SharedEntityChecker sharedEntityChecker,
+                                BuildDeployConfigServiceImpl appBuildService,
+                                AppRunningRepository runningRepository) {
         this.appRepository = appRepository;
         this.machineHostQuery = machineHostQuery;
         this.sharedEntityChecker = sharedEntityChecker;

+ 148 - 0
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/impl/AppStatusServiceImpl.java

@@ -0,0 +1,148 @@
+package cn.reghao.autodop.dmaster.app.service.impl;
+
+import cn.reghao.autodop.common.dagent.app.log.LogFile;
+import cn.reghao.autodop.common.message.AsyncMsg;
+import cn.reghao.autodop.common.message.MessageType;
+import cn.reghao.autodop.common.message.ops.AppOps;
+import cn.reghao.autodop.common.mqtt.DefaultMqttClient;
+import cn.reghao.autodop.common.msg.rpc.dto.app.AppIdParam;
+import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
+import cn.reghao.autodop.dmaster.app.db.repository.AppRunningRepository;
+import cn.reghao.autodop.dmaster.app.model.constant.StatusOps;
+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.service.AppStatusService;
+import cn.reghao.jdkutil.serializer.JsonConverter;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 应用状态管理
+ *
+ * @author reghao
+ * @date 2019-11-27 11:30:28
+ */
+@Service
+public class AppStatusServiceImpl implements AppStatusService {
+    private DefaultMqttClient mqttClient;
+    private AppRunningRepository runningRepository;
+    private AppConfigQuery appConfigQuery;
+
+    public AppStatusServiceImpl(DefaultMqttClient mqttClient, AppRunningRepository runningRepository,
+                                AppConfigQuery appConfigQuery) {
+        this.mqttClient = mqttClient;
+        this.runningRepository = runningRepository;
+        this.appConfigQuery = appConfigQuery;
+    }
+
+    @Override
+    public void changeStatus(String appId, String machineId, StatusOps statusOps) {
+        AppConfig app = appConfigQuery.findByAppId(appId);
+        switch (statusOps) {
+            case restart:
+                setAppStatus(app, machineId, AppOps.appRestart);
+                break;
+            case stop:
+                setAppStatus(app, machineId, AppOps.appStop);
+                break;
+            case start:
+                setAppStatus(app, machineId, AppOps.appStart);
+                break;
+            default:
+                ;
+        }
+    }
+
+    private void setAppStatus(AppConfig app, String machineId, AppOps appOps) {
+        AppIdParam appIdParam = new AppIdParam(app.getPackerConfig().getType(), app.getAppId());
+        AsyncMsg asyncMsg = new AsyncMsg();
+        asyncMsg.setMachineId(machineId);
+        asyncMsg.setSendTime(System.currentTimeMillis());
+        asyncMsg.setType(MessageType.appType.name());
+        asyncMsg.setOps(appOps.name());
+        asyncMsg.setPayload(JsonConverter.objectToJson(appIdParam));
+
+        String topic = "dagent/" + machineId;
+        // TODO 获取应用状态
+        /*try {
+            mqttClient.pubWithResult(topic, 1, asyncMsg);
+        } catch (MqttException e) {
+            e.printStackTrace();
+        }*/
+    }
+
+    @Override
+    public void refreshAppStatus() {
+        List<AppRunning> appRunnings = runningRepository.findAll();
+        appRunnings.forEach(appRunning -> {
+            String appId = appRunning.getAppId();
+            AppConfig app = appConfigQuery.findByAppId(appId);
+            String machineId = appRunning.getMachineId();
+            getStatus(app, machineId);
+        });
+    }
+
+    @Override
+    public void refreshAppStatus(String appId) {
+        List<AppRunning> appRunnings = runningRepository.findByAppId(appId);
+    }
+
+    @Override
+    public void refreshAppStatus(AppRunning appRunning) {
+        String appId = appRunning.getAppId();
+        AppConfig app = appConfigQuery.findByAppId(appId);
+        String machineId = appRunning.getMachineId();
+        getStatus(app, machineId);
+    }
+
+    @Override
+    public void getStatus(AppConfig app, String machineId) {
+        AppIdParam appIdParam = new AppIdParam(app.getPackerConfig().getType(), app.getAppId());
+        AsyncMsg asyncMsg = new AsyncMsg();
+        asyncMsg.setMachineId(machineId);
+        asyncMsg.setSendTime(System.currentTimeMillis());
+        asyncMsg.setType(MessageType.appType.name());
+        asyncMsg.setOps(AppOps.appStatus.name());
+        asyncMsg.setPayload(JsonConverter.objectToJson(appIdParam));
+
+        String topic = "dagent/" + machineId;
+        // TODO 获取应用状态
+        /*try {
+            mqttClient.pubWithResult(topic, 1, asyncMsg);
+        } catch (MqttException e) {
+            e.printStackTrace();
+        }*/
+    }
+
+    /**
+     * 获取应用日志文件列表
+     *
+     * @param
+     * @return
+     * @date 2021-02-26 上午8:23
+     */
+    @Override
+    public List<LogFile> logFiles(String appId, String machineId) {
+        AppConfig app = appConfigQuery.findByAppId(appId);
+        return null;
+    }
+
+    /**
+     * 获取应用日志内容
+     *
+     * @param
+     * @return
+     * @date 2021-02-26 上午8:23
+     */
+    @Override
+    public List<String> logContent(String appId, String logType, String logLevel, String machineId, String logFile) {
+        AppConfig app = appConfigQuery.findByAppId(appId);
+        return null;
+    }
+
+    private List<String> getAppLog(String appId, String logType, String logLevel, String machineId, String logFile) {
+        return new ArrayList<>();
+    }
+}

+ 12 - 6
dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/AppBuildDeployService.java → dmaster/src/main/java/cn/reghao/autodop/dmaster/app/service/impl/BuildDeployConfigServiceImpl.java

@@ -1,4 +1,4 @@
-package cn.reghao.autodop.dmaster.app.service;
+package cn.reghao.autodop.dmaster.app.service.impl;
 
 import cn.reghao.autodop.dmaster.app.db.query.config.AppConfigQuery;
 import cn.reghao.autodop.dmaster.app.model.po.AppBuilding;
@@ -8,6 +8,7 @@ import cn.reghao.autodop.dmaster.app.model.po.config.AppConfig;
 import cn.reghao.autodop.dmaster.app.db.repository.AppBuildingRepository;
 import cn.reghao.autodop.dmaster.app.db.repository.AppDeployingRepository;
 import cn.reghao.autodop.dmaster.app.db.repository.AppRunningRepository;
+import cn.reghao.autodop.dmaster.app.service.BuildDeployConfigService;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -20,16 +21,16 @@ import java.util.stream.Collectors;
  * @date 2021-06-04 10:01:41
  */
 @Service
-public class AppBuildDeployService {
+public class BuildDeployConfigServiceImpl implements BuildDeployConfigService {
     private AppConfigQuery appConfigQuery;
     private AppBuildingRepository buildingRepository;
     private AppDeployingRepository deployingRepository;
     private AppRunningRepository runningRepository;
 
-    public AppBuildDeployService(AppConfigQuery appConfigQuery,
-                                 AppBuildingRepository buildingRepository,
-                                 AppDeployingRepository deployingRepository,
-                                 AppRunningRepository runningRepository) {
+    public BuildDeployConfigServiceImpl(AppConfigQuery appConfigQuery,
+                                        AppBuildingRepository buildingRepository,
+                                        AppDeployingRepository deployingRepository,
+                                        AppRunningRepository runningRepository) {
         this.appConfigQuery = appConfigQuery;
         this.buildingRepository = buildingRepository;
         this.deployingRepository = deployingRepository;
@@ -37,6 +38,7 @@ public class AppBuildDeployService {
     }
 
     // TODO 启用 env 和 appType 字段,根据环境和应用类型来刷新,避免一次刷新过多应用
+    @Override
     public void refresh() {
         List<AppConfig> apps = appConfigQuery.findAll();
         Set<String> appIds = apps.stream().map(AppConfig::getAppId).collect(Collectors.toSet());
@@ -45,12 +47,14 @@ public class AppBuildDeployService {
         refreshAppDeployingAndRunning(apps, appIds);
     }
 
+    @Override
     public void refreshApp(AppConfig app) {
         refreshAppBuilding(app);
         refreshAppDeploying(app);
         refreshAppRunning(app);
     }
 
+    @Override
     public void refreshAppBuilding(List<AppConfig> apps, Set<String> appIds) {
         Set<String> appsToDelete = buildingRepository.findAll().stream()
                 .map(appBuilding -> {
@@ -80,6 +84,7 @@ public class AppBuildDeployService {
         buildingRepository.save(appBuilding);
     }
 
+    @Override
     public void refreshAppDeployingAndRunning(List<AppConfig> apps, Set<String> appIds) {
         Set<String> appsToDelete = deployingRepository.findAll().stream()
                 .map(appDeploying -> {
@@ -156,6 +161,7 @@ public class AppBuildDeployService {
         runningRepository.saveAll(list);
     }
 
+    @Override
     public void delete(String appId) {
         AppBuilding appBuilding = buildingRepository.findByAppId(appId);
         if (appBuilding != null) {