新增获取磁盘主机的信息

This commit is contained in:
2025-08-25 22:01:33 +08:00
parent fb303dbac7
commit eb9a677204

View File

@@ -3,11 +3,12 @@ package com.mini.capi.job;
import com.mini.capi.biz.domain.*; import com.mini.capi.biz.domain.*;
import com.mini.capi.biz.service.*; import com.mini.capi.biz.service.*;
import com.mini.capi.model.ApiResult;
import com.mini.capi.utils.HostInfo; import com.mini.capi.utils.HostInfo;
import com.mini.capi.utils.vDate; import com.mini.capi.utils.vDate;
import com.mini.capi.utils.vId; import com.mini.capi.utils.vId;
import com.mini.capi.utils.vToken;
import jakarta.annotation.Resource; import jakarta.annotation.Resource;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
@@ -37,66 +38,68 @@ public class taskEnable {
private SysHostService sysHostService; private SysHostService sysHostService;
@Scheduled(cron = "0 0/10 * * * ?")
@GetMapping("/getTaskDockerDiskInfo") @GetMapping("/getTaskDockerDiskInfo")
public void jobHostDisk() { public ApiResult<?> jobHostDisk(String token) {
List<DockerHost> dockerHosts = dockerHostService.list(); if (vToken.isValidToken(token)) {
for (DockerHost host : dockerHosts) { List<DockerHost> dockerHosts = dockerHostService.list();
SshUser sshUser = sshUserService.getById(host.getUserId()); for (DockerHost host : dockerHosts) {
SshInfo sshInfo = sshInfoService.getById(host.getHostId()); SshUser sshUser = sshUserService.getById(host.getUserId());
try { SshInfo sshInfo = sshInfoService.getById(host.getHostId());
/* 1. 采集实时数据 */ try {
HostInfo.Result r = HostInfo.collect( /* 1. 采集实时数据 */
sshInfo.getHostIp(), HostInfo.Result r = HostInfo.collect(
Integer.parseInt(sshInfo.getHostPort()), sshInfo.getHostIp(),
sshUser.getCUsername(), Integer.parseInt(sshInfo.getHostPort()),
sshUser.getCPassword()); sshUser.getCUsername(),
sshUser.getCPassword());
/* 2. 主机维度 saveOrUpdate */
SysHost sysHost = r.host;
sysHost.setSysHostId(host.getHostId());
sysHost.setUpdateTime(vDate.getNow());
sysHost.setDokerHostId(host.getDokerHostId());
sysHostService.saveOrUpdate(sysHost);
/* 2. 主机维度 saveOrUpdate */ /* 3. 处理磁盘:先查库做索引,再比对 */
SysHost sysHost = r.host; List<DiskMount> dbDisks = diskMountService.lambdaQuery()
sysHost.setSysHostId(host.getHostId()); .eq(DiskMount::getSysHostId, host.getHostId())
sysHost.setUpdateTime(vDate.getNow()); .list();
sysHost.setDokerHostId(host.getDokerHostId()); Map<String, DiskMount> dbDiskMap = dbDisks.stream()
sysHostService.saveOrUpdate(sysHost); .collect(Collectors.toMap(DiskMount::getMountPoint, Function.identity()));
/* 3. 处理磁盘:先查库做索引,再比对 */ List<DiskMount> toSaveOrUpdate = new ArrayList<>();
List<DiskMount> dbDisks = diskMountService.lambdaQuery() Set<String> liveMountPoint = new HashSet<>();
.eq(DiskMount::getSysHostId, host.getHostId())
.list();
Map<String, DiskMount> dbDiskMap = dbDisks.stream()
.collect(Collectors.toMap(DiskMount::getMountPoint, Function.identity()));
List<DiskMount> toSaveOrUpdate = new ArrayList<>(); for (DiskMount d : r.disks) {
Set<String> liveMountPoint = new HashSet<>(); liveMountPoint.add(d.getMountPoint());
DiskMount exist = dbDiskMap.get(d.getMountPoint());
for (DiskMount d : r.disks) { if (exist != null) {
liveMountPoint.add(d.getMountPoint()); // 存在 -> 更新
DiskMount exist = dbDiskMap.get(d.getMountPoint()); d.setDiskMountId(exist.getDiskMountId());
if (exist != null) { } else {
// 存在 -> // 存在 -> 新
d.setDiskMountId(exist.getDiskMountId()); d.setDiskMountId(vId.getUid());
} else { }
// 不存在 -> 新增 d.setSysHostId(host.getHostId());
d.setDiskMountId(vId.getUid()); d.setUpdateTime(vDate.getNow());
toSaveOrUpdate.add(d);
} }
d.setSysHostId(host.getHostId()); /* 4. 批量保存/更新 */
d.setUpdateTime(vDate.getNow()); diskMountService.saveOrUpdateBatch(toSaveOrUpdate);
toSaveOrUpdate.add(d); /* 5. 删除实时已消失的盘 */
List<String> delIds = dbDisks.stream()
.filter(d -> !liveMountPoint.contains(d.getMountPoint()))
.map(DiskMount::getDiskMountId)
.collect(Collectors.toList());
if (!delIds.isEmpty()) {
diskMountService.removeByIds(delIds);
}
return ApiResult.success();
} catch (Exception e) {
System.out.println(e.getMessage());
} }
/* 4. 批量保存/更新 */
diskMountService.saveOrUpdateBatch(toSaveOrUpdate);
/* 5. 删除实时已消失的盘 */
List<String> delIds = dbDisks.stream()
.filter(d -> !liveMountPoint.contains(d.getMountPoint()))
.map(DiskMount::getDiskMountId)
.collect(Collectors.toList());
if (!delIds.isEmpty()) {
diskMountService.removeByIds(delIds);
}
} catch (Exception e) {
System.out.println(e.getMessage());
} }
} }
return ApiResult.error();
} }
} }