|
|
@@ -5,6 +5,7 @@ import cn.reghao.bnt.web.devops.app.db.repository.log.DeployLogRepository;
|
|
|
import cn.reghao.bnt.web.devops.app.model.constant.DeployStatus;
|
|
|
import cn.reghao.bnt.web.devops.app.model.po.AppBuilding;
|
|
|
import cn.reghao.bnt.web.devops.app.model.po.AppDeploying;
|
|
|
+import cn.reghao.bnt.web.devops.app.model.po.AppDeployingNode;
|
|
|
import cn.reghao.bnt.web.devops.app.model.po.config.AppConfig;
|
|
|
import cn.reghao.bnt.web.devops.app.model.po.config.AppDeployConfig;
|
|
|
import cn.reghao.bnt.web.devops.app.model.po.log.BuildLog;
|
|
|
@@ -61,76 +62,98 @@ public class DeployStatImpl implements DeployStat {
|
|
|
public void update(AppDeployConfig appDeployConfig) {
|
|
|
String appId = appDeployConfig.getAppConfig().getAppId();
|
|
|
String machineId = appDeployConfig.getMachineHost().getMachineId();
|
|
|
- AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
- appDeploying.setAppDeployConfig(appDeployConfig);
|
|
|
- deployingRepository.save(appDeploying);
|
|
|
+ /*AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
+ appDeploying.getDeployingNodes().add(new AppDeployingNode(appDeployConfig));
|
|
|
+ deployingRepository.save(appDeploying);*/
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean delete(AppDeployConfig appDeployConfig) {
|
|
|
String appId = appDeployConfig.getAppConfig().getAppId();
|
|
|
String machineId = appDeployConfig.getMachineHost().getMachineId();
|
|
|
- AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
+ /*AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
if (appDeploying == null) {
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
- int pid = appDeploying.getPid();
|
|
|
- if (pid == -1) {
|
|
|
- deployingRepository.delete(appDeploying);
|
|
|
- return true;
|
|
|
- }
|
|
|
+ for (AppDeployingNode appDeployingNode : appDeploying.getDeployingNodes()) {
|
|
|
+ AppDeployConfig deployConfig = appDeployingNode.getDeployConfig();
|
|
|
+ if (deployConfig.equals(appDeployConfig)) {
|
|
|
+ int pid = appDeployingNode.getPid();
|
|
|
+ if (pid == -1) {
|
|
|
+ deployingRepository.delete(appDeploying);
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }*/
|
|
|
|
|
|
return false;
|
|
|
}
|
|
|
|
|
|
public void delete(String appId, String machineId) {
|
|
|
- AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
+ AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
|
|
|
if (appDeploying != null) {
|
|
|
- deployingRepository.delete(appDeploying);
|
|
|
+ List<AppDeployingNode> deployingNodes = appDeploying.getDeployingNodes();
|
|
|
+
|
|
|
+ int idx = -1;
|
|
|
+ for (int i = 0; i < deployingNodes.size(); i++) {
|
|
|
+ String machineId1 = deployingNodes.get(i).getDeployConfig().getMachineHost().getMachineId();
|
|
|
+ if (machineId.equals(machineId1)) {
|
|
|
+ idx = i;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (idx != -1) {
|
|
|
+ deployingNodes.remove(idx);
|
|
|
+ deployingRepository.delete(appDeploying);
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void afterBuild(AppBuilding appBuilding) {
|
|
|
String appId = appBuilding.getAppConfig().getAppId();
|
|
|
- List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
+ /*List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
list.forEach(appDeploying -> {
|
|
|
appDeploying.afterBuild(appBuilding);
|
|
|
});
|
|
|
- deployingRepository.saveAll(list);
|
|
|
+ deployingRepository.saveAll(list);*/
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void beforeDeploy(AppBuilding appBuilding, String machineId, String deployBy) {
|
|
|
- String appId = appBuilding.getAppConfig().getAppId();
|
|
|
- List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
- for (AppDeploying appDeploying : list) {
|
|
|
- String machineId1 = appDeploying.getAppDeployConfig().getMachineHost().getMachineId();
|
|
|
+ AppDeploying appDeploying = deployingRepository.findByAppConfig(appBuilding.getAppConfig());
|
|
|
+ appDeploying.setBuildLog(appBuilding.getBuildLog());
|
|
|
+ for (AppDeployingNode deployNode : appDeploying.getDeployingNodes()) {
|
|
|
+ String machineId1 = deployNode.getDeployConfig().getMachineHost().getMachineId();
|
|
|
if (machineId1.equals(machineId)) {
|
|
|
- appDeploying.beforeDeploy(appBuilding, deployBy);
|
|
|
- deployingRepository.save(appDeploying);
|
|
|
+ deployNode.setDeployResult(DeployStatus.onDeploying.getDesc());
|
|
|
+ deployNode.setDeployBy(deployBy);
|
|
|
+ deployNode.setOnDeploying(true);
|
|
|
+ deployNode.setDeployed(false);
|
|
|
}
|
|
|
}
|
|
|
+ deployingRepository.save(appDeploying);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void afterDeploy(EvtAppStatResult deployResult) {
|
|
|
log.info("执行 {} 部署后的操作", deployResult.getAppId());
|
|
|
-
|
|
|
- String appId = deployResult.getAppId();
|
|
|
String machineId = deployResult.getMachineId();
|
|
|
- List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
- for (AppDeploying appDeploying : list) {
|
|
|
- String machineId1 = appDeploying.getAppDeployConfig().getMachineHost().getMachineId();
|
|
|
+ String appId = deployResult.getAppId();
|
|
|
+ AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
|
|
|
+ for (AppDeployingNode deployNode : appDeploying.getDeployingNodes()) {
|
|
|
+ String machineId1 = deployNode.getDeployConfig().getMachineHost().getMachineId();
|
|
|
if (machineId1.equals(machineId)) {
|
|
|
appDeploying.afterDeploy(deployResult);
|
|
|
if (deployResult.getResult().getCode() == ResultStatus.SUCCESS.getCode()) {
|
|
|
- setAppStatus(appDeploying, deployResult);
|
|
|
+ deployNode.setStatus(deployResult.getStatus());
|
|
|
+ deployNode.setStartTime(deployResult.getStartTime());
|
|
|
+ deployNode.setPid(deployResult.getPid());
|
|
|
+ deployNode.setLastCheck(DateTimeConverter.localDateTime(deployResult.getResult().getTimestamp()));
|
|
|
}
|
|
|
- deployingRepository.save(appDeploying);
|
|
|
|
|
|
- MachineHost machineHost = appDeploying.getAppDeployConfig().getMachineHost();
|
|
|
+ MachineHost machineHost = deployNode.getDeployConfig().getMachineHost();
|
|
|
// BuildLog buildLog = buildLogRepository.findByBuildLogId(appDeploying.getAppBuilding().getBuildLogId());
|
|
|
BuildLog buildLog = appDeploying.getBuildLog();
|
|
|
DeployLog deployLog = new DeployLog(buildLog, machineHost, deployResult);
|
|
|
@@ -140,36 +163,32 @@ public class DeployStatImpl implements DeployStat {
|
|
|
log.info("{} 的通知已发送", deployResult.getAppId());
|
|
|
}
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- private void setAppStatus(AppDeploying appDeploying, EvtAppStatResult deployResult) {
|
|
|
- appDeploying.setStatus(deployResult.getStatus());
|
|
|
- appDeploying.setStartTime(deployResult.getStartTime());
|
|
|
- appDeploying.setPid(deployResult.getPid());
|
|
|
- appDeploying.setLastCheck(DateTimeConverter.localDateTime(deployResult.getResult().getTimestamp()));
|
|
|
+ deployingRepository.save(appDeploying);
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void refresh(EvtAppStatResult statResult) {
|
|
|
- String appId = statResult.getAppId();
|
|
|
- String machineId = statResult.getMachineId();
|
|
|
- List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
- for (AppDeploying appDeploying : list) {
|
|
|
- String machineId1 = appDeploying.getAppDeployConfig().getMachineHost().getMachineId();
|
|
|
- if (machineId1.equals(machineId)) {
|
|
|
- setAppStatus(appDeploying, statResult);
|
|
|
- deployingRepository.save(appDeploying);
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void getApp(String appId) {
|
|
|
+ AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
|
|
|
+ for (AppDeployingNode deployNode : appDeploying.getDeployingNodes()) {
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public List<AppInfo> getAppsByMachineId(String machineId) {
|
|
|
return deployingRepository.findAll().stream()
|
|
|
- .filter(appDeploying -> appDeploying.getAppDeployConfig().getMachineHost().getMachineId().equals(machineId))
|
|
|
+ .filter(appDeploying -> {
|
|
|
+ MachineHost machineHost = appDeploying.getDeployingNodes().get(0).getDeployConfig().getMachineHost();
|
|
|
+ return machineHost.getMachineId().equals(machineId);
|
|
|
+ })
|
|
|
.map(appDeploying -> {
|
|
|
- String packType = appDeploying.getAppDeployConfig().getAppConfig().getPackerConfig().getType();
|
|
|
- String appId = appDeploying.getAppDeployConfig().getAppConfig().getAppId();
|
|
|
+ AppDeployConfig deployConfig = appDeploying.getDeployingNodes().get(0).getDeployConfig();
|
|
|
+ String packType = deployConfig.getAppConfig().getPackerConfig().getType();
|
|
|
+ String appId = deployConfig.getAppConfig().getAppId();
|
|
|
return new AppInfo(packType, appId);
|
|
|
})
|
|
|
.collect(Collectors.toList());
|
|
|
@@ -177,13 +196,13 @@ public class DeployStatImpl implements DeployStat {
|
|
|
|
|
|
@Override
|
|
|
public List<AppDeployingVO> get(String appId, AppBuilding appBuilding) {
|
|
|
- List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
+ List<AppDeploying> list = Collections.emptyList();
|
|
|
if (list.isEmpty()) {
|
|
|
return Collections.emptyList();
|
|
|
}
|
|
|
|
|
|
return list.stream().map(appDeploying -> {
|
|
|
- MachineHost machineHost = appDeploying.getAppDeployConfig().getMachineHost();
|
|
|
+ MachineHost machineHost = appDeploying.getDeployingNodes().get(0).getDeployConfig().getMachineHost();
|
|
|
String machineStatus = machineService.isAgentOnline(machineHost.getMachineId())
|
|
|
? NodeStatus.Online.name() : NodeStatus.Offline.name();
|
|
|
|
|
|
@@ -208,9 +227,10 @@ public class DeployStatImpl implements DeployStat {
|
|
|
@Override
|
|
|
public PageList<AppRunningVO> getByPage(String env, String appType, int pageNumber, int pageSize) {
|
|
|
PageRequest pageRequest = PageRequest.of(pageNumber-1, pageSize);
|
|
|
- Page<AppDeploying> page = deployingRepository.findAllByAppDeployConfig_AppConfig_EnvAndAppDeployConfig_AppConfig_AppType(env, appType, pageRequest);
|
|
|
+ Page<AppDeploying> page = Page.empty();
|
|
|
List<AppRunningVO> list2 = page.getContent().stream().map(appDeploying -> {
|
|
|
- AppConfig appConfig = appDeploying.getAppDeployConfig().getAppConfig();
|
|
|
+ AppConfig appConfig = appDeploying.getDeployingNodes().get(0).getDeployConfig().getAppConfig();
|
|
|
+
|
|
|
String appId = appConfig.getAppId();
|
|
|
String appName = appConfig.getAppName();
|
|
|
String bindPorts = appConfig.getBindPorts();
|
|
|
@@ -228,31 +248,46 @@ public class DeployStatImpl implements DeployStat {
|
|
|
|
|
|
@Override
|
|
|
public List<AppRunning> getAppRunning(String appId) {
|
|
|
- return deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId).stream()
|
|
|
+ return Collections.emptyList();
|
|
|
+ /*return deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId).stream()
|
|
|
//.filter(AppDeploying::isDeployed)
|
|
|
//.sorted(Comparator.comparing(AppDeploying::getDeployTime).reversed())
|
|
|
.map(AppRunning::new)
|
|
|
- .collect(Collectors.toList());
|
|
|
+ .collect(Collectors.toList());*/
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean isDeploying(String appId, String machineId) {
|
|
|
- AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
- return appDeploying.isOnDeploying();
|
|
|
+ AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
|
|
|
+ if (appDeploying != null) {
|
|
|
+ for (AppDeployingNode deployingNode : appDeploying.getDeployingNodes()) {
|
|
|
+ String machineId1 = deployingNode.getDeployConfig().getMachineHost().getMachineId();
|
|
|
+ if (machineId.equals(machineId1)) {
|
|
|
+ return deployingNode.isOnDeploying();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return false;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean isRunning(String appId) {
|
|
|
- List<AppDeploying> list = deployingRepository.findAllByAppDeployConfig_AppConfig_AppId(appId);
|
|
|
+ List<AppDeploying> list = Collections.emptyList();
|
|
|
return !list.isEmpty();
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public boolean isRunning(String appId, String machineId) {
|
|
|
- AppDeploying appDeploying = deployingRepository.findAllByAppDeployConfig_AppConfig_AppIdAndAppDeployConfig_MachineHost_MachineId(appId, machineId);
|
|
|
+ AppDeploying appDeploying = deployingRepository.findByAppConfig_AppId(appId);
|
|
|
if (appDeploying != null) {
|
|
|
- int pid = appDeploying.getPid();
|
|
|
- return pid != -1;
|
|
|
+ for (AppDeployingNode deployingNode : appDeploying.getDeployingNodes()) {
|
|
|
+ String machineId1 = deployingNode.getDeployConfig().getMachineHost().getMachineId();
|
|
|
+ if (machineId.equals(machineId1)) {
|
|
|
+ int pid = deployingNode.getPid();
|
|
|
+ return pid != -1;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return false;
|