|
|
@@ -1,191 +0,0 @@
|
|
|
-package cn.reghao.autodop.dagent.app;
|
|
|
-
|
|
|
-import cn.reghao.autodop.common.msg.rpc.dto.app.AppIdParam;
|
|
|
-import cn.reghao.autodop.common.msg.rpc.dto.app.AppStatus;
|
|
|
-import cn.reghao.autodop.common.msg.rpc.dto.app.DeployResult;
|
|
|
-import cn.reghao.autodop.common.msg.rpc.dto.app.DeployParam;
|
|
|
-import cn.reghao.autodop.common.msg.rpc.dto.app.PackType;
|
|
|
-import cn.reghao.autodop.common.dagent.app.log.AppLogArgs;
|
|
|
-import cn.reghao.autodop.common.dagent.app.log.LogConfig;
|
|
|
-import cn.reghao.autodop.common.dagent.app.log.LogFile;
|
|
|
-import cn.reghao.autodop.common.docker.exception.DockerException;
|
|
|
-import cn.reghao.autodop.common.message.CallResult;
|
|
|
-import cn.reghao.jdkutil.MachineId;
|
|
|
-import cn.reghao.jdkutil.result.Result;
|
|
|
-import cn.reghao.jdkutil.result.ResultStatus;
|
|
|
-import cn.reghao.autodop.common.util.ExceptionUtil;
|
|
|
-import cn.reghao.jdkutil.serializer.JsonConverter;
|
|
|
-import cn.reghao.autodop.dagent.spring.DagentLifecycle;
|
|
|
-import lombok.extern.slf4j.Slf4j;
|
|
|
-import org.springframework.stereotype.Component;
|
|
|
-
|
|
|
-import java.util.List;
|
|
|
-
|
|
|
-/**
|
|
|
- * @author reghao
|
|
|
- * @date 2021-02-22 16:20:22
|
|
|
- */
|
|
|
-@Slf4j
|
|
|
-@Component
|
|
|
-public class App {
|
|
|
- private final DockerAppServiceImpl dockerAppServiceImpl;
|
|
|
- private final ZipAppServiceImpl zipAppServiceImpl;
|
|
|
-
|
|
|
- public App() {
|
|
|
- // TODO 对于托管给 Spring 的对象,这种创建对象的方式是否合理
|
|
|
- this.dockerAppServiceImpl = new DockerAppServiceImpl();
|
|
|
- this.zipAppServiceImpl = new ZipAppServiceImpl();
|
|
|
- }
|
|
|
-
|
|
|
- public DeployResult deploy(String payload) {
|
|
|
- DeployParam deployParam = JsonConverter.jsonToObject(payload, DeployParam.class);
|
|
|
- String buildLogId = deployParam.getBuildLogId();
|
|
|
- String packType = deployParam.getPackType();
|
|
|
-
|
|
|
- AppStatus appStatus;
|
|
|
- DeployResult deployResult = new DeployResult(buildLogId, MachineId.id(), MachineId.ipv4());
|
|
|
- switch (PackType.valueOf(packType)) {
|
|
|
- case docker:
|
|
|
- try {
|
|
|
- appStatus = dockerAppServiceImpl.deploy(deployParam);
|
|
|
- deployResult.setResult(Result.result(ResultStatus.SUCCESS));
|
|
|
- deployResult.setAppStatus(appStatus);
|
|
|
- } catch (DockerException e) {
|
|
|
- deployResult.setResult(Result.result(ResultStatus.FAIL, ExceptionUtil.errorMsg(e)));
|
|
|
- }
|
|
|
- break;
|
|
|
- case zip:
|
|
|
- appStatus = zipAppServiceImpl.deploy(deployParam);
|
|
|
- deployResult.setResult(Result.result(ResultStatus.SUCCESS));
|
|
|
- deployResult.setAppStatus(appStatus);
|
|
|
- break;
|
|
|
- default:
|
|
|
- String msg = "打包类型 " + deployParam.getPackType() + " 不存在";
|
|
|
- deployResult.setResult(Result.result(ResultStatus.ERROR, msg));
|
|
|
- }
|
|
|
- return deployResult;
|
|
|
- }
|
|
|
-
|
|
|
- public CallResult log(String payload) {
|
|
|
- try {
|
|
|
- AppLogArgs appLogArgs = JsonConverter.jsonToObject(payload, AppLogArgs.class);
|
|
|
- String packerType = appLogArgs.getPackerType();
|
|
|
- long count = appLogArgs.getLogConfigs().stream().filter(LogConfig::getIsDir).count();
|
|
|
-
|
|
|
- switch (PackType.valueOf(packerType)) {
|
|
|
- case docker:
|
|
|
- if (count > 0) {
|
|
|
- List<LogFile> logFiles = dockerAppServiceImpl.logFiles(appLogArgs);
|
|
|
- return CallResult.success(logFiles);
|
|
|
- } else {
|
|
|
- List<String> logContent = dockerAppServiceImpl.logContent(appLogArgs);
|
|
|
- return CallResult.success(logContent);
|
|
|
- }
|
|
|
- case zip:
|
|
|
- if (count > 0) {
|
|
|
- List<LogFile> logFiles = zipAppServiceImpl.logFiles(appLogArgs);
|
|
|
- return CallResult.success(logFiles);
|
|
|
- } else {
|
|
|
- List<String> logContent = zipAppServiceImpl.logContent(appLogArgs);
|
|
|
- return CallResult.success(logContent);
|
|
|
- }
|
|
|
- default:
|
|
|
- return CallResult.error("打包类型 " + appLogArgs.getPackerType() + " 不存在");
|
|
|
- }
|
|
|
- } catch (Exception e) {
|
|
|
- return CallResult.fail(ExceptionUtil.errorMsg(e));
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- public CallResult<AppStatus> status(String payload) {
|
|
|
- AppIdParam appIdParam = JsonConverter.jsonToObject(payload, AppIdParam.class);
|
|
|
- String appId = appIdParam.getAppId();
|
|
|
- String packerType = appIdParam.getPackerType();
|
|
|
-
|
|
|
- AppStatus appStatus;
|
|
|
- switch (PackType.valueOf(packerType)) {
|
|
|
- case docker:
|
|
|
- try {
|
|
|
- appStatus = dockerAppServiceImpl.status(appId);
|
|
|
- } catch (DockerException e) {
|
|
|
- return CallResult.fail(ExceptionUtil.errorMsg(e));
|
|
|
- }
|
|
|
- break;
|
|
|
- case zip:
|
|
|
- appStatus = zipAppServiceImpl.status(appId);
|
|
|
- break;
|
|
|
- default:
|
|
|
- return CallResult.error("打包类型 " + appIdParam.getPackerType() + " 不存在");
|
|
|
- }
|
|
|
- return CallResult.success(appStatus);
|
|
|
- }
|
|
|
-
|
|
|
- public CallResult<AppStatus> restart(String payload) {
|
|
|
- AppIdParam appIdParam = JsonConverter.jsonToObject(payload, AppIdParam.class);
|
|
|
- String appId = appIdParam.getAppId();
|
|
|
- String packerType = appIdParam.getPackerType();
|
|
|
-
|
|
|
- AppStatus appStatus;
|
|
|
- switch (PackType.valueOf(packerType)) {
|
|
|
- case docker:
|
|
|
- try {
|
|
|
- appStatus = dockerAppServiceImpl.restart(appId);
|
|
|
- } catch (DockerException e) {
|
|
|
- return CallResult.fail(ExceptionUtil.errorMsg(e));
|
|
|
- }
|
|
|
- break;
|
|
|
- case zip:
|
|
|
- appStatus = zipAppServiceImpl.restart(appId);
|
|
|
- break;
|
|
|
- default:
|
|
|
- return CallResult.error("打包类型 " + appIdParam.getPackerType() + " 不存在");
|
|
|
- }
|
|
|
- return CallResult.success(appStatus);
|
|
|
- }
|
|
|
-
|
|
|
- public CallResult<AppStatus> stop(String payload) {
|
|
|
- AppIdParam appIdParam = JsonConverter.jsonToObject(payload, AppIdParam.class);
|
|
|
- String appId = appIdParam.getAppId();
|
|
|
- String packerType = appIdParam.getPackerType();
|
|
|
-
|
|
|
- AppStatus appStatus;
|
|
|
- switch (PackType.valueOf(packerType)) {
|
|
|
- case docker:
|
|
|
- try {
|
|
|
- appStatus = dockerAppServiceImpl.stop(appId);
|
|
|
- } catch (DockerException e) {
|
|
|
- return CallResult.fail(ExceptionUtil.errorMsg(e));
|
|
|
- }
|
|
|
- break;
|
|
|
- case zip:
|
|
|
- appStatus = zipAppServiceImpl.stop(appId);
|
|
|
- break;
|
|
|
- default:
|
|
|
- return CallResult.error("打包类型 " + appIdParam.getPackerType() + " 不存在");
|
|
|
- }
|
|
|
- return CallResult.success(appStatus);
|
|
|
- }
|
|
|
-
|
|
|
- public CallResult<AppStatus> start(String payload) {
|
|
|
- AppIdParam appIdParam = JsonConverter.jsonToObject(payload, AppIdParam.class);
|
|
|
- String appId = appIdParam.getAppId();
|
|
|
- String packerType = appIdParam.getPackerType();
|
|
|
-
|
|
|
- AppStatus appStatus;
|
|
|
- switch (PackType.valueOf(packerType)) {
|
|
|
- case docker:
|
|
|
- try {
|
|
|
- appStatus = dockerAppServiceImpl.start(appId);
|
|
|
- } catch (DockerException e) {
|
|
|
- return CallResult.fail(ExceptionUtil.errorMsg(e));
|
|
|
- }
|
|
|
- break;
|
|
|
- case zip:
|
|
|
- appStatus = zipAppServiceImpl.start(appId);
|
|
|
- break;
|
|
|
- default:
|
|
|
- return CallResult.error("打包类型 " + appIdParam.getPackerType() + " 不存在");
|
|
|
- }
|
|
|
- return CallResult.success(appStatus);
|
|
|
- }
|
|
|
-}
|