|
|
@@ -1,8 +1,10 @@
|
|
|
package cn.reghao.bnt.web.devops.machine.service.impl;
|
|
|
|
|
|
+import cn.reghao.bnt.common.machine.Machine;
|
|
|
import cn.reghao.bnt.common.msg.constant.NodeStatus;
|
|
|
import cn.reghao.bnt.common.msg.event.EvtAgentHeartbeat;
|
|
|
import cn.reghao.bnt.common.msg.event.EvtAgentStart;
|
|
|
+import cn.reghao.bnt.web.devops.builder.model.constant.EnvType;
|
|
|
import cn.reghao.bnt.web.devops.util.DefaultSetting;
|
|
|
import cn.reghao.bnt.web.devops.machine.db.repository.MachineHostRepository;
|
|
|
import cn.reghao.bnt.web.devops.machine.db.repository.MachineInfoRepository;
|
|
|
@@ -10,6 +12,8 @@ import cn.reghao.bnt.web.devops.machine.model.po.MachineHost;
|
|
|
import cn.reghao.bnt.web.devops.machine.model.po.MachineInfo;
|
|
|
import cn.reghao.bnt.web.devops.machine.service.MachineQuery;
|
|
|
import cn.reghao.bnt.web.devops.machine.service.MachineService;
|
|
|
+import cn.reghao.bnt.web.util.SelectOption;
|
|
|
+import cn.reghao.jutil.jdk.machine.data.detail.NetworkDetail;
|
|
|
import cn.reghao.jutil.jdk.web.result.Result;
|
|
|
import cn.reghao.jutil.jdk.web.result.ResultStatus;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -31,6 +35,7 @@ public class MachineServiceImpl implements MachineService {
|
|
|
private final MachineHostRepository machineHostRepository;
|
|
|
private final MachineInfoRepository machineInfoRepository;
|
|
|
private final MachineQuery machineQuery;
|
|
|
+ private final Machine machine = new Machine();
|
|
|
|
|
|
public MachineServiceImpl(DefaultSetting defaultSetting, MachineHostRepository machineHostRepository,
|
|
|
MachineInfoRepository machineInfoRepository, MachineQuery machineQuery) {
|
|
|
@@ -40,6 +45,26 @@ public class MachineServiceImpl implements MachineService {
|
|
|
this.machineQuery = machineQuery;
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void addAliyunOss(String machineId, String env) {
|
|
|
+ String ipv4 = "";
|
|
|
+ EnvType envType = EnvType.valueOf(env);
|
|
|
+ EvtAgentStart evtAgentStart = machine.detail();
|
|
|
+ NetworkDetail networkDetail = evtAgentStart.getNetworkDetails().get(0);
|
|
|
+ networkDetail.setPubicIpv4(ipv4);
|
|
|
+ networkDetail.setIpv4(ipv4);
|
|
|
+
|
|
|
+ // oss 机器 ID 格式: oss.bucketName
|
|
|
+ String machineIdKey = String.format("oss.%s", machineId);
|
|
|
+ List<MachineInfo> machineInfoList = machineQuery.getMachineInfos(List.of(machineIdKey));
|
|
|
+ if (machineInfoList.isEmpty()) {
|
|
|
+ MachineInfo machineInfo = new MachineInfo(evtAgentStart);
|
|
|
+ machineInfo.setMachineId(machineIdKey);
|
|
|
+ machineInfo = machineInfoRepository.save(machineInfo);
|
|
|
+ machineHostRepository.save(new MachineHost(machineInfo, envType.name()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
public void addOrUpdateMachine(EvtAgentStart evtAgentStart) {
|
|
|
@@ -70,11 +95,17 @@ public class MachineServiceImpl implements MachineService {
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@Override
|
|
|
- public void setMachineDeprecate(String machineId) {
|
|
|
+ public Result setMachineDeprecate(String machineId) {
|
|
|
+ List<SelectOption> selectOptionList = machineQuery.getMachineApps(machineId);
|
|
|
+ if (!selectOptionList.isEmpty()) {
|
|
|
+ return Result.fail("尚有 app 在使用本 machine, 无法废弃");
|
|
|
+ }
|
|
|
+
|
|
|
List<MachineInfo> list = machineQuery.getMachineInfos(List.of(machineId));
|
|
|
if (!list.isEmpty() && Objects.equals(list.get(0).getStat(), NodeStatus.Offline.getCode())) {
|
|
|
machineInfoRepository.updateMachineStat(machineId, NodeStatus.Deprecated.getCode());
|
|
|
}
|
|
|
+ return Result.success();
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
@@ -104,10 +135,15 @@ public class MachineServiceImpl implements MachineService {
|
|
|
}
|
|
|
|
|
|
MachineInfo machineInfo = machineHost.getMachineInfo();
|
|
|
- if (!machineInfo.getStat().equals(NodeStatus.Deprecated.getCode())) {
|
|
|
+ if (!machineInfo.getStat().equals(NodeStatus.Deprecated.getCode()) && !machineId.startsWith("oss.")) {
|
|
|
return Result.result(ResultStatus.FAIL, "只能删除 Deprecated 状态的节点");
|
|
|
}
|
|
|
|
|
|
+ List<SelectOption> selectOptionList = machineQuery.getMachineApps(machineId);
|
|
|
+ if (!selectOptionList.isEmpty()) {
|
|
|
+ return Result.fail("尚有 app 在使用本 machine, 无法删除");
|
|
|
+ }
|
|
|
+
|
|
|
machineHostRepository.deleteByMachineId(machineId);
|
|
|
machineInfoRepository.deleteByMachineId(machineId);
|
|
|
return Result.result(ResultStatus.SUCCESS);
|