|
@@ -206,7 +206,7 @@ public class ProjectConsumer {
|
|
|
String osgbPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + osgbSuffix;
|
|
|
MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsgb, osgbPathOfLinux);
|
|
|
MinioUtil.uploadFromFile(minioClient, osgbPathOfLinux, bucketName, osgbPathOfMinio);
|
|
|
- log.info("cacheManualProject() 已经将 xosc、xodr、osgb 上传到 minio 的结果文件目录:" + projectResultPathOfMinio);
|
|
|
+ log.info("已经将 xosc、xodr、osgb 上传到 minio 的结果文件目录:" + projectResultPathOfMinio);
|
|
|
|
|
|
// 组装 task 消息
|
|
|
TaskMessageEntity taskMessageEntity = TaskMessageEntity.builder()
|
|
@@ -327,7 +327,7 @@ public class ProjectConsumer {
|
|
|
String osgbPathOfMinio = projectResultPathOfMinio + projectId + "/" + taskId + "/" + taskId + "." + osgbSuffix;
|
|
|
MinioUtil.downloadToFile(minioClient, bucketName, scenarioOsgb, osgbPathOfLinux);
|
|
|
MinioUtil.uploadFromFile(minioClient, osgbPathOfLinux, bucketName, osgbPathOfMinio);
|
|
|
- log.info("cacheManualProject() 已经将 xosc、xodr、osgb 上传到 minio 的结果文件目录:" + projectResultPathOfMinio);
|
|
|
+ log.info("已经将 xosc、xodr、osgb 上传到 minio 的结果文件目录:" + projectResultPathOfMinio);
|
|
|
|
|
|
// 组装 task 消息
|
|
|
// carsim 不需要查询模型参数
|
|
@@ -377,7 +377,7 @@ public class ProjectConsumer {
|
|
|
@SneakyThrows
|
|
|
public void cacheProject(ConsumerRecord<String, String> projectRecord) {
|
|
|
String initialProjectJson = projectRecord.value();
|
|
|
- log.info("cacheManualProject() 判断用户是否拥有可分配资源:" + initialProjectJson);
|
|
|
+ log.info("判断用户是否拥有可分配资源:" + initialProjectJson);
|
|
|
//1 读取 kafka 的 project 信息
|
|
|
ProjectMessageDTO projectMessageDTO = JsonUtil.jsonToBean(initialProjectJson, ProjectMessageDTO.class);
|
|
|
String projectId = projectMessageDTO.getProjectId(); // 手动执行项目 id 或 自动执行子项目 id
|
|
@@ -390,38 +390,38 @@ public class ProjectConsumer {
|
|
|
} else if (DictConstants.PROJECT_TYPE_AUTO_SUB.equals(projectType)) {
|
|
|
userId = autoSubProjectMapper.selectCreateUserById(projectId);
|
|
|
} else {
|
|
|
- log.error("cacheManualProject() 项目类型错误:" + initialProjectJson);
|
|
|
+ log.error("项目类型错误:" + initialProjectJson);
|
|
|
return;
|
|
|
}
|
|
|
if (StringUtil.isEmpty(userId)) {
|
|
|
- log.error("cacheManualProject() 未查询到项目创建人:" + initialProjectJson);
|
|
|
+ log.error("未查询到项目创建人:" + initialProjectJson);
|
|
|
return;
|
|
|
}
|
|
|
//3 获取用户类型(管理员账户、管理员子账户、普通账户、普通子账户)(独占、共享)
|
|
|
UserEntity userEntity = userMapper.selectById(userId);
|
|
|
- log.info("cacheManualProject() 项目 " + projectId + " 的创建人为:" + userEntity);
|
|
|
+ log.info("项目 " + projectId + " 的创建人为:" + userEntity);
|
|
|
String roleCode = userEntity.getRoleCode();
|
|
|
String useType = userEntity.getUseType();
|
|
|
ClusterEntity clusterEntity;
|
|
|
if (DictConstants.ROLE_CODE_SYSADMIN.equals(roleCode) || DictConstants.ROLE_CODE_ADMIN.equals(roleCode)) { //3-1 管理员账户和管理员子账户直接执行
|
|
|
- log.info("cacheManualProject() 项目 " + projectId + " 的创建人 " + userId + " 为管理员账户或管理员子账户,直接判断服务器能否执行。");
|
|
|
+ log.info("项目 " + projectId + " 的创建人 " + userId + " 为管理员账户或管理员子账户,直接判断服务器能否执行。");
|
|
|
PrefixEntity redisPrefix = projectUtil.getRedisPrefixByClusterIdAndProjectId(DictConstants.SYSTEM_CLUSTER_ID, projectId);
|
|
|
run(projectMessageDTO, DictConstants.SYSTEM_CLUSTER_ID, redisPrefix.getProjectRunningKey(), redisPrefix.getProjectWaitingKey());
|
|
|
return;
|
|
|
} else if (DictConstants.ROLE_CODE_UESR.equals(roleCode)) { //3-2 普通账户,不管是独占还是共享,都在自己的集群里排队,根据自己的独占节点排队
|
|
|
clusterEntity = clusterMapper.selectByUserId(userId);
|
|
|
- log.info("cacheManualProject() 项目 " + projectId + " 的创建人 " + userId + " 为普通账户(包括独占或共享都在自己的集群),集群为:" + clusterEntity);
|
|
|
+ log.info("项目 " + projectId + " 的创建人 " + userId + " 为普通账户(包括独占或共享都在自己的集群),集群为:" + clusterEntity);
|
|
|
} else if (DictConstants.ROLE_CODE_SUBUESR.equals(roleCode)) {
|
|
|
if (DictConstants.USER_TYPE_EXCLUSIVE.equals(useType)) { //3-3 普通子账户,根据自己的独占节点排队
|
|
|
clusterEntity = clusterMapper.selectByUserId(userId);
|
|
|
- log.info("cacheManualProject() 项目 " + projectId + " 的创建人 " + userId + " 为普通独占子账户(自己的集群),集群为:" + clusterEntity);
|
|
|
+ log.info("项目 " + projectId + " 的创建人 " + userId + " 为普通独占子账户(自己的集群),集群为:" + clusterEntity);
|
|
|
} else { //3-4 共享子账户,根据父账户的共享节点排队
|
|
|
String parentUserId = userEntity.getCreateUserId();
|
|
|
clusterEntity = clusterMapper.selectByUserId(parentUserId);
|
|
|
- log.info("cacheManualProject() 项目 " + projectId + " 的创建人 " + userId + " 为普通共享子账户(父账户的集群),集群为:" + clusterEntity);
|
|
|
+ log.info("项目 " + projectId + " 的创建人 " + userId + " 为普通共享子账户(父账户的集群),集群为:" + clusterEntity);
|
|
|
}
|
|
|
} else {
|
|
|
- log.error("cacheManualProject() 项目 " + projectId + " 的创建人 " + userId + " 为未知账户类型,不予执行!");
|
|
|
+ log.error("项目 " + projectId + " 的创建人 " + userId + " 为未知账户类型,不予执行!");
|
|
|
return;
|
|
|
}
|
|
|
// 获取拥有的节点数量,即仿真软件证书数量
|
|
@@ -435,7 +435,7 @@ public class ProjectConsumer {
|
|
|
if (currentParallelismSum + parallelism <= simulationLicenseNumber) {
|
|
|
run(projectMessageDTO, clusterId, redisPrefix.getProjectRunningKey(), redisPrefix.getProjectWaitingKey());
|
|
|
} else {
|
|
|
- log.info("cacheManualProject() 项目 " + projectId + " 并行度超出账户允许,加入等待队列,暂不执行。 ");
|
|
|
+ log.info("项目 " + projectId + " 并行度超出账户允许,加入等待队列,暂不执行。 ");
|
|
|
wait(redisPrefix.getProjectWaitingKey(), projectMessageDTO);
|
|
|
}
|
|
|
}
|