You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ki...@apache.org on 2021/08/24 06:46:50 UTC
[dolphinscheduler] branch dev updated: [Improvement][Api
Module]split alert group list-paging interface (#5941)
This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git
The following commit(s) were added to refs/heads/dev by this push:
new 75f15df [Improvement][Api Module]split alert group list-paging interface (#5941)
75f15df is described below
commit 75f15df3619f7b0cb7f9549c97241b095a6335d1
Author: Shukun Zhang <60...@users.noreply.github.com>
AuthorDate: Tue Aug 24 14:46:42 2021 +0800
[Improvement][Api Module]split alert group list-paging interface (#5941)
* [Improvement][Api Module]split alert group list-paging interface
---
.../api/controller/AlertGroupController.java | 23 ++++++++++
.../apache/dolphinscheduler/api/enums/Status.java | 1 +
.../api/service/AlertGroupService.java | 8 ++++
.../api/service/impl/AlertGroupServiceImpl.java | 41 +++++++++++++++---
.../api/controller/AlertGroupControllerTest.java | 38 ++++++++--------
.../api/service/AlertGroupServiceTest.java | 28 ++++++++++--
.../dao/mapper/AlertGroupMapper.java | 10 +++++
.../dolphinscheduler/dao/vo/AlertGroupVo.java | 50 ++++++++++++++++++++++
.../dao/mapper/AlertGroupMapper.xml | 11 ++++-
9 files changed, 180 insertions(+), 30 deletions(-)
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AlertGroupController.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AlertGroupController.java
index 92450f8..227775d 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AlertGroupController.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/controller/AlertGroupController.java
@@ -20,6 +20,7 @@ package org.apache.dolphinscheduler.api.controller;
import static org.apache.dolphinscheduler.api.enums.Status.CREATE_ALERT_GROUP_ERROR;
import static org.apache.dolphinscheduler.api.enums.Status.DELETE_ALERT_GROUP_ERROR;
import static org.apache.dolphinscheduler.api.enums.Status.LIST_PAGING_ALERT_GROUP_ERROR;
+import static org.apache.dolphinscheduler.api.enums.Status.QUERY_ALERT_GROUP_ERROR;
import static org.apache.dolphinscheduler.api.enums.Status.QUERY_ALL_ALERTGROUP_ERROR;
import static org.apache.dolphinscheduler.api.enums.Status.UPDATE_ALERT_GROUP_ERROR;
@@ -139,6 +140,28 @@ public class AlertGroupController extends BaseController {
searchVal = ParameterUtils.handleEscapes(searchVal);
return alertGroupService.listPaging(loginUser, searchVal, pageNo, pageSize);
}
+ /**
+ * check alarm group detail by Id
+ *
+ * @param loginUser login user
+ * @param id alert group id
+ * @return one alert group
+ */
+
+ @ApiOperation(value = "queryAlertGroupById", notes = "QUERY_ALERT_GROUP_BY_ID_NOTES")
+ @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "ALERT_GROUP_ID", dataType = "Int", example = "1")
+ })
+ @PostMapping(value = "/query")
+ @ResponseStatus(HttpStatus.OK)
+ @ApiException(QUERY_ALERT_GROUP_ERROR)
+ @AccessLogAnnotation(ignoreRequestArgs = "loginUser")
+ public Result queryAlertGroupById(@ApiIgnore @RequestAttribute(value = Constants.SESSION_USER) User loginUser,
+ @RequestParam("id") Integer id) {
+
+ Map<String, Object> result = alertGroupService.queryAlertGroupById(loginUser, id);
+ return returnDataList(result);
+ }
+
/**
* updateProcessInstance alert group
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
index 8372a69..4c7d25e 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/enums/Status.java
@@ -211,6 +211,7 @@ public enum Status {
WORKER_ADDRESS_INVALID(10177, "worker address {0} invalid", "worker地址[{0}]无效"),
QUERY_WORKER_ADDRESS_LIST_FAIL(10178, "query worker address list fail ", "查询worker地址列表失败"),
TRANSFORM_PROJECT_OWNERSHIP(10179, "Please transform project ownership [{0}]", "请先转移项目所有权[{0}]"),
+ QUERY_ALERT_GROUP_ERROR(10180, "query alert group error", "查询告警组错误"),
UDF_FUNCTION_NOT_EXIST(20001, "UDF function not found", "UDF函数不存在"),
UDF_FUNCTION_EXISTS(20002, "UDF function already exists", "UDF函数已存在"),
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AlertGroupService.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AlertGroupService.java
index 9d016ac..5e25696 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AlertGroupService.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/AlertGroupService.java
@@ -35,6 +35,14 @@ public interface AlertGroupService {
Map<String, Object> queryAlertgroup();
/**
+ * query alert group by id
+ *
+ * @param loginUser login user
+ * @param id alert group id
+ * @return one alert group
+ */
+ Map<String, Object> queryAlertGroupById(User loginUser, Integer id);
+ /**
* paging query alarm group list
*
* @param loginUser login user
diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertGroupServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertGroupServiceImpl.java
index dcee5fe..5fa4d70 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertGroupServiceImpl.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/AlertGroupServiceImpl.java
@@ -27,6 +27,7 @@ import org.apache.dolphinscheduler.common.utils.StringUtils;
import org.apache.dolphinscheduler.dao.entity.AlertGroup;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
+import org.apache.dolphinscheduler.dao.vo.AlertGroupVo;
import java.util.Date;
import java.util.HashMap;
@@ -71,6 +72,33 @@ public class AlertGroupServiceImpl extends BaseServiceImpl implements AlertGroup
}
/**
+ * query alert group by id
+ *
+ * @param loginUser login user
+ * @param id alert group id
+ * @return one alert group
+ */
+ @Override
+ public Map<String, Object> queryAlertGroupById(User loginUser, Integer id) {
+ Map<String, Object> result = new HashMap<>();
+ result.put(Constants.STATUS, false);
+
+ //only admin can operate
+ if (isNotAdmin(loginUser, result)) {
+ return result;
+ }
+ //check if exist
+ AlertGroup alertGroup = alertGroupMapper.selectById(id);
+ if (alertGroup == null) {
+ putMsg(result, Status.ALERT_GROUP_NOT_EXIST);
+ return result;
+ }
+ result.put("data", alertGroup);
+ putMsg(result, Status.SUCCESS);
+ return result;
+ }
+
+ /**
* paging query alarm group list
*
* @param loginUser login user
@@ -88,13 +116,14 @@ public class AlertGroupServiceImpl extends BaseServiceImpl implements AlertGroup
return result;
}
- Page<AlertGroup> page = new Page<>(pageNo, pageSize);
- IPage<AlertGroup> alertGroupIPage = alertGroupMapper.queryAlertGroupPage(
- page, searchVal);
- PageInfo<AlertGroup> pageInfo = new PageInfo<>(pageNo, pageSize);
- pageInfo.setTotal((int) alertGroupIPage.getTotal());
- pageInfo.setTotalList(alertGroupIPage.getRecords());
+ Page<AlertGroupVo> page = new Page<>(pageNo, pageSize);
+ IPage<AlertGroupVo> alertGroupVoIPage = alertGroupMapper.queryAlertGroupVo(page, searchVal);
+ PageInfo<AlertGroupVo> pageInfo = new PageInfo<>(pageNo, pageSize);
+
+ pageInfo.setTotal((int) alertGroupVoIPage.getTotal());
+ pageInfo.setTotalList(alertGroupVoIPage.getRecords());
result.setData(pageInfo);
+
putMsg(result, Status.SUCCESS);
return result;
}
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AlertGroupControllerTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AlertGroupControllerTest.java
index 1c1eec9..6075b16 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AlertGroupControllerTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/controller/AlertGroupControllerTest.java
@@ -49,6 +49,7 @@ public class AlertGroupControllerTest extends AbstractControllerTest {
paramsMap.add("groupName","cxc test group name");
paramsMap.add("groupType", AlertType.EMAIL.toString());
paramsMap.add("description","cxc junit 测试告警描述");
+ paramsMap.add("alertInstanceIds", "");
MvcResult mvcResult = mockMvc.perform(post("/alert-group/create")
.header("sessionId", sessionId)
.params(paramsMap))
@@ -93,40 +94,41 @@ public class AlertGroupControllerTest extends AbstractControllerTest {
}
@Test
- public void testUpdateAlertgroup() throws Exception {
+ public void testQueryAlertGroupById() throws Exception {
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("id","22");
- paramsMap.add("groupName", "hd test group name");
- paramsMap.add("groupType",AlertType.EMAIL.toString());
- paramsMap.add("description","update alter group");
- MvcResult mvcResult = mockMvc.perform(post("/alert-group/update")
+ MvcResult mvcResult = mockMvc.perform(post("/alert-group/query")
.header("sessionId", sessionId)
.params(paramsMap))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn();
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
- Assert.assertTrue(result != null && result.isSuccess());
+ Assert.assertTrue(result != null && result.isStatus(Status.ALERT_GROUP_NOT_EXIST));
logger.info(mvcResult.getResponse().getContentAsString());
}
@Test
- public void testVerifyGroupName() throws Exception {
+ public void testUpdateAlertgroup() throws Exception {
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
- paramsMap.add("groupName","hd test group name");
- MvcResult mvcResult = mockMvc.perform(get("/alert-group/verify-group-name")
+ paramsMap.add("id","22");
+ paramsMap.add("groupName", "cxc test group name");
+ paramsMap.add("groupType",AlertType.EMAIL.toString());
+ paramsMap.add("description","update alter group");
+ paramsMap.add("alertInstanceIds", "");
+ MvcResult mvcResult = mockMvc.perform(post("/alert-group/update")
.header("sessionId", sessionId)
.params(paramsMap))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn();
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
- Assert.assertTrue(result != null && result.isStatus(Status.ALERT_GROUP_EXIST));
+ Assert.assertTrue(result != null && result.isStatus(Status.ALERT_GROUP_NOT_EXIST));
logger.info(mvcResult.getResponse().getContentAsString());
}
@Test
- public void testVerifyGroupNameNotExit() throws Exception {
+ public void testVerifyGroupName() throws Exception {
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
paramsMap.add("groupName","cxc test group name");
MvcResult mvcResult = mockMvc.perform(get("/alert-group/verify-group-name")
@@ -136,24 +138,22 @@ public class AlertGroupControllerTest extends AbstractControllerTest {
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn();
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
- Assert.assertTrue(result != null && result.isSuccess());
+ Assert.assertTrue(result != null && result.isStatus(Status.ALERT_GROUP_EXIST));
logger.info(mvcResult.getResponse().getContentAsString());
}
@Test
- public void testGrantUser() throws Exception {
+ public void testVerifyGroupNameNotExit() throws Exception {
MultiValueMap<String, String> paramsMap = new LinkedMultiValueMap<>();
- paramsMap.add("alertgroupId","2");
- paramsMap.add("userIds","2");
-
- MvcResult mvcResult = mockMvc.perform(post("/alert-group/grant-user")
+ paramsMap.add("groupName","cxc test group name");
+ MvcResult mvcResult = mockMvc.perform(get("/alert-group/verify-group-name")
.header("sessionId", sessionId)
.params(paramsMap))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn();
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
- Assert.assertTrue(result != null && result.isSuccess());
+ Assert.assertTrue(result != null && result.isStatus(Status.ALERT_GROUP_EXIST));
logger.info(mvcResult.getResponse().getContentAsString());
}
@@ -168,7 +168,7 @@ public class AlertGroupControllerTest extends AbstractControllerTest {
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8))
.andReturn();
Result result = JSONUtils.parseObject(mvcResult.getResponse().getContentAsString(), Result.class);
- Assert.assertTrue(result != null && result.isSuccess());
+ Assert.assertTrue(result != null && result.isStatus(Status.ALERT_GROUP_NOT_EXIST));
logger.info(mvcResult.getResponse().getContentAsString());
}
}
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertGroupServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertGroupServiceTest.java
index 3a78b37..eea323e 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertGroupServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/AlertGroupServiceTest.java
@@ -30,6 +30,7 @@ import org.apache.dolphinscheduler.common.utils.CollectionUtils;
import org.apache.dolphinscheduler.dao.entity.AlertGroup;
import org.apache.dolphinscheduler.dao.entity.User;
import org.apache.dolphinscheduler.dao.mapper.AlertGroupMapper;
+import org.apache.dolphinscheduler.dao.vo.AlertGroupVo;
import java.util.ArrayList;
import java.util.List;
@@ -77,10 +78,10 @@ public class AlertGroupServiceTest {
@Test
public void testListPaging() {
- IPage<AlertGroup> page = new Page<>(1, 10);
+ IPage<AlertGroupVo> page = new Page<>(1, 10);
page.setTotal(1L);
- page.setRecords(getList());
- Mockito.when(alertGroupMapper.queryAlertGroupPage(any(Page.class), eq(groupName))).thenReturn(page);
+ page.setRecords(getAlertGroupVoList());
+ Mockito.when(alertGroupMapper.queryAlertGroupVo(any(Page.class), eq(groupName))).thenReturn(page);
User user = new User();
// no operate
Result result = alertGroupService.listPaging(user, groupName, 1, 10);
@@ -90,7 +91,7 @@ public class AlertGroupServiceTest {
user.setUserType(UserType.ADMIN_USER);
result = alertGroupService.listPaging(user, groupName, 1, 10);
logger.info(result.toString());
- PageInfo<AlertGroup> pageInfo = (PageInfo<AlertGroup>) result.getData();
+ PageInfo<AlertGroupVo> pageInfo = (PageInfo<AlertGroupVo>) result.getData();
Assert.assertTrue(CollectionUtils.isNotEmpty(pageInfo.getTotalList()));
}
@@ -216,4 +217,23 @@ public class AlertGroupServiceTest {
return alertGroup;
}
+ /**
+ * get AlertGroupVo list
+ */
+ private List<AlertGroupVo> getAlertGroupVoList() {
+ List<AlertGroupVo> alertGroupVos = new ArrayList<>();
+ alertGroupVos.add(getAlertGroupVoEntity());
+ return alertGroupVos;
+ }
+
+ /**
+ * get AlertGroupVo entity
+ */
+ private AlertGroupVo getAlertGroupVoEntity() {
+ AlertGroupVo alertGroupVo = new AlertGroupVo();
+ alertGroupVo.setId(1);
+ alertGroupVo.setGroupName(groupName);
+ return alertGroupVo;
+ }
+
}
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java
index b8f4188..72eac71 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.java
@@ -18,6 +18,7 @@
package org.apache.dolphinscheduler.dao.mapper;
import org.apache.dolphinscheduler.dao.entity.AlertGroup;
+import org.apache.dolphinscheduler.dao.vo.AlertGroupVo;
import org.apache.ibatis.annotations.Param;
@@ -82,4 +83,13 @@ public interface AlertGroupMapper extends BaseMapper<AlertGroup> {
* @return
*/
String queryAlertGroupInstanceIdsById(@Param("alertGroupId") int alertGroupId);
+
+ /**
+ * query alertGroupVo page list
+ * @param page page
+ * @param groupName groupName
+ * @return IPage<AlertGroupVo>: include alert group id and group_name
+ */
+ IPage<AlertGroupVo> queryAlertGroupVo(Page<AlertGroupVo> page,
+ @Param("groupName") String groupName);
}
diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/vo/AlertGroupVo.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/vo/AlertGroupVo.java
new file mode 100644
index 0000000..e970c8b
--- /dev/null
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/vo/AlertGroupVo.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.dolphinscheduler.dao.vo;
+
+/**
+ * AlertGroupVo
+ */
+public class AlertGroupVo {
+
+ /**
+ * primary key
+ */
+ private int id;
+ /**
+ * group_name
+ */
+ private String groupName;
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public String getGroupName() {
+ return groupName;
+ }
+
+ public void setGroupName(String groupName) {
+ this.groupName = groupName;
+ }
+
+}
diff --git a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml
index 8a7d3a5..77611d8 100644
--- a/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml
+++ b/dolphinscheduler-dao/src/main/resources/org/apache/dolphinscheduler/dao/mapper/AlertGroupMapper.xml
@@ -32,6 +32,15 @@
</if>
order by update_time desc
</select>
+ <select id="queryAlertGroupVo" resultType="org.apache.dolphinscheduler.dao.vo.AlertGroupVo">
+ select id, group_name
+ from t_ds_alertgroup
+ where 1 = 1
+ <if test="groupName != null and groupName != ''">
+ and group_name like concat('%', #{groupName}, '%')
+ </if>
+ order by update_time desc
+ </select>
<select id="queryByGroupName" resultType="org.apache.dolphinscheduler.dao.entity.AlertGroup">
select
<include refid="baseSql"/>
@@ -70,4 +79,4 @@
select alert_instance_ids from t_ds_alertgroup
where id = #{alertGroupId}
</select>
-</mapper>
\ No newline at end of file
+</mapper>