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 0fa68dfb76 [INLONG-8378][Manager] InlongClusterTag support
multi-tenancy (#8379)
0fa68dfb76 is described below
commit 0fa68dfb764747ece0861b3e83f49f558435159b
Author: vernedeng <[email protected]>
AuthorDate: Fri Jun 30 12:48:48 2023 +0800
[INLONG-8378][Manager] InlongClusterTag support multi-tenancy (#8379)
---
.../manager/dao/entity/InlongClusterTagEntity.java | 1 +
.../dao/mapper/InlongClusterTagEntityMapper.java | 2 ++
.../mappers/InlongClusterTagEntityMapper.xml | 31 +++++++++++-----------
.../pojo/cluster/ClusterTagPageRequest.java | 3 +++
.../manager/pojo/cluster/ClusterTagRequest.java | 4 +++
.../main/resources/h2/apache_inlong_manager.sql | 1 +
.../manager-web/sql/apache_inlong_manager.sql | 1 +
inlong-manager/manager-web/sql/changes-1.8.0.sql | 5 ++++
.../web/controller/InlongClusterController.java | 5 ++--
9 files changed, 36 insertions(+), 17 deletions(-)
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterTagEntity.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterTagEntity.java
index a92390cd9a..55afa3396d 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterTagEntity.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterTagEntity.java
@@ -33,6 +33,7 @@ public class InlongClusterTagEntity implements Serializable {
private String clusterTag;
private String extParams;
private String description;
+ private String tenant;
private String inCharges;
private Integer status;
diff --git
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterTagEntityMapper.java
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterTagEntityMapper.java
index 0afed687f0..44b7640650 100644
---
a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterTagEntityMapper.java
+++
b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterTagEntityMapper.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.InlongClusterTagEntity;
import org.apache.inlong.manager.pojo.cluster.ClusterTagPageRequest;
@@ -25,6 +26,7 @@ import org.springframework.stereotype.Repository;
import java.util.List;
+@MultiTenantQuery
@Repository
public interface InlongClusterTagEntityMapper {
diff --git
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterTagEntityMapper.xml
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterTagEntityMapper.xml
index 45ba9be610..96160b856d 100644
---
a/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterTagEntityMapper.xml
+++
b/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterTagEntityMapper.xml
@@ -25,6 +25,7 @@
<result column="cluster_tag" jdbcType="VARCHAR" property="clusterTag"/>
<result column="ext_params" jdbcType="LONGVARCHAR"
property="extParams"/>
<result column="description" jdbcType="VARCHAR"
property="description"/>
+ <result column="tenant" jdbcType="VARCHAR" property="tenant"/>
<result column="in_charges" jdbcType="VARCHAR" property="inCharges"/>
<result column="status" jdbcType="INTEGER" property="status"/>
<result column="is_deleted" jdbcType="INTEGER" property="isDeleted"/>
@@ -35,31 +36,33 @@
<result column="version" jdbcType="INTEGER" property="version"/>
</resultMap>
<sql id="Base_Column_List">
- id, cluster_tag, ext_params, description, in_charges, status,
is_deleted,
+ id, cluster_tag, ext_params, description, tenant, in_charges, status,
is_deleted,
creator, modifier, create_time, modify_time, version
</sql>
<insert id="insert" useGeneratedKeys="true" keyProperty="id"
parameterType="org.apache.inlong.manager.dao.entity.InlongClusterTagEntity">
insert into inlong_cluster_tag (id, cluster_tag, ext_params,
- description, in_charges,
+ description, tenant, in_charges,
status, creator, modifier)
values (#{id,jdbcType=INTEGER}, #{clusterTag,jdbcType=VARCHAR},
#{extParams,jdbcType=LONGVARCHAR},
- #{description, jdbcType=VARCHAR},
#{inCharges,jdbcType=VARCHAR},
+ #{description, jdbcType=VARCHAR}, #{tenant,jdbcType=VARCHAR},
#{inCharges,jdbcType=VARCHAR},
#{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR},
#{modifier,jdbcType=VARCHAR})
</insert>
- <select id="selectById" parameterType="java.lang.Integer"
resultMap="BaseResultMap">
+ <select id="selectById" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>
from inlong_cluster_tag
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
</select>
<select id="selectByTag"
resultType="org.apache.inlong.manager.dao.entity.InlongClusterTagEntity">
select
<include refid="Base_Column_List"/>
from inlong_cluster_tag
- where cluster_tag = #{clusterTag, jdbcType=VARCHAR}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and cluster_tag = #{clusterTag, jdbcType=VARCHAR}
and is_deleted = 0
</select>
<select id="selectByCondition"
@@ -69,12 +72,8 @@
<include refid="Base_Column_List"/>
from inlong_cluster_tag
<where>
- is_deleted = 0
- <if test="isAdminRole == false">
- and (
- creator = #{currentUser, jdbcType=VARCHAR} or
find_in_set(#{currentUser, jdbcType=VARCHAR}, in_charges)
- )
- </if>
+ tenant = #{tenant,jdbcType=VARCHAR}
+ and is_deleted = 0
<if test="keyword != null and keyword != ''">
and cluster_tag like CONCAT('%', #{keyword}, '%')
</if>
@@ -108,13 +107,15 @@
</if>
version = #{version,jdbcType=INTEGER} + 1
</set>
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
and version = #{version,jdbcType=INTEGER}
</update>
- <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+ <delete id="deleteByPrimaryKey">
delete
from inlong_cluster_tag
- where id = #{id,jdbcType=INTEGER}
+ where tenant = #{tenant,jdbcType=VARCHAR}
+ and id = #{id,jdbcType=INTEGER}
</delete>
</mapper>
\ No newline at end of file
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagPageRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagPageRequest.java
index de2fb00eaf..cdc704fa2d 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagPageRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagPageRequest.java
@@ -44,6 +44,9 @@ public class ClusterTagPageRequest extends PageRequest {
@ApiModelProperty(value = "Status")
private Integer status;
+ @ApiModelProperty(value = "Inlong tenant of cluster tag", hidden = true)
+ private String tenant;
+
@ApiModelProperty(value = "Current user", hidden = true)
private String currentUser;
diff --git
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagRequest.java
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagRequest.java
index a5ba5546ae..46ecbb2694 100644
---
a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagRequest.java
+++
b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterTagRequest.java
@@ -54,6 +54,10 @@ public class ClusterTagRequest {
@Length(max = 256, message = "length must be less than or equal to 256")
private String description;
+ @ApiModelProperty(value = "Inlong tenant of cluster tag", hidden = true)
+ @Length(max = 256, message = "length must be less than or equal to 256")
+ private String tenant;
+
@ApiModelProperty(value = "Name of in charges, separated by commas")
@Length(max = 512, message = "length must be less than or equal to 512")
private String inCharges;
diff --git
a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
index c8d6d268dc..62d4e2aee9 100644
---
a/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
+++
b/inlong-manager/manager-test/src/main/resources/h2/apache_inlong_manager.sql
@@ -81,6 +81,7 @@ CREATE TABLE IF NOT EXISTS `inlong_cluster_tag`
`cluster_tag` varchar(128) NOT NULL COMMENT 'Cluster tag',
`ext_params` mediumtext DEFAULT NULL COMMENT 'Extended params,
will be saved as JSON string',
`description` varchar(256) DEFAULT '' COMMENT 'Description of
cluster tag',
+ `tenant` varchar(256) DEFAULT 'public' COMMENT 'Inlong
tenant of the inlong cluster tag',
`in_charges` varchar(512) NOT NULL COMMENT 'Name of responsible person,
separated by commas',
`status` int(4) DEFAULT '0' COMMENT 'Cluster status',
`is_deleted` int(11) DEFAULT '0' COMMENT 'Whether to
delete, 0: not deleted, > 0: deleted',
diff --git a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
index 22948d4e50..fe50aeee1c 100644
--- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql
+++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql
@@ -90,6 +90,7 @@ CREATE TABLE IF NOT EXISTS `inlong_cluster_tag`
`cluster_tag` varchar(128) NOT NULL COMMENT 'Cluster tag',
`ext_params` mediumtext DEFAULT NULL COMMENT 'Extended params,
will be saved as JSON string',
`description` varchar(256) DEFAULT '' COMMENT 'Description of
cluster tag',
+ `tenant` varchar(256) DEFAULT 'public' COMMENT 'Inlong
tenant of the inlong cluster tag',
`in_charges` varchar(512) NOT NULL COMMENT 'Name of responsible person,
separated by commas',
`status` int(4) DEFAULT '0' COMMENT 'Cluster status',
`is_deleted` int(11) DEFAULT '0' COMMENT 'Whether to
delete, 0: not deleted, > 0: deleted',
diff --git a/inlong-manager/manager-web/sql/changes-1.8.0.sql
b/inlong-manager/manager-web/sql/changes-1.8.0.sql
index 6b4716df48..8742b0af20 100644
--- a/inlong-manager/manager-web/sql/changes-1.8.0.sql
+++ b/inlong-manager/manager-web/sql/changes-1.8.0.sql
@@ -95,7 +95,12 @@ ALTER TABLE `data_node`
CREATE INDEX datanode_tenant_index
ON data_node (`tenant`, `is_deleted`);
+-- To support multi-tenancy of cluster. Please see #8365
ALTER TABLE `inlong_cluster`
ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant
of cluster' after `heartbeat`;
CREATE INDEX cluster_tenant_index
ON inlong_cluster (`tenant`, `is_deleted`);
+
+-- To support multi-tenancy of cluster tag. Please see #8378
+ALTER TABLE `inlong_cluster_tag`
+ ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant
of inlong cluster tag' after `description`;
diff --git
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
index a279db5de4..6abdeef97c 100644
---
a/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
+++
b/inlong-manager/manager-web/src/main/java/org/apache/inlong/manager/web/controller/InlongClusterController.java
@@ -74,7 +74,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/tag/save")
@ApiOperation(value = "Save cluster tag")
@OperationLog(operation = OperationType.CREATE)
- @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
+ @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN,
UserRoleCode.INLONG_ADMIN})
public Response<Integer> saveTag(@Validated(SaveValidation.class)
@RequestBody ClusterTagRequest request) {
String currentUser = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.saveTag(request, currentUser));
@@ -100,6 +100,7 @@ public class InlongClusterController {
@PostMapping(value = "/cluster/tag/update")
@OperationLog(operation = OperationType.UPDATE)
@ApiOperation(value = "Update cluster tag")
+ @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN,
UserRoleCode.INLONG_ADMIN})
public Response<Boolean> updateTag(@Validated(UpdateValidation.class)
@RequestBody ClusterTagRequest request) {
String username = LoginUserUtils.getLoginUser().getName();
return Response.success(clusterService.updateTag(request, username));
@@ -109,7 +110,7 @@ public class InlongClusterController {
@ApiOperation(value = "Delete cluster tag by id")
@OperationLog(operation = OperationType.DELETE)
@ApiImplicitParam(name = "id", value = "Cluster tag ID", dataTypeClass =
Integer.class, required = true)
- @RequiresRoles(value = UserRoleCode.TENANT_ADMIN)
+ @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN,
UserRoleCode.INLONG_ADMIN})
public Response<Boolean> deleteTag(@PathVariable Integer id) {
return Response.success(clusterService.deleteTag(id,
LoginUserUtils.getLoginUser().getName()));
}