|
|
@@ -3,14 +3,12 @@ package cn.reghao.devops.mgr.machine.service.impl;
|
|
|
import cn.reghao.devops.common.msg.constant.NodeStatus;
|
|
|
import cn.reghao.devops.common.msg.event.EvtAgentHeartbeat;
|
|
|
import cn.reghao.devops.common.msg.event.EvtAgentStart;
|
|
|
-import cn.reghao.devops.mgr.machine.db.query.MachineQuery;
|
|
|
+import cn.reghao.devops.mgr.machine.service.MachineQuery;
|
|
|
import cn.reghao.devops.mgr.machine.db.repository.MachineHostRepository;
|
|
|
import cn.reghao.devops.mgr.machine.db.repository.MachineInfoRepository;
|
|
|
import cn.reghao.devops.mgr.machine.model.po.MachineHost;
|
|
|
import cn.reghao.devops.mgr.machine.model.po.MachineInfo;
|
|
|
import cn.reghao.devops.mgr.machine.service.MachineService;
|
|
|
-import cn.reghao.jutil.jdk.machine.data.detail.DiskDetail;
|
|
|
-import cn.reghao.jutil.jdk.machine.data.detail.MemoryDetail;
|
|
|
import cn.reghao.jutil.jdk.result.Result;
|
|
|
import cn.reghao.jutil.jdk.result.ResultStatus;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
@@ -44,41 +42,19 @@ public class MachineServiceImpl implements MachineService {
|
|
|
public void addOrUpdateMachine(EvtAgentStart evtAgentStart) {
|
|
|
String machineId = evtAgentStart.getMachineId();
|
|
|
long timestamp = evtAgentStart.getTimestamp();
|
|
|
-
|
|
|
- MachineInfo machineInfo = new MachineInfo(evtAgentStart);
|
|
|
- MachineInfo infoEntity = machineQuery.getMachineInfo(machineId);
|
|
|
- if (infoEntity == null) {
|
|
|
- infoEntity = machineInfoRepository.save(machineInfo);
|
|
|
- machineHostRepository.save(new MachineHost(infoEntity));
|
|
|
+ List<MachineInfo> machineInfoList = machineQuery.getMachineInfos(List.of(machineId));
|
|
|
+ if (machineInfoList.isEmpty()) {
|
|
|
+ MachineInfo machineInfo = new MachineInfo(evtAgentStart);
|
|
|
+ machineInfo = machineInfoRepository.save(machineInfo);
|
|
|
+ machineHostRepository.save(new MachineHost(machineInfo));
|
|
|
} else {
|
|
|
- machineInfo.setId(infoEntity.getId());
|
|
|
- machineInfo.setCreateTime(infoEntity.getCreateTime());
|
|
|
- machineInfoRepository.save(machineInfo);
|
|
|
-
|
|
|
- MachineHost hostEntity = machineQuery.getMachineHost(machineId);
|
|
|
- String machineIpv4 = infoEntity.getMachineIpv4();
|
|
|
- if (!hostEntity.getMachineIpv4().equals(machineIpv4)) {
|
|
|
- hostEntity.setMachineIpv4(machineIpv4);
|
|
|
- machineHostRepository.save(hostEntity);
|
|
|
- }
|
|
|
+ machineInfoRepository.updateMachineStat(machineId, NodeStatus.Online.getCode());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
public void updateMachine(EvtAgentHeartbeat evtAgentHeartbeat) {
|
|
|
// TODO 根据 EvtAgentHeartbeat 中的信息检查系统负载,CPU,内存,磁盘等使用情况(暂未实现)
|
|
|
- String machineId = evtAgentHeartbeat.getMachineId();
|
|
|
- long timestamp = evtAgentHeartbeat.getTimestamp();
|
|
|
-
|
|
|
- MemoryDetail memoryDetail = evtAgentHeartbeat.getMemoryDetail();
|
|
|
- List<DiskDetail> diskDetails = evtAgentHeartbeat.getDiskDetails();
|
|
|
- MachineInfo machineInfo = machineQuery.getMachineInfo(machineId);
|
|
|
- if (machineInfo != null) {
|
|
|
- String machineIpv4 = machineInfo.getMachineIpv4();
|
|
|
- //log.info("heartbeat from {}", machineIpv4);
|
|
|
- } else {
|
|
|
- //log.info("heartbeat from {}", machineId);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -89,59 +65,44 @@ public class MachineServiceImpl implements MachineService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public Result setMachinesDeprecate(List<String> machineIds) {
|
|
|
- List<MachineInfo> list = machineQuery.getMachineInfos(machineIds);
|
|
|
- /*List<MachineInfo> list1 = list.stream()
|
|
|
- .filter(machineInfo -> !Objects.equals(machineInfo.getStat(), NodeStatus.Online.getCode()))
|
|
|
- .peek(machineInfo -> machineInfo.setStat(NodeStatus.Deprecated.getCode()))
|
|
|
- .collect(Collectors.toList());
|
|
|
+ public void setMachineDeprecate(String machineId) {
|
|
|
+ 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());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- if (!list1.isEmpty()) {
|
|
|
- machineInfoRepository.saveAll(list1);
|
|
|
- }*/
|
|
|
+ @Override
|
|
|
+ public void setAgentStatus(String machineId, NodeStatus nodeStatus) {
|
|
|
+ machineInfoRepository.updateMachineStat(machineId, nodeStatus.getCode());
|
|
|
+ }
|
|
|
|
|
|
- return Result.result(ResultStatus.SUCCESS);
|
|
|
+ @Override
|
|
|
+ public void setMachineOffline() {
|
|
|
+ List<MachineInfo> list = machineInfoRepository.findByStat(NodeStatus.Online.getCode()).stream()
|
|
|
+ .filter(machineInfo -> !machineInfo.getMachineId().startsWith("oss"))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ list.forEach(machineInfo -> {
|
|
|
+ String machineId = machineInfo.getMachineId();
|
|
|
+ machineInfoRepository.updateMachineStat(machineId, NodeStatus.Offline.getCode());
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
@Transactional(rollbackFor = Exception.class)
|
|
|
public Result deleteMachine(String machineId) {
|
|
|
MachineHost machineHost = machineQuery.getMachineHost(machineId);
|
|
|
if (machineHost == null) {
|
|
|
- return Result.result(ResultStatus.SUCCESS);
|
|
|
+ return Result.result(ResultStatus.FAIL, "节点不存在");
|
|
|
}
|
|
|
|
|
|
MachineInfo machineInfo = machineHost.getMachineInfo();
|
|
|
if (!machineInfo.getStat().equals(NodeStatus.Deprecated.getCode())) {
|
|
|
- return Result.result(ResultStatus.FAIL, "只能删除 Deprecated 状态的机器");
|
|
|
+ return Result.result(ResultStatus.FAIL, "只能删除 Deprecated 状态的节点");
|
|
|
}
|
|
|
|
|
|
machineHostRepository.deleteByMachineId(machineId);
|
|
|
machineInfoRepository.deleteByMachineId(machineId);
|
|
|
return Result.result(ResultStatus.SUCCESS);
|
|
|
}
|
|
|
-
|
|
|
- @Override
|
|
|
- public void setAgentStatus(String machineId, NodeStatus nodeStatus) {
|
|
|
- MachineInfo machineInfo = machineQuery.getMachineInfo(machineId);
|
|
|
- if (machineInfo != null) {
|
|
|
- machineInfo.setStat(nodeStatus.getCode());
|
|
|
- machineInfoRepository.save(machineInfo);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * mgr 进程结束时将所有 Online 状态的 agent 节点设置为 Offline
|
|
|
- *
|
|
|
- * @param
|
|
|
- * @return
|
|
|
- * @date 2025-06-05 11:34:21
|
|
|
- */
|
|
|
- @Override
|
|
|
- public void shutdown() {
|
|
|
- List<MachineInfo> list = machineQuery.getMachineInfos(NodeStatus.Online.getCode()).stream()
|
|
|
- .filter(machineInfo -> !machineInfo.getMachineId().startsWith("oss"))
|
|
|
- .peek(machineInfo -> machineInfo.setStat(NodeStatus.Offline.getCode()))
|
|
|
- .collect(Collectors.toList());
|
|
|
- machineInfoRepository.saveAll(list);
|
|
|
- }
|
|
|
}
|