feat(cli): 副本数变化时重新生成部署主机列表

This commit is contained in:
2024-01-01 18:31:13 +08:00
parent 232645f2fc
commit d4e39bdaf1

View File

@@ -2,6 +2,7 @@ package com.lanyuanxiaoyao.service.cli.runner;
import cn.hutool.core.collection.ListUtil; import cn.hutool.core.collection.ListUtil;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.RandomUtil; import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.template.Template; import cn.hutool.extra.template.Template;
@@ -65,6 +66,23 @@ public class RunnerApplication implements ApplicationRunner {
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
} }
private List<String> selectHosts(ServiceInfo serviceInfo) {
return serviceInfo.getReplicas() == 0
? deployInformationProperties.getHosts()
.stream()
.map(HostInfo::getIp)
.sorted(Comparator.naturalOrder())
.collect(Collectors.toList())
: ListUtil.sort(
RandomUtil.randomEleList(
deployInformationProperties.getHosts()
.stream()
.map(HostInfo::getIp)
.collect(Collectors.toList()
), serviceInfo.getReplicas()
), Comparator.naturalOrder());
}
@Override @Override
public void run(ApplicationArguments args) throws IOException { public void run(ApplicationArguments args) throws IOException {
Path planPath = Paths.get("deploy.plan"); Path planPath = Paths.get("deploy.plan");
@@ -85,21 +103,12 @@ public class RunnerApplication implements ApplicationRunner {
List<String> selectedHosts; List<String> selectedHosts;
if (deployPlans.containsKey(serviceInfo.getName())) { if (deployPlans.containsKey(serviceInfo.getName())) {
selectedHosts = deployPlans.get(serviceInfo.getName()); selectedHosts = deployPlans.get(serviceInfo.getName());
if (ObjectUtil.notEqual(selectedHosts.size(), serviceInfo.getReplicas())) {
selectedHosts = selectHosts(serviceInfo);
deployPlans.put(serviceInfo.getName(), selectedHosts);
}
} else { } else {
selectedHosts = serviceInfo.getReplicas() == 0 selectedHosts = selectHosts(serviceInfo);
? deployInformationProperties.getHosts()
.stream()
.map(HostInfo::getIp)
.sorted(Comparator.naturalOrder())
.collect(Collectors.toList())
: ListUtil.sort(
RandomUtil.randomEleList(
deployInformationProperties.getHosts()
.stream()
.map(HostInfo::getIp)
.collect(Collectors.toList()
), serviceInfo.getReplicas()
), Comparator.naturalOrder());
deployPlans.put(serviceInfo.getName(), selectedHosts); deployPlans.put(serviceInfo.getName(), selectedHosts);
} }
String deployScript = deployTemplate.render(MapUtil.builder() String deployScript = deployTemplate.render(MapUtil.builder()