This is an automated email from the ASF dual-hosted git repository.
dockerzhang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/inlong.git
The following commit(s) were added to refs/heads/master by this push:
new 06e3d589ae [INLONG-10498][Manager] Template supports modifying
associated tenants (#10499)
06e3d589ae is described below
commit 06e3d589ae5ec1ac38eae6e9c41732ba8cdd63a3
Author: fuweng11 <[email protected]>
AuthorDate: Tue Jun 25 12:28:49 2024 +0800
[INLONG-10498][Manager] Template supports modifying associated tenants
(#10499)
---
.../manager/dao/mapper/TemplateEntityMapper.java | 2 +
.../dao/mapper/TenantClusterTagEntityMapper.java | 2 +-
.../resources/mappers/TemplateEntityMapper.xml | 1 +
.../service/stream/TemplateServiceImpl.java | 52 +++++++++++++++++++++-
4 files changed, 55 insertions(+), 2 deletions(-)
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
index 16f13184e5..6d39537734 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TemplateEntityMapper.java
@@ -17,6 +17,7 @@
package org.apache.inlong.manager.dao.mapper;
+import org.apache.inlong.manager.common.tenant.MultiTenantQuery;
import org.apache.inlong.manager.dao.entity.TemplateEntity;
import org.apache.inlong.manager.pojo.stream.TemplatePageRequest;
@@ -25,6 +26,7 @@ import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
+@MultiTenantQuery
public interface TemplateEntityMapper {
int insert(TemplateEntity record);
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
index f9b34f2524..0adcab58db 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/TenantClusterTagEntityMapper.java
@@ -34,7 +34,7 @@ public interface TenantClusterTagEntityMapper {
TenantClusterTagEntity selectByPrimaryKey(Integer id);
- TenantClusterTagEntity selectByUniqueKey(String clusterTag, String tenant);
+ TenantClusterTagEntity selectByUniqueKey(@Param("clusterTag") String
clusterTag, @Param("tenant") String tenant);
List<TenantClusterTagEntity> selectByTag(String clusterTag);
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
index 93e020cf64..e5dd6e7312 100644
---
a/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/TemplateEntityMapper.xml
@@ -61,6 +61,7 @@
<select id="selectByCondition"
parameterType="org.apache.inlong.manager.pojo.stream.TemplatePageRequest"
resultType="org.apache.inlong.manager.dao.entity.TemplateEntity">
+ <bind name="_isInlongService" value="LoginUser.InlongService"/>
select
<include refid="Base_Column_List"/>
from template t
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
index 4e04ac0bdd..a76328ee4d 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/stream/TemplateServiceImpl.java
@@ -49,8 +49,10 @@ import
org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.Set;
import java.util.stream.Collectors;
/**
@@ -204,7 +206,36 @@ public class TemplateServiceImpl implements
TemplateService {
}
// update template fields
updateField(request);
-
+ if (CollectionUtils.isNotEmpty(request.getTenantList())) {
+ Set<String> updatedTenants = new
HashSet<>(request.getTenantList());
+ List<TenantTemplateEntity> tenantList =
tenantTemplateEntityMapper.selectByTemplateName(templateName);
+ // remove
+ tenantList.stream()
+ .filter(entity ->
!updatedTenants.contains(entity.getTenant()))
+ .forEach(entity -> {
+ try {
+ this.deleteTenantTemplate(entity.getId(),
operator);
+ } catch (Exception e) {
+ LOGGER.error(e.getMessage());
+ }
+ });
+ // add
+ Set<String> currentTenants = tenantList.stream()
+ .map(TenantTemplateEntity::getTenant)
+ .collect(Collectors.toSet());
+ TenantTemplateRequest tagRequest = new TenantTemplateRequest();
+ tagRequest.setTemplateName(templateName);
+ updatedTenants.stream()
+ .filter(tenant -> !currentTenants.contains(tenant))
+ .forEach(tenant -> {
+ try {
+ tagRequest.setTenant(tenant);
+ this.saveTenantTemplate(tagRequest, operator);
+ } catch (Exception e) {
+ LOGGER.error(e.getMessage());
+ }
+ });
+ }
LOGGER.info("success to update inlong template for template name={}",
templateName);
return true;
@@ -331,4 +362,23 @@ public class TemplateServiceImpl implements
TemplateService {
return entity.getId();
}
+ public Boolean deleteTenantTemplate(Integer id, String operator) {
+ LOGGER.debug("start to delete tenant template with id={}", id);
+ TenantTemplateEntity entity =
tenantTemplateEntityMapper.selectByPrimaryKey(id);
+ Preconditions.expectNotNull(entity,
ErrorCodeEnum.RECORD_NOT_FOUND.getMessage());
+
+ entity.setModifier(operator);
+ entity.setIsDeleted(id);
+
+ int rowCount = tenantTemplateEntityMapper.updateByIdSelective(entity);
+ if (rowCount != InlongConstants.AFFECTED_ONE_ROW) {
+ LOGGER.error("tenant template has already deleted for tenant={}
tag={}",
+ entity.getTenant(), entity.getTemplateName());
+ throw new BusinessException(ErrorCodeEnum.CONFIG_EXPIRED);
+ }
+ LOGGER.info("success to delete tenant template of tenant={} tag={},
user={}", entity.getTenant(),
+ entity.getTemplateName(), operator);
+ return true;
+ }
+
}