新增获取磁盘主机的信息
This commit is contained in:
100
src/main/java/com/mini/capi/job/taskEnable.java
Normal file
100
src/main/java/com/mini/capi/job/taskEnable.java
Normal file
@@ -0,0 +1,100 @@
|
||||
package com.mini.capi.job;
|
||||
|
||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||
import com.mini.capi.biz.domain.*;
|
||||
import com.mini.capi.biz.service.*;
|
||||
import com.mini.capi.utils.HostInfo;
|
||||
import com.mini.capi.utils.vDate;
|
||||
import com.mini.capi.utils.vId;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.springframework.scheduling.annotation.Scheduled;
|
||||
import org.springframework.stereotype.Controller;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Controller
|
||||
public class taskEnable {
|
||||
|
||||
|
||||
@Resource
|
||||
private SshInfoService sshInfoService;
|
||||
|
||||
@Resource
|
||||
private SshUserService sshUserService;
|
||||
|
||||
@Resource
|
||||
private DockerHostService dockerHostService;
|
||||
|
||||
@Resource
|
||||
private DiskMountService diskMountService;
|
||||
|
||||
@Resource
|
||||
private SysHostService sysHostService;
|
||||
|
||||
|
||||
@Scheduled(cron = "0 0/10 * * * ?")
|
||||
public void jobHostDisk() {
|
||||
List<DockerHost> dockerHosts = dockerHostService.list();
|
||||
for (DockerHost host : dockerHosts) {
|
||||
SshUser sshUser = sshUserService.getById(host.getUserId());
|
||||
SshInfo sshInfo = sshInfoService.getById(host.getHostId());
|
||||
try {
|
||||
/* 1. 采集实时数据 */
|
||||
HostInfo.Result r = HostInfo.collect(
|
||||
sshInfo.getHostIp(),
|
||||
Integer.parseInt(sshInfo.getHostPort()),
|
||||
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);
|
||||
|
||||
/* 3. 处理磁盘:先查库做索引,再比对 */
|
||||
List<DiskMount> dbDisks = diskMountService.lambdaQuery()
|
||||
.eq(DiskMount::getSysHostId, host.getHostId())
|
||||
.list();
|
||||
Map<String, DiskMount> dbDiskMap = dbDisks.stream()
|
||||
.collect(Collectors.toMap(DiskMount::getMountPoint, Function.identity()));
|
||||
|
||||
List<DiskMount> toSaveOrUpdate = new ArrayList<>();
|
||||
Set<String> liveMountPoint = new HashSet<>();
|
||||
|
||||
for (DiskMount d : r.disks) {
|
||||
liveMountPoint.add(d.getMountPoint());
|
||||
DiskMount exist = dbDiskMap.get(d.getMountPoint());
|
||||
if (exist != null) {
|
||||
// 存在 -> 更新
|
||||
d.setDiskMountId(exist.getDiskMountId());
|
||||
} else {
|
||||
// 不存在 -> 新增
|
||||
d.setDiskMountId(vId.getUid());
|
||||
}
|
||||
d.setSysHostId(host.getHostId());
|
||||
d.setUpdateTime(vDate.getNow());
|
||||
toSaveOrUpdate.add(d);
|
||||
}
|
||||
|
||||
/* 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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user