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 643c790e02 [INLONG-10326][Manager] Support obtaining tenant
information based on groupId (#10327)
643c790e02 is described below
commit 643c790e0215f2ab6ebb264178d32c0d338f0586
Author: fuweng11 <[email protected]>
AuthorDate: Tue Jun 4 15:57:08 2024 +0800
[INLONG-10326][Manager] Support obtaining tenant information based on
groupId (#10327)
---
.../dao/mapper/InlongGroupEntityMapper.java | 3 ++
.../resources/mappers/InlongGroupEntityMapper.xml | 9 ++++++
.../manager/service/group/InlongGroupService.java | 8 +++++
.../service/group/InlongGroupServiceImpl.java | 36 ++++++++++++++++++++++
.../web/controller/InlongGroupController.java | 7 +++++
5 files changed, 63 insertions(+)
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongGroupEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongGroupEntityMapper.java
index e6ac9b17a0..1c9984e284 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongGroupEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongGroupEntityMapper.java
@@ -47,6 +47,9 @@ public interface InlongGroupEntityMapper {
InlongGroupEntity selectByGroupId(String groupId);
+ @MultiTenantQuery(with = false)
+ InlongGroupEntity selectByGroupIdWithoutTenant(String groupId);
+
InlongGroupEntity selectByGroupIdForUpdate(String groupId);
List<InlongGroupEntity> selectByCondition(InlongGroupPageRequest request);
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
index 24eb394265..0f8445f0a0 100644
---
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml
@@ -247,6 +247,15 @@
</if>
</where>
</select>
+ <select id="selectByGroupIdWithoutTenant" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List"/>
+ from inlong_group
+ <where>
+ inlong_group_id = #{groupId, jdbcType=VARCHAR}
+ and is_deleted = 0
+ </where>
+ </select>
<select id="selectByGroupIdForUpdate" resultMap="BaseResultMap">
<bind name="_isInlongService" value="LoginUser.InlongService"/>
select
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
index c64cf3c629..e611917a1e 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupService.java
@@ -88,6 +88,14 @@ public interface InlongGroupService {
*/
InlongGroupInfo get(String groupId);
+ /**
+ * Get inlong group tenant based on inlong group id
+ *
+ * @param groupId inlong group id
+ * @return tenant of inlong group
+ */
+ String getTenant(String groupId, String operator);
+
/**
* Get inlong group info based on inlong group id
*
diff --git
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
index 6bdda6fd45..62062bced3 100644
---
a/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
+++
b/inlong-manager/manager-service/src/main/java/org/apache/inlong/manager/service/group/InlongGroupServiceImpl.java
@@ -36,12 +36,14 @@ import
org.apache.inlong.manager.dao.entity.InlongGroupExtEntity;
import org.apache.inlong.manager.dao.entity.InlongStreamExtEntity;
import org.apache.inlong.manager.dao.entity.StreamSourceEntity;
import org.apache.inlong.manager.dao.entity.TenantClusterTagEntity;
+import org.apache.inlong.manager.dao.entity.TenantUserRoleEntity;
import org.apache.inlong.manager.dao.mapper.InlongClusterEntityMapper;
import org.apache.inlong.manager.dao.mapper.InlongGroupEntityMapper;
import org.apache.inlong.manager.dao.mapper.InlongGroupExtEntityMapper;
import org.apache.inlong.manager.dao.mapper.InlongStreamExtEntityMapper;
import org.apache.inlong.manager.dao.mapper.StreamSourceEntityMapper;
import org.apache.inlong.manager.dao.mapper.TenantClusterTagEntityMapper;
+import org.apache.inlong.manager.dao.mapper.TenantUserRoleEntityMapper;
import org.apache.inlong.manager.pojo.cluster.ClusterInfo;
import org.apache.inlong.manager.pojo.common.BatchResult;
import org.apache.inlong.manager.pojo.common.OrderFieldEnum;
@@ -64,6 +66,8 @@ import org.apache.inlong.manager.pojo.sort.FlinkSortConf;
import org.apache.inlong.manager.pojo.sort.UserDefinedSortConf;
import org.apache.inlong.manager.pojo.source.StreamSource;
import org.apache.inlong.manager.pojo.stream.InlongStreamInfo;
+import org.apache.inlong.manager.pojo.tenant.InlongTenantInfo;
+import org.apache.inlong.manager.pojo.user.InlongRoleInfo;
import org.apache.inlong.manager.pojo.user.LoginUserUtils;
import org.apache.inlong.manager.pojo.user.UserInfo;
import
org.apache.inlong.manager.pojo.workflow.form.process.GroupResourceProcessForm;
@@ -72,6 +76,8 @@ import
org.apache.inlong.manager.service.sink.StreamSinkService;
import org.apache.inlong.manager.service.source.SourceOperatorFactory;
import org.apache.inlong.manager.service.source.StreamSourceOperator;
import org.apache.inlong.manager.service.stream.InlongStreamService;
+import org.apache.inlong.manager.service.tenant.InlongTenantService;
+import org.apache.inlong.manager.service.user.InlongRoleService;
import org.apache.inlong.manager.service.workflow.WorkflowService;
import com.fasterxml.jackson.core.type.TypeReference;
@@ -145,6 +151,12 @@ public class InlongGroupServiceImpl implements
InlongGroupService {
private InlongGroupOperatorFactory groupOperatorFactory;
@Autowired
private SourceOperatorFactory sourceOperatorFactory;
+ @Autowired
+ private InlongTenantService tenantService;
+ @Autowired
+ private InlongRoleService inlongRoleService;
+ @Autowired
+ private TenantUserRoleEntityMapper tenantUserRoleEntityMapper;
/**
* Check whether modification is supported under the current group status,
and which fields can be modified.
@@ -293,6 +305,30 @@ public class InlongGroupServiceImpl implements
InlongGroupService {
return groupInfo;
}
+ @Override
+ public String getTenant(String groupId, String operator) {
+ InlongGroupEntity groupEntity =
groupMapper.selectByGroupIdWithoutTenant(groupId);
+ String tenant = groupEntity.getTenant();
+ if (Objects.equals(InlongConstants.DEFAULT_PULSAR_TENANT, tenant)) {
+ return tenant;
+ }
+ InlongTenantInfo tenantInfo = tenantService.getByName(tenant);
+ if (tenantInfo == null) {
+ String errMsg = String.format("tenant=[%s] not found", tenant);
+ LOGGER.error(errMsg);
+ throw new BusinessException(errMsg);
+ }
+
+ InlongRoleInfo inlongRoleInfo =
inlongRoleService.getByUsername(operator);
+ TenantUserRoleEntity tenantRoleInfo =
tenantUserRoleEntityMapper.selectByUsernameAndTenant(operator, tenant);
+ if (inlongRoleInfo == null && tenantRoleInfo == null) {
+ String errMsg = String.format("user=[%s] has no privilege for
tenant=[%s]", operator, tenant);
+ LOGGER.error(errMsg);
+ throw new BusinessException(errMsg);
+ }
+ return tenant;
+ }
+
@Override
public InlongGroupCountResponse countGroupByUser(String operator, Integer
inlongGroupMode) {
InlongGroupCountResponse countVO = new InlongGroupCountResponse();
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
index da69535631..04d89d332c 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongGroupController.java
@@ -101,6 +101,13 @@ public class InlongGroupController {
return Response.success(groupService.get(groupId));
}
+ @RequestMapping(value = "/group/getTenant/{groupId}", method =
RequestMethod.GET)
+ @ApiOperation(value = "Get inlong group tenant")
+ @ApiImplicitParam(name = "groupId", value = "Inlong group id",
dataTypeClass = String.class, required = true)
+ public Response<String> getTenant(@PathVariable String groupId) {
+ return Response.success(groupService.getTenant(groupId,
LoginUserUtils.getLoginUser().getName()));
+ }
+
@RequestMapping(value = "/group/countByStatus", method = RequestMethod.GET)
@ApiOperation(value = "Count inlong group status for current user")
@ApiImplicitParam(name = "inlongGroupMode", dataTypeClass = Integer.class,
defaultValue = "0")