mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 11:52:08 +08:00
[Feature]MM2管理-MM2管理相关接口类(#894)
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
package com.xiaojukeji.know.streaming.km.rest.api.v3.cluster;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.biz.connect.mm2.MirrorMakerManager;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.cluster.ClusterMirrorMakersOverviewDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.metrices.mm2.MetricsMirrorMakersDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.PaginationResult;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.mm2.ClusterMirrorMakerOverviewVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.mm2.MirrorMakerBasicVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.mm2.MirrorMakerStateVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.metrics.line.MetricMultiLinesVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.ApiPrefix;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.connect.KafkaConnectConstant;
|
||||
import com.xiaojukeji.know.streaming.km.common.converter.ConnectConverter;
|
||||
import com.xiaojukeji.know.streaming.km.core.service.connect.cluster.ConnectClusterService;
|
||||
import com.xiaojukeji.know.streaming.km.core.service.connect.connector.ConnectorService;
|
||||
import com.xiaojukeji.know.streaming.km.core.service.connect.mm2.MirrorMakerMetricService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/12/12
|
||||
*/
|
||||
@Api(tags = Constant.SWAGGER_API_TAG_PREFIX + "集群MM2s-相关接口(REST)")
|
||||
@RestController
|
||||
@RequestMapping(ApiPrefix.API_V3_PREFIX) // 这里使用 API_V3_PREFIX 没有使用 API_V3_CONNECT_PREFIX 的原因是这个接口在Kafka集群页面下
|
||||
public class ClusterMirrorMakersController {
|
||||
@Autowired
|
||||
private MirrorMakerMetricService mirrorMakerMetricService;
|
||||
|
||||
@Autowired
|
||||
private MirrorMakerManager mirrorMakerManager;
|
||||
|
||||
@Autowired
|
||||
private ConnectClusterService connectClusterService;
|
||||
|
||||
@Autowired
|
||||
private ConnectorService connectorService;
|
||||
|
||||
@ApiOperation(value = "集群MM2状态", notes = "")
|
||||
@GetMapping(value = "kafka-clusters/{clusterPhyId}/mirror-makers-state")
|
||||
@ResponseBody
|
||||
public Result<MirrorMakerStateVO> getClusterMM2State(@PathVariable Long clusterPhyId) {
|
||||
return mirrorMakerManager.getMirrorMakerStateVO(clusterPhyId);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "集群MM2基本信息", notes = "")
|
||||
@GetMapping(value = "clusters/{clusterPhyId}/mirror-makers-basic")
|
||||
@ResponseBody
|
||||
public Result<List<MirrorMakerBasicVO>> getClusterMirrorMakersBasic(@PathVariable Long clusterPhyId) {
|
||||
return Result.buildSuc(
|
||||
ConnectConverter.convert2MirrorMakerBasicVOList(
|
||||
connectClusterService.listByKafkaCluster(clusterPhyId),
|
||||
connectorService.listByKafkaClusterIdFromDB(clusterPhyId).stream().filter(elem -> elem.getConnectorClassName().equals(KafkaConnectConstant.MIRROR_MAKER_SOURCE_CONNECTOR_TYPE)).collect(Collectors.toList())
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "集群MM2概览列表", notes = "")
|
||||
@PostMapping(value = "clusters/{clusterPhyId}/mirror-makers-overview")
|
||||
@ResponseBody
|
||||
public PaginationResult<ClusterMirrorMakerOverviewVO> getClusterMirrorMakersOverview(@PathVariable Long clusterPhyId,
|
||||
@Validated @RequestBody ClusterMirrorMakersOverviewDTO dto) {
|
||||
return mirrorMakerManager.getClusterMirrorMakersOverview(clusterPhyId,dto);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "集群MM2指标信息")
|
||||
@PostMapping(value = "clusters/{clusterPhyId}/mirror-makers-metrics")
|
||||
@ResponseBody
|
||||
public Result<List<MetricMultiLinesVO>> getClusterMirrorMakersMetrics(@PathVariable Long clusterPhyId,
|
||||
@Validated @RequestBody MetricsMirrorMakersDTO dto) {
|
||||
return mirrorMakerMetricService.listMirrorMakerClusterMetricsFromES(clusterPhyId, dto);
|
||||
}
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import com.xiaojukeji.know.streaming.km.biz.connect.connector.ConnectorManager;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.connector.ConnectorActionDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.connector.ConnectorCreateDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.connector.ConnectorDeleteDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.connector.ConnectorConfigModifyDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.connect.config.ConnectConfigInfos;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus;
|
||||
@@ -73,14 +72,14 @@ public class KafkaConnectorController {
|
||||
@ApiOperation(value = "修改Connector配置", notes = "")
|
||||
@PutMapping(value ="connectors-config")
|
||||
@ResponseBody
|
||||
public Result<Void> modifyConnectors(@Validated @RequestBody ConnectorConfigModifyDTO dto) {
|
||||
public Result<Void> modifyConnectors(@Validated @RequestBody ConnectorCreateDTO dto) {
|
||||
return connectorManager.updateConnectorConfig(dto.getConnectClusterId(), dto.getConnectorName(), dto.getConfigs(), HttpRequestUtil.getOperator());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "校验Connector配置", notes = "")
|
||||
@PutMapping(value ="connectors-config/validate")
|
||||
@ResponseBody
|
||||
public Result<ConnectConfigInfosVO> validateConnectors(@Validated @RequestBody ConnectorConfigModifyDTO dto) {
|
||||
public Result<ConnectConfigInfosVO> validateConnectors(@Validated @RequestBody ConnectorCreateDTO dto) {
|
||||
Result<ConnectConfigInfos> infoResult = pluginService.validateConfig(dto.getConnectClusterId(), dto.getConfigs());
|
||||
if (infoResult.failed()) {
|
||||
return Result.buildFromIgnoreData(infoResult);
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
package com.xiaojukeji.know.streaming.km.rest.api.v3.connect.mm2;
|
||||
|
||||
import com.didiglobal.logi.security.util.HttpRequestUtil;
|
||||
import com.xiaojukeji.know.streaming.km.biz.connect.mm2.MirrorMakerManager;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.mm2.MirrorMaker2ActionDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.mm2.MirrorMakerCreateDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.mm2.MirrorMaker2DeleteDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.connect.plugin.ConnectConfigInfosVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.ApiPrefix;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.connect.ConnectActionEnum;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/12/12
|
||||
*/
|
||||
@Api(tags = Constant.SWAGGER_API_TAG_PREFIX + "MM2-MM2自身-相关接口(REST)")
|
||||
@RestController
|
||||
@RequestMapping(ApiPrefix.API_V3_MM2_PREFIX)
|
||||
public class KafkaMirrorMakerController {
|
||||
@Autowired
|
||||
private MirrorMakerManager mirrorMakerManager;
|
||||
|
||||
@ApiOperation(value = "创建MM2", notes = "")
|
||||
@PostMapping(value = "mirror-makers")
|
||||
@ResponseBody
|
||||
public Result<Void> createMM2(@Validated @RequestBody MirrorMakerCreateDTO dto) {
|
||||
return mirrorMakerManager.createMirrorMaker(dto, HttpRequestUtil.getOperator());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "删除MM2", notes = "")
|
||||
@DeleteMapping(value ="mirror-makers")
|
||||
@ResponseBody
|
||||
public Result<Void> deleteMM2(@Validated @RequestBody MirrorMaker2DeleteDTO dto) {
|
||||
return mirrorMakerManager.deleteMirrorMaker(dto.getConnectClusterId(), dto.getConnectorName(), HttpRequestUtil.getOperator());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "操作MM2", notes = "")
|
||||
@PutMapping(value ="mirror-makers")
|
||||
@ResponseBody
|
||||
public Result<Void> operateMM2s(@Validated @RequestBody MirrorMaker2ActionDTO dto) {
|
||||
if (ConnectActionEnum.RESTART.getValue().equals(dto.getAction())) {
|
||||
return mirrorMakerManager.restartMirrorMaker(dto.getConnectClusterId(), dto.getConnectorName(), HttpRequestUtil.getOperator());
|
||||
} else if (ConnectActionEnum.STOP.getValue().equals(dto.getAction())) {
|
||||
return mirrorMakerManager.stopMirrorMaker(dto.getConnectClusterId(), dto.getConnectorName(), HttpRequestUtil.getOperator());
|
||||
} else if (ConnectActionEnum.RESUME.getValue().equals(dto.getAction())) {
|
||||
return mirrorMakerManager.resumeMirrorMaker(dto.getConnectClusterId(), dto.getConnectorName(), HttpRequestUtil.getOperator());
|
||||
}
|
||||
|
||||
return Result.buildFailure(ResultStatus.PARAM_ILLEGAL);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "MM2配置修改", notes = "")
|
||||
@PutMapping(value ="mirror-makers-config")
|
||||
@ResponseBody
|
||||
public Result<Void> modifyMM2s(@Validated @RequestBody MirrorMakerCreateDTO dto) {
|
||||
return mirrorMakerManager.modifyMirrorMakerConfig(dto, HttpRequestUtil.getOperator());
|
||||
}
|
||||
|
||||
@ApiOperation(value = "校验MM2配置", notes = "")
|
||||
@PutMapping(value ="mirror-makers-config/validate")
|
||||
@ResponseBody
|
||||
public Result<List<ConnectConfigInfosVO>> validateConnectors(@Validated @RequestBody MirrorMakerCreateDTO dto) {
|
||||
return mirrorMakerManager.validateConnectors(dto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.xiaojukeji.know.streaming.km.rest.api.v3.connect.mm2;
|
||||
|
||||
import com.didiglobal.logi.security.util.HttpRequestUtil;
|
||||
import com.xiaojukeji.know.streaming.km.biz.connect.mm2.MirrorMakerManager;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.connect.mm2.MirrorMakerCreateDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.mm2.MirrorMakerMetrics;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.mm2.MirrorMakerBaseStateVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.connect.task.KCTaskOverviewVO;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.ApiPrefix;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||
import com.xiaojukeji.know.streaming.km.core.service.connect.mm2.MirrorMakerMetricService;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Properties;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/12/12
|
||||
*/
|
||||
@Api(tags = Constant.SWAGGER_API_TAG_PREFIX + "MM2-MM2状态-相关接口(REST)")
|
||||
@RestController
|
||||
@RequestMapping(ApiPrefix.API_V3_MM2_PREFIX)
|
||||
public class KafkaMirrorMakerStateController {
|
||||
@Autowired
|
||||
private MirrorMakerManager mirrorMakerManager;
|
||||
|
||||
@Autowired
|
||||
private MirrorMakerMetricService mirrorMakerMetricService;
|
||||
|
||||
@ApiOperation(value = "获取mm2任务的状态", notes = "")
|
||||
@GetMapping(value = "clusters/{connectClusterId}/connectors/{connectorName}/state")
|
||||
@ResponseBody
|
||||
public Result<MirrorMakerBaseStateVO> getMirrorMakerStateVO(@PathVariable Long connectClusterId, @PathVariable String connectorName) {
|
||||
return mirrorMakerManager.getMirrorMakerState(connectClusterId, connectorName);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "获取MM2的Task列表", notes = "")
|
||||
@GetMapping(value = "clusters/{connectClusterId}/connectors/{connectorName}/tasks")
|
||||
@ResponseBody
|
||||
public Result<Map<String, List<KCTaskOverviewVO>>> getConnectorTasks(@PathVariable Long connectClusterId, @PathVariable String connectorName) {
|
||||
return mirrorMakerManager.getTaskOverview(connectClusterId, connectorName);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "MM2配置", notes = "")
|
||||
@GetMapping(value ="clusters/{connectClusterId}/connectors/{connectorName}/config")
|
||||
@ResponseBody
|
||||
public Result<List<Properties>> getMM2Configs(@PathVariable Long connectClusterId, @PathVariable String connectorName) {
|
||||
return mirrorMakerManager.getMM2Configs(connectClusterId, connectorName);
|
||||
}
|
||||
|
||||
@ApiOperation(value = "Connector近期指标")
|
||||
@PostMapping(value = "clusters/{connectClusterId}/connectors/{mirrorMakerName}/latest-metrics")
|
||||
@ResponseBody
|
||||
public Result<MirrorMakerMetrics> getMirrorMakerLatestMetrics(@PathVariable Long connectClusterId,
|
||||
@PathVariable String mirrorMakerName,
|
||||
@RequestBody List<String> metricsNames) {
|
||||
return mirrorMakerMetricService.getLatestMetricsFromES(connectClusterId, mirrorMakerName, metricsNames);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user