Compare commits

..

7 Commits

Author SHA1 Message Date
guyuliang db97a4cea9 注册ct云主机申请 2024-05-30 18:39:11 +08:00
guyuliang a8f925a459 注册ct云主机申请 2024-05-30 18:36:33 +08:00
bayuzhen 7df7518982 处理大屏展示资源使用情况问题 2024-05-30 17:13:34 +08:00
bayuzhen 0c472d7357 处理大屏展示资源使用情况问题 2024-05-30 16:58:09 +08:00
bayuzhen 79ca2cfcc2 处理大屏展示资源使用情况问题 2024-05-30 16:23:12 +08:00
bayuzhen 07329a2e0c 处理大屏展示资源使用情况问题 2024-05-30 15:39:24 +08:00
bayuzhen 62b373324d 处理大屏展示资源使用情况问题 2024-05-30 15:00:24 +08:00
5 changed files with 37 additions and 23 deletions

View File

@ -13,6 +13,6 @@ public enum CloudProviderType {
OPENSTACK, VMWARE, ALIYUN, JDCLOUD, UNKNOWN, SCP, H3C, HMC, FUSIONCLOUD, TENCENT, F5, HUAWEI, XEN, POWERVC,
CLOUDOS, AZURE, KINGCLOUD, KUBERNETES, AWS, QCLOUD, TCE, PQCLOUD, MANAGEONE,
JUMPSERVER, HORIZON, TIANYI, HILLSTONE, CISCO, AGILE, NSX, CAMPUS, HCSO, VEEAM, SMARTX, VOLCENGINE,
FUSIONSPHERE,EASYSTACK;
FUSIONSPHERE, EASYSTACK, CLOUDTOWER;
}

View File

@ -74,6 +74,7 @@ public enum VendorType {
HCSO("HCSO"),
FUSIONSPHERE("FUSIONSPHERE"),
EASYSTACK("EASYSTACK"),
CLOUDTOWER("CLOUDTOWER"),
;
private String name;

View File

@ -233,6 +233,7 @@ public class IaasResourceOperate extends AbstractResourceOperate implements Init
ResourceOperateFactory.register("vmware.standard.server", this);
ResourceOperateFactory.register("sangfor.standard.server", this);
ResourceOperateFactory.register("smartx.standard.server", this);
ResourceOperateFactory.register("cloudtower.standard.server", this);
ResourceOperateFactory.register("openstack.standard.server", this);
ResourceOperateFactory.register("aliyun.standard.server", this);
ResourceOperateFactory.register("huawei.standard.server", this);

View File

@ -58,6 +58,7 @@ public class ServiceResourceMapping {
MAPPING.put(ResourceCategory.Computer, Lists.newArrayList("vmware.standard.server",
"sangfor.standard.server",
"smartx.standard.server",
"cloudtower.standard.server",
"openstack.standard.server",
"aliyun.standard.server",
"huawei.standard.server",

View File

@ -16,8 +16,10 @@ import com.bocloud.cos.model.ChargeResultTrend;
import com.bocloud.cos.model.ChargeTrendData;
import com.bocloud.cos.internal.ImsInternalService;
import com.bocloud.cos.utils.DateUtil;
import com.bocloud.rpc.interfaces.ims.ImsRpcService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
@ -35,6 +37,8 @@ import java.util.stream.Collectors;
public class ResourceScreenServiceImpl implements ResourceScreenService {
private final Logger logger = LoggerFactory.getLogger(ResourceScreenServiceImpl.class);
private final ImsInternalService imsInternalService;
@Autowired
private ImsRpcService imsRpcService;
public ResourceScreenServiceImpl(ImsInternalService imsInternalService) {
this.imsInternalService = imsInternalService;
@ -83,9 +87,16 @@ public class ResourceScreenServiceImpl implements ResourceScreenService {
List<CloudServer> cloudServers = imsInternalService.listVmsByVendor(null, false, requestContext);
//私有云平台
List<CloudVendor> cloudVendors = imsInternalService.listCloudVendor(null);
Set<String> vendors =
cloudVendors.stream().filter(cloudVendor -> !cloudVendor.getIsPublic())
.map(CloudVendor::getType).collect(Collectors.toSet());
Set<String> vendors = new HashSet<>();
Set<Long> vendorIds = new HashSet<>();
List<CloudVendor> noPublicVendors = new ArrayList<>();
for (CloudVendor cloudVendor : cloudVendors) {
if (!cloudVendor.getIsPublic()) {
noPublicVendors.add(cloudVendor);
vendors.add(cloudVendor.getType());
vendorIds.add(cloudVendor.getId());
}
}
List<CloudServer> priServers = cloudServers.stream().filter(
cloudServer -> null != cloudServer.getVendorType() && vendors.contains(cloudServer.getVendorType()))
.collect(Collectors.toList());
@ -105,15 +116,15 @@ public class ResourceScreenServiceImpl implements ResourceScreenService {
long cpuTotal = 0L;
Long memTotal = 0L;
int diskTotal = 0;
List<Server> hosts = imsInternalService.listHosts();
List<com.bocloud.ims.entity.resource.Server> hosts = imsRpcService.getServerAll(vendorIds);
hosts.removeIf(server -> null == server.getVendorId());
Map<Long, List<Server>> hostMap = hosts.stream().filter(server -> null != server.getVendorId())
.collect(Collectors.groupingBy(Server::getVendorId));
List<CloudVendor> vmVendors = imsInternalService.listCloudVendor(VendorType.VMWARE.name());
for (CloudVendor vendor : vmVendors) {
List<Server> servers = Optional.ofNullable(hostMap.get(vendor.getId())).orElse(new ArrayList<>());
for (Server server : servers) {
ServerConfig config = server.getConfig();
Map<Long, List<com.bocloud.ims.entity.resource.Server>> hostMap = hosts.stream().filter(server -> null != server.getVendorId())
.collect(Collectors.groupingBy(com.bocloud.ims.entity.resource.Server::getVendorId));
// List<CloudVendor> vmVendors = imsInternalService.listCloudVendor(VendorType.VMWARE.name());
for (CloudVendor vendor : noPublicVendors) {
List<com.bocloud.ims.entity.resource.Server> servers = Optional.ofNullable(hostMap.get(vendor.getId())).orElse(new ArrayList<>());
for (com.bocloud.ims.entity.resource.Server server : servers) {
com.bocloud.ims.entity.resource.ServerConfig config = server.getConfig();
//从平台获取超分比
List<CloudVendor> collect = cloudVendors.stream().filter(vendor1 -> vendor1.getId().equals(server.getVendorId())).collect(Collectors.toList());
Assert.notNull(collect, "云平台不存在");
@ -124,23 +135,23 @@ public class ResourceScreenServiceImpl implements ResourceScreenService {
excessRatio = Long.valueOf(String.valueOf(authentication.get("excessRatio")));
}
if (null != excessRatio && 0L != excessRatio) {
cpuTotal += config.getCpuCore() * config.getCpuAmount() * excessRatio;
memTotal += config.getMemoryCapacity().longValue() * excessRatio;
cpuTotal += (long) Optional.ofNullable(config.getCpuCore()).orElse(0) * Optional.ofNullable(config.getCpuAmount()).orElse(0) * excessRatio;
memTotal += Optional.ofNullable(config.getMemoryCapacity()).orElse(0.0).longValue() * excessRatio;
} else {
cpuTotal += (long) config.getCpuCore() * config.getCpuAmount();
memTotal += config.getMemoryCapacity().longValue();
cpuTotal += (long) Optional.ofNullable(config.getCpuCore()).orElse(0) * Optional.ofNullable(config.getCpuAmount()).orElse(0);
memTotal += Optional.ofNullable(config.getMemoryCapacity()).orElse(0.0).longValue();
}
diskTotal += config.getDiskCapacity().intValue();
diskTotal += Optional.ofNullable(config.getDiskCapacity()).orElse(0.0).intValue();
}
}
List<Server> opServers =
List<com.bocloud.ims.entity.resource.Server> opServers =
hosts.stream().filter(server -> server.getVendorType().equals(VendorType.OPENSTACK.name()))
.collect(Collectors.toList());
for (Server opServer : opServers) {
ServerConfig config = opServer.getConfig();
cpuTotal += (long) config.getCpuCore() * config.getCpuAmount();
diskTotal += config.getDiskCapacity().intValue();
memTotal += config.getMemoryCapacity().longValue();
for (com.bocloud.ims.entity.resource.Server opServer : opServers) {
com.bocloud.ims.entity.resource.ServerConfig config = opServer.getConfig();
cpuTotal += (long) Optional.ofNullable(config.getCpuCore()).orElse(0) * Optional.ofNullable(config.getCpuAmount()).orElse(0);
diskTotal += Optional.ofNullable(config.getDiskCapacity()).orElse(0.0).intValue();
memTotal += Optional.ofNullable(config.getMemoryCapacity()).orElse(0.0).longValue();
}
result.put("cpuTotal", cpuTotal);
result.put("memTotal", memTotal);