This is an automated email from the ASF dual-hosted git repository. vernedeng pushed a commit to branch branch-1.8 in repository https://gitbox.apache.org/repos/asf/inlong.git
commit e88fb5aa4c9d3162cd70790def4ed15bf1877ae6 Author: vernedeng <[email protected]> AuthorDate: Thu Jul 13 19:43:23 2023 +0800 [INLONG-8531][Manager] Restrict cluster permission to Inlong administrator (#8532) * [INLONG-8531][Manager] Restrict cluster permission to Inlong administrator --- .../manager/dao/entity/InlongClusterEntity.java | 1 - .../manager/dao/entity/InlongClusterTagEntity.java | 1 - .../dao/mapper/InlongClusterEntityMapper.java | 3 -- .../dao/mapper/InlongClusterTagEntityMapper.java | 2 - .../mappers/InlongClusterEntityMapper.xml | 50 ++++++++++------------ .../mappers/InlongClusterTagEntityMapper.xml | 26 +++++------ .../resources/mappers/InlongGroupEntityMapper.xml | 6 +-- .../dao/mapper/InlongClusterEntityMapperTest.java | 23 ---------- .../manager/pojo/cluster/ClusterPageRequest.java | 3 -- .../manager/pojo/cluster/ClusterRequest.java | 4 -- .../pojo/cluster/ClusterTagPageRequest.java | 3 -- .../manager/pojo/cluster/ClusterTagRequest.java | 4 -- .../service/core/impl/AgentServiceTest.java | 2 + .../main/resources/h2/apache_inlong_manager.sql | 2 - .../manager-web/sql/apache_inlong_manager.sql | 5 +-- inlong-manager/manager-web/sql/changes-1.8.0.sql | 14 +----- .../web/controller/InlongClusterController.java | 23 +++++----- 17 files changed, 52 insertions(+), 120 deletions(-) diff --git a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterEntity.java b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterEntity.java index 0e0e6f079f..98d150d0bb 100644 --- a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterEntity.java +++ b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/entity/InlongClusterEntity.java @@ -42,7 +42,6 @@ public class InlongClusterEntity implements Serializable { private String extParams; private String description; private String heartbeat; - private String tenant; private String inCharges; private Integer status; 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 55afa3396d..a92390cd9a 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,7 +33,6 @@ 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/InlongClusterEntityMapper.java b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapper.java index d6ae75ef1a..ce2644691d 100644 --- a/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapper.java +++ b/inlong-manager/manager-dao/src/main/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapper.java @@ -17,7 +17,6 @@ package org.apache.inlong.manager.dao.mapper; -import org.apache.inlong.manager.common.tenant.MultiTenantQuery; import org.apache.inlong.manager.dao.entity.InlongClusterEntity; import org.apache.inlong.manager.pojo.cluster.ClusterPageRequest; import org.apache.inlong.manager.pojo.sort.standalone.SortSourceClusterInfo; @@ -30,7 +29,6 @@ import org.springframework.stereotype.Repository; import java.util.List; -@MultiTenantQuery @Repository public interface InlongClusterEntityMapper { @@ -55,7 +53,6 @@ public interface InlongClusterEntityMapper { * * @return All cluster info. */ - @MultiTenantQuery(with = false) @Options(resultSetType = ResultSetType.FORWARD_ONLY, fetchSize = Integer.MIN_VALUE) Cursor<SortSourceClusterInfo> selectAllClusters(); 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 44b7640650..0afed687f0 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,7 +17,6 @@ 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; @@ -26,7 +25,6 @@ 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/InlongClusterEntityMapper.xml b/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterEntityMapper.xml index e513afe492..e95cf6de36 100644 --- a/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterEntityMapper.xml +++ b/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterEntityMapper.xml @@ -32,7 +32,6 @@ <result column="ext_params" jdbcType="LONGVARCHAR" property="extParams"/> <result column="description" jdbcType="VARCHAR" property="description"/> <result column="heartbeat" jdbcType="LONGVARCHAR" property="heartbeat"/> - <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"/> @@ -43,7 +42,7 @@ <result column="version" jdbcType="INTEGER" property="version"/> </resultMap> <sql id="Base_Column_List"> - id, name, display_name, type, url, cluster_tags, ext_tag, token, ext_params, description, heartbeat, tenant, + id, name, display_name, type, url, cluster_tags, ext_tag, token, ext_params, description, heartbeat, in_charges, status, is_deleted, creator, modifier, create_time, modify_time, version </sql> @@ -52,14 +51,13 @@ insert into inlong_cluster (id, name, display_name, type, url, cluster_tags, ext_tag, token, ext_params, description, - heartbeat, tenant, in_charges, + heartbeat, in_charges, status, creator, modifier) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{displayName,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{clusterTags,jdbcType=VARCHAR}, #{extTag,jdbcType=VARCHAR}, #{token,jdbcType=VARCHAR}, #{extParams,jdbcType=LONGVARCHAR}, - #{description, jdbcType=VARCHAR}, #{heartbeat,jdbcType=LONGVARCHAR}, #{tenant,jdbcType=VARCHAR}, - #{inCharges,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, - #{modifier,jdbcType=VARCHAR}) + #{description, jdbcType=VARCHAR}, #{heartbeat,jdbcType=LONGVARCHAR}, #{inCharges,jdbcType=VARCHAR}, + #{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, #{modifier,jdbcType=VARCHAR}) </insert> <insert id="insertOnDuplicateKeyUpdate" useGeneratedKeys="true" keyProperty="id" @@ -67,30 +65,28 @@ insert into inlong_cluster (id, name, display_name, type, url, cluster_tags, ext_tag, token, ext_params, heartbeat, - tenant, in_charges, status, + in_charges, status, creator, modifier) values (#{id,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{displayName,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{clusterTags,jdbcType=VARCHAR}, #{extTag,jdbcType=VARCHAR},#{token,jdbcType=VARCHAR}, #{extParams,jdbcType=LONGVARCHAR}, - #{heartbeat,jdbcType=LONGVARCHAR}, #{tenant,jdbcType=VARCHAR}, #{inCharges,jdbcType=VARCHAR}, - #{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, #{modifier,jdbcType=VARCHAR}) + #{heartbeat,jdbcType=LONGVARCHAR}, #{inCharges,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, + #{creator,jdbcType=VARCHAR}, #{modifier,jdbcType=VARCHAR}) ON DUPLICATE KEY UPDATE cluster_tags = VALUES(cluster_tags), ext_tag = VALUES(ext_tag), token = VALUES(token), ext_params = VALUES(ext_params), heartbeat = VALUES(heartbeat), - tenant = VALUES(tenant), in_charges = VALUES(in_charges), status = VALUES(status), modifier = VALUES(modifier) </insert> - <select id="selectById" resultMap="BaseResultMap"> + <select id="selectById" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from inlong_cluster - where tenant = #{tenant,jdbcType=VARCHAR} - and is_deleted = 0 + where is_deleted = 0 and id = #{id,jdbcType=INTEGER} </select> <select id="selectByKey" resultType="org.apache.inlong.manager.dao.entity.InlongClusterEntity"> @@ -98,8 +94,7 @@ <include refid="Base_Column_List"/> from inlong_cluster <where> - tenant = #{tenant,jdbcType=VARCHAR} - and is_deleted = 0 + is_deleted = 0 <if test="type != null and type != ''"> and type = #{type, jdbcType=VARCHAR} </if> @@ -117,8 +112,7 @@ <include refid="Base_Column_List"/> from inlong_cluster <where> - tenant = #{tenant,jdbcType=VARCHAR} - and is_deleted = 0 + is_deleted = 0 <if test="type != null and type != ''"> and type = #{type, jdbcType=VARCHAR} </if> @@ -135,8 +129,7 @@ <include refid="Base_Column_List"/> from inlong_cluster <where> - tenant = #{tenant,jdbcType=VARCHAR} - and is_deleted = 0 + is_deleted = 0 <if test="name != null and name != ''"> and name = #{name, jdbcType=VARCHAR} </if> @@ -168,6 +161,11 @@ or ext_tag like CONCAT('%', #{keyword}, '%') ) </if> + <if test="isAdminRole == false"> + and ( + creator = #{currentUser, jdbcType=VARCHAR} or find_in_set(#{currentUser, jdbcType=VARCHAR}, in_charges) + ) + </if> <if test="status != null and status != ''"> and status = #{status, jdbcType=INTEGER} </if> @@ -179,8 +177,7 @@ <include refid="Base_Column_List"/> from inlong_cluster <where> - tenant = #{tenant,jdbcType=VARCHAR} - and is_deleted = 0 + is_deleted = 0 <if test="clusterTag != null and clusterTag != ''"> and find_in_set(#{clusterTag, jdbcType=VARCHAR}, cluster_tags) </if> @@ -215,8 +212,7 @@ is_deleted = #{isDeleted,jdbcType=INTEGER}, modifier = #{modifier,jdbcType=VARCHAR}, version = #{version,jdbcType=INTEGER} + 1 - where tenant = #{tenant,jdbcType=VARCHAR} - and id = #{id,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} and version = #{version,jdbcType=INTEGER} </update> <update id="updateByIdSelective" parameterType="org.apache.inlong.manager.dao.entity.InlongClusterEntity"> @@ -266,15 +262,13 @@ </if> version = #{version,jdbcType=INTEGER} + 1 </set> - where tenant = #{tenant,jdbcType=VARCHAR} - and id = #{id,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} and version = #{version,jdbcType=INTEGER} </update> - <delete id="deleteByPrimaryKey"> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from inlong_cluster - where tenant = #{tenant,jdbcType=VARCHAR} - and id = #{id,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} </delete> </mapper> 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 96160b856d..7054323383 100644 --- a/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterTagEntityMapper.xml +++ b/inlong-manager/manager-dao/src/main/resources/mappers/InlongClusterTagEntityMapper.xml @@ -25,7 +25,6 @@ <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"/> @@ -36,33 +35,31 @@ <result column="version" jdbcType="INTEGER" property="version"/> </resultMap> <sql id="Base_Column_List"> - id, cluster_tag, ext_params, description, tenant, in_charges, status, is_deleted, + id, cluster_tag, ext_params, description, 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, tenant, in_charges, + description, in_charges, status, creator, modifier) values (#{id,jdbcType=INTEGER}, #{clusterTag,jdbcType=VARCHAR}, #{extParams,jdbcType=LONGVARCHAR}, - #{description, jdbcType=VARCHAR}, #{tenant,jdbcType=VARCHAR}, #{inCharges,jdbcType=VARCHAR}, + #{description, jdbcType=VARCHAR}, #{inCharges,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, #{creator,jdbcType=VARCHAR}, #{modifier,jdbcType=VARCHAR}) </insert> - <select id="selectById" resultMap="BaseResultMap"> + <select id="selectById" parameterType="java.lang.Integer" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from inlong_cluster_tag - where tenant = #{tenant,jdbcType=VARCHAR} - and id = #{id,jdbcType=INTEGER} + where 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 tenant = #{tenant,jdbcType=VARCHAR} - and cluster_tag = #{clusterTag, jdbcType=VARCHAR} + where cluster_tag = #{clusterTag, jdbcType=VARCHAR} and is_deleted = 0 </select> <select id="selectByCondition" @@ -72,8 +69,7 @@ <include refid="Base_Column_List"/> from inlong_cluster_tag <where> - tenant = #{tenant,jdbcType=VARCHAR} - and is_deleted = 0 + is_deleted = 0 <if test="keyword != null and keyword != ''"> and cluster_tag like CONCAT('%', #{keyword}, '%') </if> @@ -107,15 +103,13 @@ </if> version = #{version,jdbcType=INTEGER} + 1 </set> - where tenant = #{tenant,jdbcType=VARCHAR} - and id = #{id,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} and version = #{version,jdbcType=INTEGER} </update> - <delete id="deleteByPrimaryKey"> + <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer"> delete from inlong_cluster_tag - where tenant = #{tenant,jdbcType=VARCHAR} - and id = #{id,jdbcType=INTEGER} + where id = #{id,jdbcType=INTEGER} </delete> </mapper> \ No newline at end of file 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 61cd905ede..6dbdcccb5a 100644 --- a/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml +++ b/inlong-manager/manager-dao/src/main/resources/mappers/InlongGroupEntityMapper.xml @@ -76,12 +76,12 @@ <if test="name != null and name != ''"> name, </if> - <if test="tenant != null and tenant != ''"> - tenant, - </if> <if test="description != null and description != ''"> description, </if> + <if test="tenant != null and tenant != ''"> + tenant, + </if> <if test="mqType != null and mqType != ''"> mq_type, </if> diff --git a/inlong-manager/manager-dao/src/test/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapperTest.java b/inlong-manager/manager-dao/src/test/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapperTest.java index 96e246fb32..0fc1294d1e 100644 --- a/inlong-manager/manager-dao/src/test/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapperTest.java +++ b/inlong-manager/manager-dao/src/test/java/org/apache/inlong/manager/dao/mapper/InlongClusterEntityMapperTest.java @@ -41,17 +41,6 @@ public class InlongClusterEntityMapperTest extends DaoBaseTest { Assertions.assertNull(entityMapper.selectByNameAndType(entity.getName(), entity.getType())); } - @Test - public void deleteByPrimaryKeyWithOtherTenant() { - InlongClusterEntity entity = genEntity(); - entityMapper.insert(entity); - setOtherTenant(ANOTHER_TENANT); - Assertions.assertEquals(0, entityMapper.deleteByPrimaryKey(entity.getId())); - Assertions.assertNull(entityMapper.selectByNameAndType(entity.getName(), entity.getType())); - setOtherTenant(PUBLIC_TENANT); - Assertions.assertNotNull(entityMapper.selectByNameAndType(entity.getName(), entity.getType())); - } - @Test public void selectByCondition() { InlongClusterEntity entity = genEntity(); @@ -61,8 +50,6 @@ public class InlongClusterEntityMapperTest extends DaoBaseTest { request.setClusterTag("testTag"); Assertions.assertEquals(1, entityMapper.selectByCondition(request).size()); - setOtherTenant(ANOTHER_TENANT); - Assertions.assertEquals(0, entityMapper.selectByCondition(request).size()); } @Test @@ -74,17 +61,7 @@ public class InlongClusterEntityMapperTest extends DaoBaseTest { String newType = "newType"; entity.setType(newType); - // the tenant will be modified in mybatis interceptor, set tenant here does not work - entity.setTenant(ANOTHER_TENANT); Assertions.assertEquals(1, entityMapper.updateById(entity)); - entity = entityMapper.selectById(entity.getId()); - Assertions.assertEquals(newType, entity.getType()); - - // should be public - Assertions.assertEquals(PUBLIC_TENANT, entity.getTenant()); - - setOtherTenant(ANOTHER_TENANT); - Assertions.assertEquals(0, entityMapper.updateById(entity)); } private InlongClusterEntity genEntity() { diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterPageRequest.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterPageRequest.java index fece364a20..2e2b0d4ae2 100644 --- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterPageRequest.java +++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterPageRequest.java @@ -55,9 +55,6 @@ public class ClusterPageRequest extends PageRequest { @ApiModelProperty(value = "Parent cluster ID, used for cluster node") private Integer parentId; - @ApiModelProperty(value = "Inlong tenant of cluster", hidden = true) - private String tenant; - @ApiModelProperty(value = "Keywords, name, url, cluster tag, etc.") private String keyword; diff --git a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterRequest.java b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterRequest.java index 46c2b826ac..a2dd867a0c 100644 --- a/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterRequest.java +++ b/inlong-manager/manager-pojo/src/main/java/org/apache/inlong/manager/pojo/cluster/ClusterRequest.java @@ -90,10 +90,6 @@ public abstract class ClusterRequest { @Length(max = 256, message = "length must be less than or equal to 256") private String description; - @ApiModelProperty(value = "Inlong tenant of cluster", hidden = true) - @Length(max = 256, message = "length must be less than or equal to 256") - private String tenant; - @ApiModelProperty(value = "Name of responsible person, 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-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 cdc704fa2d..de2fb00eaf 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,9 +44,6 @@ 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 46ecbb2694..a5ba5546ae 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,10 +54,6 @@ 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-service/src/test/java/org/apache/inlong/manager/service/core/impl/AgentServiceTest.java b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/AgentServiceTest.java index 6f0cbebaf3..bfdbffba8c 100644 --- a/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/AgentServiceTest.java +++ b/inlong-manager/manager-service/src/test/java/org/apache/inlong/manager/service/core/impl/AgentServiceTest.java @@ -66,6 +66,8 @@ class AgentServiceTest extends ServiceBaseTest { private static MockAgent agent; @Autowired + private HeartbeatService heartbeatService; + @Autowired private StreamSourceService sourceService; @Autowired private AgentService agentService; 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 a12c0dcba6..d8017e86fb 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,7 +81,6 @@ 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', @@ -110,7 +109,6 @@ CREATE TABLE IF NOT EXISTS `inlong_cluster` `ext_params` mediumtext DEFAULT NULL COMMENT 'Extended params, will be saved as JSON string', `description` varchar(256) DEFAULT '' COMMENT 'Description of cluster', `heartbeat` mediumtext DEFAULT NULL COMMENT 'Cluster heartbeat info', - `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT 'Inlong tenant of cluster', `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 c38e413f30..8b0f155f36 100644 --- a/inlong-manager/manager-web/sql/apache_inlong_manager.sql +++ b/inlong-manager/manager-web/sql/apache_inlong_manager.sql @@ -90,7 +90,6 @@ 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', @@ -120,7 +119,6 @@ CREATE TABLE IF NOT EXISTS `inlong_cluster` `ext_params` mediumtext DEFAULT NULL COMMENT 'Extended params, will be saved as JSON string', `description` varchar(256) DEFAULT '' COMMENT 'Description of cluster', `heartbeat` mediumtext DEFAULT NULL COMMENT 'Cluster heartbeat info', - `tenant` varchar(256) NOT NULL DEFAULT 'public' COMMENT 'Inlong tenant of cluster', `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', @@ -131,8 +129,7 @@ CREATE TABLE IF NOT EXISTS `inlong_cluster` `version` int(11) NOT NULL DEFAULT '1' COMMENT 'Version number, which will be incremented by 1 after modification', PRIMARY KEY (`id`), UNIQUE KEY `unique_inlong_cluster` (`name`, `type`, `is_deleted`), - INDEX `cluster_type_index` (`type`), - INDEX `cluster_tenant_index` (`tenant`, `is_deleted`) + INDEX `cluster_type_index` (`type`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT ='Inlong cluster table'; 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 b1ef5f8a78..99a5a4eb96 100644 --- a/inlong-manager/manager-web/sql/changes-1.8.0.sql +++ b/inlong-manager/manager-web/sql/changes-1.8.0.sql @@ -83,8 +83,8 @@ INSERT INTO tenant_user_role(username, role_code, tenant, creator) FROM user; -- To avoid the ambiguity, rename "tenant" in PulsarGroup & PulsarCluster to "pulsarTenant" -UPDATE inlong_group SET ext_params = replace(ext_params, '"tenant"', '"pulsarTenant"'); -UPDATE inlong_cluster SET ext_params = replace(ext_params, '"tenant"', '"pulsarTenant"'); +UPDATE inlong_group SET ext_params = replace(ext_params, '"tenant":', '"pulsarTenant":'); +UPDATE inlong_cluster SET ext_params = replace(ext_params, '"tenant":', '"pulsarTenant":'); ALTER TABLE `inlong_stream` MODIFY COLUMN `name` varchar(256) DEFAULT NULL COMMENT 'The name of the inlong stream page display, can be Chinese'; @@ -99,16 +99,6 @@ 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`; - -- To support multi-tenancy of inlong consume. Please see #8378 ALTER TABLE `inlong_consume` ADD `tenant` VARCHAR(256) DEFAULT 'public' NOT NULL comment 'Inlong tenant of consume' after `ext_params`; 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 6abdeef97c..119f5151e5 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(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = 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)); @@ -83,6 +83,7 @@ public class InlongClusterController { @GetMapping(value = "/cluster/tag/get/{id}") @ApiOperation(value = "Get cluster tag by id") @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = Integer.class, required = true) + @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN, UserRoleCode.INLONG_OPERATOR}) public Response<ClusterTagResponse> getTag(@PathVariable Integer id) { String currentUser = LoginUserUtils.getLoginUser().getName(); return Response.success(clusterService.getTag(id, currentUser)); @@ -90,17 +91,16 @@ public class InlongClusterController { @PostMapping(value = "/cluster/tag/list") @ApiOperation(value = "List cluster tags") + @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN, UserRoleCode.INLONG_OPERATOR}) public Response<PageResult<ClusterTagResponse>> listTag(@RequestBody ClusterTagPageRequest request) { request.setCurrentUser(LoginUserUtils.getLoginUser().getName()); - request.setIsAdminRole( - LoginUserUtils.getLoginUser().getRoles().contains(TenantUserTypeEnum.TENANT_ADMIN.name())); return Response.success(clusterService.listTag(request)); } @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}) + @RequiresRoles(value = 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)); @@ -110,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(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<Boolean> deleteTag(@PathVariable Integer id) { return Response.success(clusterService.deleteTag(id, LoginUserUtils.getLoginUser().getName())); } @@ -118,7 +118,7 @@ public class InlongClusterController { @PostMapping(value = "/cluster/save") @ApiOperation(value = "Save cluster") @OperationLog(operation = OperationType.CREATE) - @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<Integer> save(@Validated(SaveValidation.class) @RequestBody ClusterRequest request) { String currentUser = LoginUserUtils.getLoginUser().getName(); return Response.success(clusterService.save(request, currentUser)); @@ -127,6 +127,7 @@ public class InlongClusterController { @GetMapping(value = "/cluster/get/{id}") @ApiOperation(value = "Get cluster by id") @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = Integer.class, required = true) + @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.INLONG_ADMIN, UserRoleCode.INLONG_OPERATOR}) public Response<ClusterInfo> get(@PathVariable Integer id) { String currentUser = LoginUserUtils.getLoginUser().getName(); return Response.success(clusterService.get(id, currentUser)); @@ -144,7 +145,7 @@ public class InlongClusterController { @PostMapping(value = "/cluster/update") @OperationLog(operation = OperationType.UPDATE) @ApiOperation(value = "Update cluster") - @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<Boolean> update(@Validated(UpdateByIdValidation.class) @RequestBody ClusterRequest request) { String username = LoginUserUtils.getLoginUser().getName(); return Response.success(clusterService.update(request, username)); @@ -153,7 +154,7 @@ public class InlongClusterController { @PostMapping(value = "/cluster/updateByKey") @OperationLog(operation = OperationType.UPDATE) @ApiOperation(value = "Update cluster by key") - @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<UpdateResult> updateByKey( @Validated(UpdateByKeyValidation.class) @RequestBody ClusterRequest request) { String username = LoginUserUtils.getLoginUser().getName(); @@ -163,7 +164,7 @@ public class InlongClusterController { @PostMapping(value = "/cluster/bindTag") @OperationLog(operation = OperationType.UPDATE) @ApiOperation(value = "Bind or unbind cluster tag") - @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<Boolean> bindTag(@Validated @RequestBody BindTagRequest request) { String username = LoginUserUtils.getLoginUser().getName(); return Response.success(clusterService.bindTag(request, username)); @@ -173,7 +174,7 @@ public class InlongClusterController { @ApiOperation(value = "Delete cluster by id") @OperationLog(operation = OperationType.DELETE) @ApiImplicitParam(name = "id", value = "Cluster ID", dataTypeClass = Integer.class, required = true) - @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<Boolean> delete(@PathVariable Integer id) { return Response.success(clusterService.delete(id, LoginUserUtils.getLoginUser().getName())); } @@ -185,7 +186,7 @@ public class InlongClusterController { @ApiImplicitParam(name = "name", value = "Cluster name", dataTypeClass = String.class, required = true), @ApiImplicitParam(name = "type", value = "Cluster type", dataTypeClass = String.class, required = true), }) - @RequiresRoles(logical = Logical.OR, value = {UserRoleCode.TENANT_ADMIN, UserRoleCode.INLONG_ADMIN}) + @RequiresRoles(value = UserRoleCode.INLONG_ADMIN) public Response<Boolean> deleteByKey(@RequestParam String name, @RequestParam String type) { return Response.success(clusterService.deleteByKey(name, type, LoginUserUtils.getLoginUser().getName()));
