mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
v2.8.0_e初始化
1、测试代码,开源用户尽量不要使用; 2、包含Kafka-HA的相关功能; 3、并非基于2.6.0拉的分支,是基于master分支的 commit-id:462303fca0拉的2.8.0_e的分支。出现这个情况的原因是v2.6.0的代码并不是最新的,2.x最新的代码是462303fca0这个commit对应的代码;
This commit is contained in:
@@ -4,6 +4,8 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -13,6 +15,8 @@ import java.util.List;
|
||||
*/
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description = "Quota工单审批参数")
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class OrderHandleQuotaDTO {
|
||||
@ApiModelProperty(value = "分区数, 非必须")
|
||||
private Integer partitionNum;
|
||||
|
||||
@@ -3,24 +3,31 @@ package com.xiaojukeji.kafka.manager.bpm.order.impl;
|
||||
import com.alibaba.fastjson.JSONException;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xiaojukeji.kafka.manager.account.AccountService;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.gateway.TopicQuota;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.apply.OrderExtensionAuthorityDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.AbstractOrderDetailData;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.OrderDetailApplyAuthorityDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.handle.OrderHandleBaseDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AppDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AuthorityDO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import com.xiaojukeji.kafka.manager.bpm.order.AbstractAuthorityOrder;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.ha.HaRelationTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.gateway.TopicQuota;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.LogicalClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.OrderDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.TopicDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AppDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AuthorityDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ha.HaASRelationDO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import com.xiaojukeji.kafka.manager.service.biz.ha.HaASRelationManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.LogicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.bpm.order.AbstractAuthorityOrder;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.PhysicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.service.service.TopicManagerService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.AppService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.AuthorityService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.TopicManagerService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.ha.HaTopicService;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -52,6 +59,12 @@ public class ApplyAuthorityOrder extends AbstractAuthorityOrder {
|
||||
@Autowired
|
||||
private TopicManagerService topicManagerService;
|
||||
|
||||
@Autowired
|
||||
private HaTopicService haTopicService;
|
||||
|
||||
@Autowired
|
||||
private HaASRelationManager haASRelationManager;
|
||||
|
||||
@Override
|
||||
public AbstractOrderDetailData getOrderExtensionDetailData(String extensions) {
|
||||
OrderDetailApplyAuthorityDTO orderDetailDTO = new OrderDetailApplyAuthorityDTO();
|
||||
@@ -116,21 +129,40 @@ public class ApplyAuthorityOrder extends AbstractAuthorityOrder {
|
||||
if (ValidateUtils.isNull(physicalClusterId)) {
|
||||
return ResultStatus.CLUSTER_NOT_EXIST;
|
||||
}
|
||||
TopicQuota topicQuotaDO = new TopicQuota();
|
||||
topicQuotaDO.setAppId(orderExtensionDTO.getAppId());
|
||||
topicQuotaDO.setTopicName(orderExtensionDTO.getTopicName());
|
||||
topicQuotaDO.setClusterId(physicalClusterId);
|
||||
|
||||
AuthorityDO authorityDO = new AuthorityDO();
|
||||
authorityDO.setAccess(orderExtensionDTO.getAccess());
|
||||
authorityDO.setAppId(orderExtensionDTO.getAppId());
|
||||
authorityDO.setTopicName(orderExtensionDTO.getTopicName());
|
||||
authorityDO.setClusterId(physicalClusterId);
|
||||
// authorityDO.setApplicant(orderDO.getApplicant());
|
||||
HaASRelationDO relation = haASRelationManager.getASRelation(physicalClusterId, orderExtensionDTO.getTopicName());
|
||||
|
||||
if (authorityService.addAuthorityAndQuota(authorityDO, topicQuotaDO) < 1) {
|
||||
return ResultStatus.OPERATION_FAILED;
|
||||
//是否高可用topic
|
||||
Integer haRelation = HaRelationTypeEnum.UNKNOWN.getCode();
|
||||
if (relation != null){
|
||||
//用户侧不允许操作备topic
|
||||
if (relation.getStandbyClusterPhyId().equals(orderExtensionDTO.getClusterId())){
|
||||
return ResultStatus.OPERATION_FORBIDDEN;
|
||||
}
|
||||
haRelation = HaRelationTypeEnum.ACTIVE.getCode();
|
||||
}
|
||||
|
||||
ResultStatus resultStatus = applyAuthority(physicalClusterId,
|
||||
orderExtensionDTO.getTopicName(),
|
||||
userName,
|
||||
orderExtensionDTO.getAppId(),
|
||||
orderExtensionDTO.getAccess(),
|
||||
haRelation);
|
||||
if (haRelation.equals(HaRelationTypeEnum.UNKNOWN.getCode())
|
||||
&& ResultStatus.SUCCESS.getCode() != resultStatus.getCode()){
|
||||
return resultStatus;
|
||||
}
|
||||
|
||||
//给备topic添加权限
|
||||
if (relation.getActiveResName().equals(orderExtensionDTO.getTopicName())){
|
||||
return applyAuthority(relation.getStandbyClusterPhyId(),
|
||||
relation.getStandbyResName(),
|
||||
userName,
|
||||
orderExtensionDTO.getAppId(),
|
||||
orderExtensionDTO.getAccess(),
|
||||
HaRelationTypeEnum.STANDBY.getCode());
|
||||
}
|
||||
|
||||
return ResultStatus.SUCCESS;
|
||||
}
|
||||
|
||||
@@ -158,4 +190,39 @@ public class ApplyAuthorityOrder extends AbstractAuthorityOrder {
|
||||
}
|
||||
return approverList;
|
||||
}
|
||||
|
||||
private ResultStatus applyAuthority(Long physicalClusterId, String topicName, String userName, String appId, Integer access, Integer haRelation){
|
||||
ClusterDO clusterDO = PhysicalClusterMetadataManager.getClusterFromCache(physicalClusterId);
|
||||
if (clusterDO == null){
|
||||
return ResultStatus.CLUSTER_NOT_EXIST;
|
||||
}
|
||||
TopicQuota topicQuotaDO = new TopicQuota();
|
||||
topicQuotaDO.setAppId(appId);
|
||||
topicQuotaDO.setTopicName(topicName);
|
||||
topicQuotaDO.setClusterId(physicalClusterId);
|
||||
|
||||
AuthorityDO authorityDO = new AuthorityDO();
|
||||
authorityDO.setAccess(access);
|
||||
authorityDO.setAppId(appId);
|
||||
authorityDO.setTopicName(topicName);
|
||||
authorityDO.setClusterId(physicalClusterId);
|
||||
|
||||
if (authorityService.addAuthorityAndQuota(authorityDO, topicQuotaDO) < 1) {
|
||||
return ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
|
||||
Result result = new Result();
|
||||
HaASRelationDO relation = haASRelationManager.getASRelation(physicalClusterId, topicName);
|
||||
if (HaRelationTypeEnum.STANDBY.getCode() == haRelation){
|
||||
result = haTopicService.activeUserHAInKafka(PhysicalClusterMetadataManager.getClusterFromCache(relation.getActiveClusterPhyId()),
|
||||
PhysicalClusterMetadataManager.getClusterFromCache(relation.getStandbyClusterPhyId()),
|
||||
appId,
|
||||
userName);
|
||||
}
|
||||
if (result.failed()){
|
||||
return ResultStatus.ZOOKEEPER_OPERATE_FAILED;
|
||||
}
|
||||
return ResultStatus.SUCCESS;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.xiaojukeji.kafka.manager.bpm.order.impl;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xiaojukeji.kafka.manager.account.AccountService;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.OrderTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.apply.OrderExtensionQuotaDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.apply.PartitionOrderExtensionDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.AbstractOrderDetailData;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.PartitionOrderDetailData;
|
||||
@@ -12,16 +13,17 @@ import com.xiaojukeji.kafka.manager.bpm.order.AbstractOrder;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.apply.OrderExtensionQuotaDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.metrics.TopicMetrics;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.LogicalClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.OrderDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.RegionDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ha.HaASRelationDO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.DateUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ListUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.TopicMetadata;
|
||||
import com.xiaojukeji.kafka.manager.service.biz.ha.HaASRelationManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.KafkaMetricsCache;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.LogicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.PhysicalClusterMetadataManager;
|
||||
@@ -61,6 +63,9 @@ public class ApplyPartitionOrder extends AbstractOrder {
|
||||
@Autowired
|
||||
private RegionService regionService;
|
||||
|
||||
@Autowired
|
||||
private HaASRelationManager haASRelationManager;
|
||||
|
||||
@Override
|
||||
public AbstractOrderDetailData getOrderExtensionDetailData(String extensions) {
|
||||
PartitionOrderDetailData detailData = new PartitionOrderDetailData();
|
||||
@@ -169,28 +174,30 @@ public class ApplyPartitionOrder extends AbstractOrder {
|
||||
if (ValidateUtils.isNull(physicalClusterId)) {
|
||||
return ResultStatus.CLUSTER_NOT_EXIST;
|
||||
}
|
||||
if (!PhysicalClusterMetadataManager.isTopicExistStrictly(physicalClusterId, extensionDTO.getTopicName())) {
|
||||
return ResultStatus.TOPIC_NOT_EXIST;
|
||||
}
|
||||
if (handleDTO.isExistNullParam()) {
|
||||
return ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
ClusterDO clusterDO = clusterService.getById(physicalClusterId);
|
||||
return adminService.expandPartitions(
|
||||
clusterDO,
|
||||
extensionDTO.getTopicName(),
|
||||
handleDTO.getPartitionNum(),
|
||||
handleDTO.getRegionId(),
|
||||
handleDTO.getBrokerIdList(),
|
||||
userName
|
||||
);
|
||||
}
|
||||
|
||||
private OrderExtensionQuotaDTO supplyExtension(OrderExtensionQuotaDTO extensionDTO, OrderHandleQuotaDTO handleDTO){
|
||||
extensionDTO.setPartitionNum(handleDTO.getPartitionNum());
|
||||
extensionDTO.setRegionId(handleDTO.getRegionId());
|
||||
extensionDTO.setBrokerIdList(handleDTO.getBrokerIdList());
|
||||
return extensionDTO;
|
||||
//备topic扩分区
|
||||
HaASRelationDO relationDO = haASRelationManager.getASRelation(physicalClusterId, extensionDTO.getTopicName());
|
||||
if (relationDO != null){
|
||||
//用户侧不允许操作备topic
|
||||
if (relationDO.getStandbyClusterPhyId().equals(extensionDTO.getClusterId())){
|
||||
return ResultStatus.OPERATION_FORBIDDEN;
|
||||
}
|
||||
ResultStatus rv = apply(relationDO.getStandbyClusterPhyId(),
|
||||
relationDO.getStandbyResName(),
|
||||
userName,
|
||||
handleDTO.getPartitionNum(),
|
||||
null,
|
||||
PhysicalClusterMetadataManager.getBrokerIdList(relationDO.getStandbyClusterPhyId()));
|
||||
if (ResultStatus.SUCCESS.getCode() != rv.getCode()){
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
|
||||
return apply(physicalClusterId, extensionDTO.getTopicName(), userName,
|
||||
handleDTO.getPartitionNum(), handleDTO.getRegionId(), handleDTO.getBrokerIdList());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -206,4 +213,29 @@ public class ApplyPartitionOrder extends AbstractOrder {
|
||||
return accountService.getAdminOrderHandlerFromCache();
|
||||
}
|
||||
|
||||
private ResultStatus apply(Long physicalClusterId, String topicName, String userName, int partitionNum, Long regionId, List<Integer> brokerIds){
|
||||
ClusterDO clusterDO = clusterService.getById(physicalClusterId);
|
||||
if (clusterDO == null){
|
||||
return ResultStatus.CLUSTER_NOT_EXIST;
|
||||
}
|
||||
|
||||
if (!PhysicalClusterMetadataManager.isTopicExistStrictly(physicalClusterId, topicName)) {
|
||||
return ResultStatus.TOPIC_NOT_EXIST;
|
||||
}
|
||||
return adminService.expandPartitions(
|
||||
clusterDO,
|
||||
topicName,
|
||||
partitionNum,
|
||||
regionId,
|
||||
brokerIds,
|
||||
userName
|
||||
);
|
||||
}
|
||||
|
||||
private OrderExtensionQuotaDTO supplyExtension(OrderExtensionQuotaDTO extensionDTO, OrderHandleQuotaDTO handleDTO){
|
||||
extensionDTO.setPartitionNum(handleDTO.getPartitionNum());
|
||||
extensionDTO.setRegionId(handleDTO.getRegionId());
|
||||
extensionDTO.setBrokerIdList(handleDTO.getBrokerIdList());
|
||||
return extensionDTO;
|
||||
}
|
||||
}
|
||||
@@ -3,39 +3,46 @@ package com.xiaojukeji.kafka.manager.bpm.order.impl;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xiaojukeji.kafka.manager.account.AccountService;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.OrderTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.bpm.order.AbstractOrder;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.gateway.TopicQuota;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.apply.OrderExtensionQuotaDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.AbstractOrderDetailData;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.QuotaOrderDetailData;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.handle.OrderHandleBaseDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.handle.OrderHandleQuotaDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.order.AbstractOrder;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.account.Account;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.gateway.TopicQuota;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.metrics.TopicMetrics;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.LogicalClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.OrderDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.RegionDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AppDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ha.HaASRelationDO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.DateUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ListUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.NumberUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.brokers.TopicMetadata;
|
||||
import com.xiaojukeji.kafka.manager.common.zookeeper.znode.config.TopicQuotaData;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.OrderDO;
|
||||
import com.xiaojukeji.kafka.manager.service.biz.ha.HaASRelationManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.KafkaMetricsCache;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.LogicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.PhysicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.service.service.*;
|
||||
import com.xiaojukeji.kafka.manager.service.service.AdminService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.ClusterService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.RegionService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.TopicManagerService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.AppService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.QuotaService;
|
||||
import com.xiaojukeji.kafka.manager.service.utils.KafkaZookeeperUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
@@ -68,6 +75,9 @@ public class ApplyQuotaOrder extends AbstractOrder {
|
||||
@Autowired
|
||||
private RegionService regionService;
|
||||
|
||||
@Autowired
|
||||
private HaASRelationManager haASRelationManager;
|
||||
|
||||
@Override
|
||||
public AbstractOrderDetailData getOrderExtensionDetailData(String extensions) {
|
||||
QuotaOrderDetailData orderDetailDTO = new QuotaOrderDetailData();
|
||||
@@ -198,40 +208,40 @@ public class ApplyQuotaOrder extends AbstractOrder {
|
||||
if (ValidateUtils.isNull(physicalClusterId)) {
|
||||
return ResultStatus.CLUSTER_NOT_EXIST;
|
||||
}
|
||||
if (!PhysicalClusterMetadataManager.isTopicExistStrictly(physicalClusterId, extensionDTO.getTopicName())) {
|
||||
return ResultStatus.TOPIC_NOT_EXIST;
|
||||
}
|
||||
if (!handleDTO.isExistNullParam()) {
|
||||
ClusterDO clusterDO = clusterService.getById(physicalClusterId);
|
||||
ResultStatus resultStatus = adminService.expandPartitions(
|
||||
clusterDO,
|
||||
extensionDTO.getTopicName(),
|
||||
handleDTO.getPartitionNum(),
|
||||
handleDTO.getRegionId(),
|
||||
handleDTO.getBrokerIdList(),
|
||||
userName);
|
||||
if (!ResultStatus.SUCCESS.equals(resultStatus)) {
|
||||
return resultStatus;
|
||||
|
||||
//备topic调整quota
|
||||
HaASRelationDO relationDO = haASRelationManager.getASRelation(physicalClusterId, extensionDTO.getTopicName());
|
||||
if (relationDO != null){
|
||||
if (relationDO.getStandbyClusterPhyId().equals(physicalClusterId)){
|
||||
return ResultStatus.OPERATION_FORBIDDEN;
|
||||
}
|
||||
List<Integer> standbyBrokerIds = PhysicalClusterMetadataManager.getBrokerIdList(relationDO.getStandbyClusterPhyId());
|
||||
if(standbyBrokerIds == null || standbyBrokerIds.isEmpty()){
|
||||
return ResultStatus.BROKER_NOT_EXIST;
|
||||
}
|
||||
OrderExtensionQuotaDTO standbyDto = new OrderExtensionQuotaDTO();
|
||||
standbyDto.setClusterId(relationDO.getStandbyClusterPhyId());
|
||||
standbyDto.setTopicName(relationDO.getStandbyResName());
|
||||
standbyDto.setConsumeQuota(extensionDTO.getConsumeQuota());
|
||||
standbyDto.setProduceQuota(extensionDTO.getProduceQuota());
|
||||
standbyDto.setAppId(extensionDTO.getAppId());
|
||||
|
||||
ResultStatus rv = applyQuota(userName,
|
||||
new OrderHandleQuotaDTO(handleDTO.getPartitionNum(), null, standbyBrokerIds),
|
||||
standbyDto);
|
||||
if (ResultStatus.SUCCESS.getCode() != rv.getCode()){
|
||||
return rv;
|
||||
}
|
||||
}
|
||||
TopicQuota topicQuotaDO = new TopicQuota();
|
||||
topicQuotaDO.setAppId(extensionDTO.getAppId());
|
||||
topicQuotaDO.setTopicName(extensionDTO.getTopicName());
|
||||
topicQuotaDO.setConsumeQuota(extensionDTO.getConsumeQuota());
|
||||
topicQuotaDO.setProduceQuota(extensionDTO.getProduceQuota());
|
||||
topicQuotaDO.setClusterId(physicalClusterId);
|
||||
if (quotaService.addTopicQuota(topicQuotaDO) > 0) {
|
||||
orderDO.setExtensions(JSONObject.toJSONString(supplyExtension(extensionDTO, handleDTO)));
|
||||
return ResultStatus.SUCCESS;
|
||||
}
|
||||
return ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
|
||||
private OrderExtensionQuotaDTO supplyExtension(OrderExtensionQuotaDTO extensionDTO, OrderHandleQuotaDTO handleDTO){
|
||||
extensionDTO.setPartitionNum(handleDTO.getPartitionNum());
|
||||
extensionDTO.setRegionId(handleDTO.getRegionId());
|
||||
extensionDTO.setBrokerIdList(handleDTO.getBrokerIdList());
|
||||
return extensionDTO;
|
||||
extensionDTO.setClusterId(physicalClusterId);
|
||||
ResultStatus resultStatus = applyQuota(userName, handleDTO, extensionDTO);
|
||||
if (ResultStatus.SUCCESS.getCode() != resultStatus.getCode()){
|
||||
return resultStatus;
|
||||
}
|
||||
orderDO.setExtensions(JSONObject.toJSONString(supplyExtension(extensionDTO, handleDTO)));
|
||||
|
||||
return ResultStatus.SUCCESS;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -246,4 +256,43 @@ public class ApplyQuotaOrder extends AbstractOrder {
|
||||
public List<Account> getApproverList(String extensions) {
|
||||
return accountService.getAdminOrderHandlerFromCache();
|
||||
}
|
||||
|
||||
private ResultStatus applyQuota(
|
||||
String userName,
|
||||
OrderHandleQuotaDTO handleDTO,
|
||||
OrderExtensionQuotaDTO dto){
|
||||
if (!PhysicalClusterMetadataManager.isTopicExistStrictly(dto.getClusterId(), dto.getTopicName())) {
|
||||
return ResultStatus.TOPIC_NOT_EXIST;
|
||||
}
|
||||
if (!handleDTO.isExistNullParam()) {
|
||||
ClusterDO clusterDO = clusterService.getById(dto.getClusterId());
|
||||
ResultStatus resultStatus = adminService.expandPartitions(
|
||||
clusterDO,
|
||||
dto.getTopicName(),
|
||||
handleDTO.getPartitionNum(),
|
||||
handleDTO.getRegionId(),
|
||||
handleDTO.getBrokerIdList(),
|
||||
userName);
|
||||
if (!ResultStatus.SUCCESS.equals(resultStatus)) {
|
||||
return resultStatus;
|
||||
}
|
||||
}
|
||||
TopicQuota topicQuotaDO = new TopicQuota();
|
||||
topicQuotaDO.setAppId(dto.getAppId());
|
||||
topicQuotaDO.setTopicName(dto.getTopicName());
|
||||
topicQuotaDO.setConsumeQuota(dto.getConsumeQuota());
|
||||
topicQuotaDO.setProduceQuota(dto.getProduceQuota());
|
||||
topicQuotaDO.setClusterId(dto.getClusterId());
|
||||
if (quotaService.addTopicQuota(topicQuotaDO) > 0) {
|
||||
return ResultStatus.SUCCESS;
|
||||
}
|
||||
return ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
|
||||
private OrderExtensionQuotaDTO supplyExtension(OrderExtensionQuotaDTO extensionDTO, OrderHandleQuotaDTO handleDTO){
|
||||
extensionDTO.setPartitionNum(handleDTO.getPartitionNum());
|
||||
extensionDTO.setRegionId(handleDTO.getRegionId());
|
||||
extensionDTO.setBrokerIdList(handleDTO.getBrokerIdList());
|
||||
return extensionDTO;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,27 +2,29 @@ package com.xiaojukeji.kafka.manager.bpm.order.impl;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.OrderTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AppDO;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.Constant;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.topic.TopicConnection;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.apply.OrderExtensionDeleteTopicDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.AbstractOrderDetailData;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.entry.detail.OrderDetailDeleteTopicDTO;
|
||||
import com.xiaojukeji.kafka.manager.bpm.common.handle.OrderHandleBaseDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.vo.normal.cluster.ClusterNameDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import com.xiaojukeji.kafka.manager.bpm.order.AbstractTopicOrder;
|
||||
import com.xiaojukeji.kafka.manager.common.constant.Constant;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ao.topic.TopicConnection;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.OrderDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.TopicDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.gateway.AppDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ha.HaASRelationDO;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.vo.normal.cluster.ClusterNameDTO;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.ValidateUtils;
|
||||
import com.xiaojukeji.kafka.manager.service.biz.ha.HaASRelationManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.LogicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.service.cache.PhysicalClusterMetadataManager;
|
||||
import com.xiaojukeji.kafka.manager.bpm.order.AbstractTopicOrder;
|
||||
import com.xiaojukeji.kafka.manager.service.service.AdminService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.AppService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.ClusterService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.TopicManagerService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.AppService;
|
||||
import com.xiaojukeji.kafka.manager.service.service.gateway.TopicConnectionService;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
@@ -54,6 +56,9 @@ public class DeleteTopicOrder extends AbstractTopicOrder {
|
||||
@Autowired
|
||||
private TopicConnectionService connectionService;
|
||||
|
||||
@Autowired
|
||||
private HaASRelationManager haASRelationManager;
|
||||
|
||||
@Override
|
||||
public AbstractOrderDetailData getOrderExtensionDetailData(String extensions) {
|
||||
OrderDetailDeleteTopicDTO orderDetailDTO = new OrderDetailDeleteTopicDTO();
|
||||
@@ -128,26 +133,32 @@ public class DeleteTopicOrder extends AbstractTopicOrder {
|
||||
if (ValidateUtils.isNull(physicalClusterId)) {
|
||||
return ResultStatus.CLUSTER_NOT_EXIST;
|
||||
}
|
||||
|
||||
HaASRelationDO relationDO = haASRelationManager.getASRelation(physicalClusterId, extensionDTO.getTopicName());
|
||||
if (relationDO != null) {
|
||||
//高可用topic需要先解除高可用关系才能删除
|
||||
return ResultStatus.HA_TOPIC_DELETE_FORBIDDEN;
|
||||
}
|
||||
|
||||
return delTopic(physicalClusterId, extensionDTO.getTopicName(), userName);
|
||||
}
|
||||
|
||||
private ResultStatus delTopic(Long physicalClusterId, String topicName, String userName){
|
||||
ClusterDO clusterDO = clusterService.getById(physicalClusterId);
|
||||
if (!PhysicalClusterMetadataManager.isTopicExistStrictly(physicalClusterId, extensionDTO.getTopicName())) {
|
||||
if (!PhysicalClusterMetadataManager.isTopicExistStrictly(physicalClusterId, topicName)) {
|
||||
return ResultStatus.TOPIC_NOT_EXIST;
|
||||
}
|
||||
|
||||
// 最近topic是否还有生产或者消费操作
|
||||
if (connectionService.isExistConnection(
|
||||
physicalClusterId,
|
||||
extensionDTO.getTopicName(),
|
||||
topicName,
|
||||
new Date(System.currentTimeMillis() - Constant.TOPIC_CONNECTION_LATEST_TIME_MS),
|
||||
new Date())
|
||||
) {
|
||||
) {
|
||||
return ResultStatus.OPERATION_FORBIDDEN;
|
||||
}
|
||||
|
||||
ResultStatus resultStatus = adminService.deleteTopic(clusterDO, extensionDTO.getTopicName(), userName);
|
||||
|
||||
if (!ResultStatus.SUCCESS.equals(resultStatus)) {
|
||||
return resultStatus;
|
||||
}
|
||||
return resultStatus;
|
||||
return adminService.deleteTopic(clusterDO, topicName, userName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,6 +155,7 @@ public class ThirdPartDeleteTopicOrder extends AbstractTopicOrder {
|
||||
return ResultStatus.USER_WITHOUT_AUTHORITY;
|
||||
}
|
||||
|
||||
|
||||
ResultStatus resultStatus = adminService.deleteTopic(clusterDO, extensionDTO.getTopicName(), userName);
|
||||
if (!ResultStatus.SUCCESS.equals(resultStatus)) {
|
||||
return resultStatus;
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
package com.xiaojukeji.kafka.manager.kcm.common.bizenum;
|
||||
|
||||
/**
|
||||
* 任务动作
|
||||
* @author zengqiao
|
||||
* @date 20/4/26
|
||||
*/
|
||||
public enum ClusterTaskActionEnum {
|
||||
UNKNOWN("unknown"),
|
||||
|
||||
START("start"),
|
||||
PAUSE("pause"),
|
||||
|
||||
IGNORE("ignore"),
|
||||
CANCEL("cancel"),
|
||||
|
||||
REDO("redo"),
|
||||
KILL("kill"),
|
||||
|
||||
ROLLBACK("rollback"),
|
||||
|
||||
;
|
||||
|
||||
private String action;
|
||||
|
||||
ClusterTaskActionEnum(String action) {
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
public String getAction() {
|
||||
return action;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "ClusterTaskActionEnum{" +
|
||||
"action='" + action + '\'' +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,7 @@
|
||||
package com.xiaojukeji.kafka.manager.kcm.component.agent;
|
||||
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.TaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskStateEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskSubStateEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskLog;
|
||||
@@ -37,7 +37,7 @@ public abstract class AbstractAgent {
|
||||
* @param actionEnum 执行动作
|
||||
* @return true:触发成功, false:触发失败
|
||||
*/
|
||||
public abstract boolean actionTask(Long taskId, ClusterTaskActionEnum actionEnum);
|
||||
public abstract boolean actionTask(Long taskId, TaskActionEnum actionEnum);
|
||||
|
||||
/**
|
||||
* 执行任务
|
||||
@@ -46,7 +46,7 @@ public abstract class AbstractAgent {
|
||||
* @param hostname 具体主机
|
||||
* @return true:触发成功, false:触发失败
|
||||
*/
|
||||
public abstract boolean actionHostTask(Long taskId, ClusterTaskActionEnum actionEnum, String hostname);
|
||||
public abstract boolean actionHostTask(Long taskId, TaskActionEnum actionEnum, String hostname);
|
||||
|
||||
/**
|
||||
* 获取任务运行的状态[阻塞, 执行中, 完成等]
|
||||
|
||||
@@ -3,7 +3,7 @@ package com.xiaojukeji.kafka.manager.kcm.component.agent.n9e;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.KafkaFileEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.Constant;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.TaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskLog;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.CreationTaskData;
|
||||
@@ -94,7 +94,7 @@ public class N9e extends AbstractAgent {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean actionTask(Long taskId, ClusterTaskActionEnum actionEnum) {
|
||||
public boolean actionTask(Long taskId, TaskActionEnum actionEnum) {
|
||||
Map<String, Object> param = new HashMap<>(1);
|
||||
param.put("action", actionEnum.getAction());
|
||||
|
||||
@@ -115,7 +115,7 @@ public class N9e extends AbstractAgent {
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean actionHostTask(Long taskId, ClusterTaskActionEnum actionEnum, String hostname) {
|
||||
public boolean actionHostTask(Long taskId, TaskActionEnum actionEnum, String hostname) {
|
||||
Map<String, Object> params = new HashMap<>(2);
|
||||
params.put("action", actionEnum.getAction());
|
||||
params.put("hostname", hostname);
|
||||
@@ -234,7 +234,7 @@ public class N9e extends AbstractAgent {
|
||||
n9eCreationTask.setScript(this.script);
|
||||
n9eCreationTask.setArgs(sb.toString());
|
||||
n9eCreationTask.setAccount(this.account);
|
||||
n9eCreationTask.setAction(ClusterTaskActionEnum.PAUSE.getAction());
|
||||
n9eCreationTask.setAction(TaskActionEnum.PAUSE.getAction());
|
||||
n9eCreationTask.setHosts(creationTaskData.getHostList());
|
||||
return n9eCreationTask;
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.xiaojukeji.kafka.manager.common.utils.ListUtils;
|
||||
import com.xiaojukeji.kafka.manager.common.utils.SpringTool;
|
||||
import com.xiaojukeji.kafka.manager.kcm.ClusterTaskService;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.Converters;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.TaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ClusterTaskConstant;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskLog;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskSubStatus;
|
||||
@@ -93,38 +93,38 @@ public class ClusterTaskServiceImpl implements ClusterTaskService {
|
||||
return ResultStatus.CALL_CLUSTER_TASK_AGENT_FAILED;
|
||||
}
|
||||
|
||||
if (ClusterTaskActionEnum.START.getAction().equals(action) && ClusterTaskStateEnum.BLOCKED.equals(stateEnumResult.getData())) {
|
||||
if (TaskActionEnum.START.getAction().equals(action) && ClusterTaskStateEnum.BLOCKED.equals(stateEnumResult.getData())) {
|
||||
// 暂停状态, 可以执行开始
|
||||
return actionTaskExceptRollbackAction(agentTaskId, ClusterTaskActionEnum.START, "");
|
||||
return actionTaskExceptRollbackAction(agentTaskId, TaskActionEnum.START, "");
|
||||
}
|
||||
if (ClusterTaskActionEnum.PAUSE.getAction().equals(action) && ClusterTaskStateEnum.RUNNING.equals(stateEnumResult.getData())) {
|
||||
if (TaskActionEnum.PAUSE.getAction().equals(action) && ClusterTaskStateEnum.RUNNING.equals(stateEnumResult.getData())) {
|
||||
// 运行状态, 可以执行暂停
|
||||
return actionTaskExceptRollbackAction(agentTaskId, ClusterTaskActionEnum.PAUSE, "");
|
||||
return actionTaskExceptRollbackAction(agentTaskId, TaskActionEnum.PAUSE, "");
|
||||
}
|
||||
if (ClusterTaskActionEnum.IGNORE.getAction().equals(action)) {
|
||||
if (TaskActionEnum.IGNORE.getAction().equals(action)) {
|
||||
// 忽略 & 取消随时都可以操作
|
||||
return actionTaskExceptRollbackAction(agentTaskId, ClusterTaskActionEnum.IGNORE, hostname);
|
||||
return actionTaskExceptRollbackAction(agentTaskId, TaskActionEnum.IGNORE, hostname);
|
||||
}
|
||||
if (ClusterTaskActionEnum.CANCEL.getAction().equals(action)) {
|
||||
if (TaskActionEnum.CANCEL.getAction().equals(action)) {
|
||||
// 忽略 & 取消随时都可以操作
|
||||
return actionTaskExceptRollbackAction(agentTaskId, ClusterTaskActionEnum.CANCEL, hostname);
|
||||
return actionTaskExceptRollbackAction(agentTaskId, TaskActionEnum.CANCEL, hostname);
|
||||
}
|
||||
if ((!ClusterTaskStateEnum.FINISHED.equals(stateEnumResult.getData()) || !rollback)
|
||||
&& ClusterTaskActionEnum.ROLLBACK.getAction().equals(action)) {
|
||||
&& TaskActionEnum.ROLLBACK.getAction().equals(action)) {
|
||||
// 暂未操作完时可以回滚, 回滚所有操作过的机器到上一个版本
|
||||
return actionTaskRollback(clusterTaskDO);
|
||||
}
|
||||
return ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
|
||||
private ResultStatus actionTaskExceptRollbackAction(Long agentId, ClusterTaskActionEnum actionEnum, String hostname) {
|
||||
private ResultStatus actionTaskExceptRollbackAction(Long agentId, TaskActionEnum actionEnum, String hostname) {
|
||||
if (!ValidateUtils.isBlank(hostname)) {
|
||||
return actionHostTaskExceptRollbackAction(agentId, actionEnum, hostname);
|
||||
}
|
||||
return abstractAgent.actionTask(agentId, actionEnum)? ResultStatus.SUCCESS: ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
|
||||
private ResultStatus actionHostTaskExceptRollbackAction(Long agentId, ClusterTaskActionEnum actionEnum, String hostname) {
|
||||
private ResultStatus actionHostTaskExceptRollbackAction(Long agentId, TaskActionEnum actionEnum, String hostname) {
|
||||
return abstractAgent.actionHostTask(agentId, actionEnum, hostname)? ResultStatus.SUCCESS: ResultStatus.OPERATION_FAILED;
|
||||
}
|
||||
|
||||
@@ -176,7 +176,7 @@ public class ClusterTaskServiceImpl implements ClusterTaskService {
|
||||
if (clusterTaskDao.updateRollback(clusterTaskDO) <= 0) {
|
||||
return ResultStatus.MYSQL_ERROR;
|
||||
}
|
||||
abstractAgent.actionTask(clusterTaskDO.getAgentTaskId(), ClusterTaskActionEnum.CANCEL);
|
||||
abstractAgent.actionTask(clusterTaskDO.getAgentTaskId(), TaskActionEnum.CANCEL);
|
||||
return ResultStatus.SUCCESS;
|
||||
} catch (Exception e) {
|
||||
LOGGER.error("create cluster task failed, clusterTaskDO:{}.", clusterTaskDO, e);
|
||||
|
||||
@@ -4,7 +4,7 @@ import com.xiaojukeji.kafka.manager.common.entity.Result;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.ResultStatus;
|
||||
import com.xiaojukeji.kafka.manager.common.entity.pojo.ClusterTaskDO;
|
||||
import com.xiaojukeji.kafka.manager.dao.ClusterTaskDao;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.common.bizenum.TaskActionEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskStateEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.bizenum.ClusterTaskTypeEnum;
|
||||
import com.xiaojukeji.kafka.manager.kcm.common.entry.ao.ClusterTaskLog;
|
||||
@@ -163,7 +163,7 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
}
|
||||
|
||||
private void executeTask2TaskNotExistTest() {
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(INVALID_TASK_ID, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(INVALID_TASK_ID, TaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.RESOURCE_NOT_EXIST.getCode());
|
||||
}
|
||||
|
||||
@@ -172,7 +172,7 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
ClusterTaskDO clusterTaskDO = getClusterTaskDO();
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.CALL_CLUSTER_TASK_AGENT_FAILED.getCode());
|
||||
}
|
||||
|
||||
@@ -183,12 +183,12 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
@@ -199,12 +199,12 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.PAUSE.getAction(), ADMIN);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.PAUSE.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.PAUSE.getAction(), ADMIN);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.PAUSE.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
@@ -215,12 +215,12 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.IGNORE.getAction(), "");
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.IGNORE.getAction(), "");
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.IGNORE.getAction(), "");
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.IGNORE.getAction(), "");
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
@@ -231,12 +231,12 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
|
||||
// success
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(true);
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.CANCEL.getAction(), "");
|
||||
ResultStatus resultStatus = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.CANCEL.getAction(), "");
|
||||
Assert.assertEquals(resultStatus.getCode(), ResultStatus.SUCCESS.getCode());
|
||||
|
||||
// operation failed
|
||||
Mockito.when(abstractAgent.actionTask(Mockito.anyLong(), Mockito.any())).thenReturn(false);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.CANCEL.getAction(), "");
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.CANCEL.getAction(), "");
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// operation failed
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.START.getAction(), ADMIN);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.START.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FAILED.getCode());
|
||||
}
|
||||
|
||||
@@ -257,7 +257,7 @@ public class ClusterTaskServiceTest extends BaseTest {
|
||||
Mockito.when(clusterTaskDao.getById(Mockito.anyLong())).thenReturn(clusterTaskDO);
|
||||
|
||||
// operation failed
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, ClusterTaskActionEnum.ROLLBACK.getAction(), ADMIN);
|
||||
ResultStatus resultStatus2 = clusterTaskService.executeTask(REAL_TASK_ID_IN_MYSQL, TaskActionEnum.ROLLBACK.getAction(), ADMIN);
|
||||
Assert.assertEquals(resultStatus2.getCode(), ResultStatus.OPERATION_FORBIDDEN.getCode());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user