fix(系统管理): 补充资源池剩余并发数数据获取
This commit is contained in:
parent
504691496e
commit
49af0211e3
|
@ -19,7 +19,7 @@ public class TestResourcePoolDTO extends TestResourcePool {
|
|||
private int maxConcurrentNumber;
|
||||
|
||||
@Schema(description = "剩余并发数")
|
||||
private Boolean lastConcurrentNumber;;
|
||||
private int lastConcurrentNumber;;
|
||||
|
||||
@Schema(description = "组织名称集合")
|
||||
private List<String> orgNames;
|
||||
|
|
|
@ -3,11 +3,10 @@ package io.metersphere.system.service;
|
|||
import io.metersphere.sdk.constants.HttpMethodConstants;
|
||||
import io.metersphere.sdk.constants.OperationLogConstants;
|
||||
import io.metersphere.sdk.constants.ResourcePoolTypeEnum;
|
||||
import io.metersphere.sdk.dto.pool.ResourcePoolNodeMetric;
|
||||
import io.metersphere.sdk.exception.MSException;
|
||||
import io.metersphere.sdk.util.BeanUtils;
|
||||
import io.metersphere.sdk.util.CommonBeanFactory;
|
||||
import io.metersphere.sdk.util.JSON;
|
||||
import io.metersphere.sdk.util.Translator;
|
||||
import io.metersphere.sdk.util.*;
|
||||
import io.metersphere.system.controller.handler.ResultHolder;
|
||||
import io.metersphere.system.domain.*;
|
||||
import io.metersphere.system.dto.pool.*;
|
||||
import io.metersphere.system.dto.sdk.OptionDTO;
|
||||
|
@ -17,6 +16,7 @@ import io.metersphere.system.log.constants.OperationLogType;
|
|||
import io.metersphere.system.log.dto.LogDTO;
|
||||
import io.metersphere.system.mapper.*;
|
||||
import io.metersphere.system.uid.IDGenerator;
|
||||
import io.metersphere.system.utils.TaskRunnerClient;
|
||||
import jakarta.annotation.Resource;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
import org.apache.commons.lang3.BooleanUtils;
|
||||
|
@ -48,6 +48,8 @@ public class TestResourcePoolService {
|
|||
@Resource
|
||||
private ExtResourcePoolMapper extResourcePoolMapper;
|
||||
|
||||
private final static String poolControllerUrl = "http://%s:%s/metric";
|
||||
|
||||
|
||||
public void checkAndSaveOrgRelation(TestResourcePool testResourcePool, String id, TestResourceDTO testResourceDTO) {
|
||||
//防止前端传入的应用组织为空
|
||||
|
@ -111,7 +113,7 @@ public class TestResourcePoolService {
|
|||
if (CollectionUtils.isEmpty(testResourceDTO.getNodesList())) {
|
||||
testResourceDTO.setNodesList(new ArrayList<>());
|
||||
}
|
||||
if (StringUtils.equalsIgnoreCase(testResourcePool.getType(), ResourcePoolTypeEnum.NODE.getName())){
|
||||
if (StringUtils.equalsIgnoreCase(testResourcePool.getType(), ResourcePoolTypeEnum.NODE.getName())) {
|
||||
TestResourcePoolValidateService testResourcePoolValidateService = CommonBeanFactory.getBean(TestResourcePoolValidateService.class);
|
||||
if (testResourcePoolValidateService != null) {
|
||||
testResourcePoolValidateService.validateNodeList(testResourceDTO.getNodesList());
|
||||
|
@ -155,21 +157,48 @@ public class TestResourcePoolService {
|
|||
testResourcePoolDTO.setOrgNames(orgNameList);
|
||||
}
|
||||
//获取最大并发
|
||||
if (StringUtils.equalsIgnoreCase(pool.getType(),ResourcePoolTypeEnum.NODE.getName())) {
|
||||
if (StringUtils.equalsIgnoreCase(pool.getType(), ResourcePoolTypeEnum.NODE.getName())) {
|
||||
int maxConcurrentNumber = 0;
|
||||
int concurrentNumber = 0;
|
||||
int occupiedConcurrentNumber = 0;
|
||||
for (TestResourceNodeDTO testResourceNodeDTO : testResourceDTO.getNodesList()) {
|
||||
concurrentNumber = concurrentNumber+testResourceNodeDTO.getConcurrentNumber();
|
||||
maxConcurrentNumber = maxConcurrentNumber + testResourceNodeDTO.getConcurrentNumber();
|
||||
//TODO: 调接口获取剩余并发
|
||||
ResourcePoolNodeMetric nodeMetric = getNodeMetric();
|
||||
if (nodeMetric != null) {
|
||||
concurrentNumber = concurrentNumber + (nodeMetric.getConcurrentNumber() == null ? 0 :nodeMetric.getConcurrentNumber());
|
||||
occupiedConcurrentNumber = occupiedConcurrentNumber +(nodeMetric.getOccupiedConcurrentNumber() == null ? 0 :nodeMetric.getOccupiedConcurrentNumber());
|
||||
}
|
||||
}
|
||||
testResourcePoolDTO.setMaxConcurrentNumber(concurrentNumber);
|
||||
testResourcePoolDTO.setLastConcurrentNumber(concurrentNumber-occupiedConcurrentNumber);
|
||||
testResourcePoolDTO.setMaxConcurrentNumber(maxConcurrentNumber);
|
||||
} else {
|
||||
testResourcePoolDTO.setMaxConcurrentNumber(testResourceDTO.getConcurrentNumber());
|
||||
}
|
||||
//TODO: 调接口获取剩余并发
|
||||
|
||||
testResourcePoolDTOS.add(testResourcePoolDTO);
|
||||
});
|
||||
return testResourcePoolDTOS;
|
||||
}
|
||||
|
||||
public ResourcePoolNodeMetric getNodeMetric() {
|
||||
ResourcePoolNodeMetric resourcePoolNodeMetric = new ResourcePoolNodeMetric();
|
||||
try {
|
||||
ResultHolder body = TaskRunnerClient.get(poolControllerUrl);
|
||||
if (body == null) {
|
||||
return null;
|
||||
}
|
||||
if (body.getData() != null && StringUtils.equalsIgnoreCase("OK", body.getData().toString())) {
|
||||
return null;
|
||||
}
|
||||
resourcePoolNodeMetric = JSON.parseObject(JSON.toJSONString(body.getData()), ResourcePoolNodeMetric.class);
|
||||
} catch (Exception e) {
|
||||
LogUtils.error(e.getMessage(), e);
|
||||
}
|
||||
|
||||
return resourcePoolNodeMetric;
|
||||
}
|
||||
|
||||
public void checkTestResourcePool(TestResourcePool testResourcePool) {
|
||||
String resourcePoolName = testResourcePool.getName();
|
||||
TestResourcePoolExample example = new TestResourcePoolExample();
|
||||
|
@ -264,7 +293,7 @@ public class TestResourcePoolService {
|
|||
* 校验该组织是否有权限使用该资源池
|
||||
*
|
||||
* @param resourcePool 资源池对象
|
||||
* @param orgId 组织id
|
||||
* @param orgId 组织id
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean validateOrgResourcePool(TestResourcePool resourcePool, String orgId) {
|
||||
|
|
|
@ -632,9 +632,4 @@ class TestResourcePoolControllerTests extends BaseTest {
|
|||
return testResourcePoolDTO;
|
||||
}
|
||||
|
||||
@Test
|
||||
void resourceEnumName() throws Exception {
|
||||
System.out.println(ResourcePoolTypeEnum.K8S.getName());
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue