diff --git a/.gitignore b/.gitignore index 7f22e5ac..56a44770 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ bin/ *.iws *.iml *.ipr +*.http out/ !**/src/main/**/out/ !**/src/test/**/out/ diff --git a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/metadata/ServiceUserMetadata.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/metadata/InstanceUserMetadata.java similarity index 97% rename from eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/metadata/ServiceUserMetadata.java rename to eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/metadata/InstanceUserMetadata.java index 1ea76c91..aaf81bad 100644 --- a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/metadata/ServiceUserMetadata.java +++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/metadata/InstanceUserMetadata.java @@ -25,7 +25,7 @@ * Service users are users that are used by components like mysql, kafka, etc. */ @Data -public class ServiceUserMetadata { +public class InstanceUserMetadata { private String userName; //service users are only store users by now diff --git a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/CreateUserRequest.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/CreateUserRequest.java index 24b4adc2..2031153c 100644 --- a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/CreateUserRequest.java +++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/CreateUserRequest.java @@ -17,9 +17,9 @@ package org.apache.eventmesh.dashboard.common.model.remoting.user; -import org.apache.eventmesh.dashboard.common.model.metadata.ServiceUserMetadata; +import org.apache.eventmesh.dashboard.common.model.metadata.InstanceUserMetadata; public class CreateUserRequest { - private ServiceUserMetadata serviceUserMetadata; + private InstanceUserMetadata instanceUserMetadata; } diff --git a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/GetUserResponse.java b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/GetUserResponse.java index d2257063..8fdf0bc7 100644 --- a/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/GetUserResponse.java +++ b/eventmesh-dashboard-common/src/main/java/org/apache/eventmesh/dashboard/common/model/remoting/user/GetUserResponse.java @@ -18,7 +18,7 @@ package org.apache.eventmesh.dashboard.common.model.remoting.user; -import org.apache.eventmesh.dashboard.common.model.metadata.ServiceUserMetadata; +import org.apache.eventmesh.dashboard.common.model.metadata.InstanceUserMetadata; import java.util.List; @@ -27,5 +27,5 @@ @Data public class GetUserResponse { - private List serviceUserMetadata; + private List instanceUserMetadata; } diff --git a/eventmesh-dashboard-console/pom.xml b/eventmesh-dashboard-console/pom.xml index c68e5a8e..020bd9e0 100644 --- a/eventmesh-dashboard-console/pom.xml +++ b/eventmesh-dashboard-console/pom.xml @@ -79,29 +79,29 @@ runtime - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/AclController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/AclController.java new file mode 100644 index 00000000..c35ebf94 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/AclController.java @@ -0,0 +1,56 @@ +/* + * 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.eventmesh.dashboard.console.controller; + +import org.apache.eventmesh.dashboard.console.entity.acl.AclEntity; +import org.apache.eventmesh.dashboard.console.service.acl.AclService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/acl") +public class AclController { + + @Autowired + private AclService aclService; + + @PostMapping("/insertAcl") + public void insertAcl(@RequestBody AclEntity aclEntity) { + this.aclService.insert(aclEntity); + } + + @PostMapping("deleteAcl") + public void deleteAcl(@RequestBody AclEntity aclEntity) { + this.aclService.deleteAclById(aclEntity); + } + + @PostMapping("/updateAcl") + public void updateAcl(@RequestBody AclEntity aclEntity) { + this.aclService.updateResourceTypeById(aclEntity); + } + + @PostMapping("/selectAcl") + public void selectAcl(@RequestBody AclEntity aclEntity) { + this.aclService.selectById(aclEntity); + } + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/InstanceUserController.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/InstanceUserController.java new file mode 100644 index 00000000..89b61c84 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/controller/InstanceUserController.java @@ -0,0 +1,66 @@ +/* + * 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.eventmesh.dashboard.console.controller; + +import org.apache.eventmesh.dashboard.console.entity.instanceuser.InstanceUserEntity; +import org.apache.eventmesh.dashboard.console.service.instanceuser.InstanceUserService; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/instanceUser") +public class InstanceUserController { + + @Autowired + private InstanceUserService instanceUserService; + + @PostMapping("/insertInstanceUser") + public void insertInstanceUser(@RequestBody InstanceUserEntity instanceUserEntity) { + this.instanceUserService.insert(instanceUserEntity); + } + + @PostMapping("/deleteInstanceUserByCluster") + public void deleteInstanceUserByCluster(@RequestBody InstanceUserEntity instanceUserEntity) { + this.instanceUserService.deleteInstanceUserByCluster(instanceUserEntity); + } + + @PostMapping("/updateNameById") + public void updateNameById(@RequestBody InstanceUserEntity instanceUserEntity) { + this.instanceUserService.updatePasswordById(instanceUserEntity); + } + + @PostMapping("/selectAll") + public void selectAll() { + + } + + @PostMapping("/selectById") + public void selectById(@RequestBody InstanceUserEntity instanceUserEntity) { + this.instanceUserService.selectById(instanceUserEntity); + } + + @PostMapping("/selectByName") + public void selectByName(@RequestBody InstanceUserEntity instanceUserEntity) { + this.instanceUserService.selectByName(instanceUserEntity); + } + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/entity/acl/AclEntity.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/entity/acl/AclEntity.java new file mode 100644 index 00000000..78b7d7da --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/entity/acl/AclEntity.java @@ -0,0 +1,45 @@ +/* + * 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.eventmesh.dashboard.console.entity.acl; + +import org.apache.eventmesh.dashboard.console.entity.base.BaseEntity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true, exclude = "status") +public class AclEntity extends BaseEntity { + + private static final long serialVersionUID = 6057071983428111947L; + private Long id; + private Long clusterId; + private String pattern; + private Integer operation; + private Integer permissionType; + private String host; + private Integer resourceType; + private String resourceName; + private Integer patternType; + private Integer status; + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/entity/instanceuser/InstanceUserEntity.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/entity/instanceuser/InstanceUserEntity.java new file mode 100644 index 00000000..8ca85b42 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/entity/instanceuser/InstanceUserEntity.java @@ -0,0 +1,46 @@ +/* + * 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.eventmesh.dashboard.console.entity.instanceuser; + +import org.apache.eventmesh.dashboard.console.entity.base.BaseEntity; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + + +@Data +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode(callSuper = true, exclude = "status") +public class InstanceUserEntity extends BaseEntity { + + private Integer instanceType; + + private String password; + + private Long clusterId; + + private String name; + + private String token; + + private Integer status; + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/acl/AclMapper.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/acl/AclMapper.java new file mode 100644 index 00000000..e2e5021b --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/acl/AclMapper.java @@ -0,0 +1,64 @@ +/* + * 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.eventmesh.dashboard.console.mapper.acl; + +import org.apache.eventmesh.dashboard.console.entity.acl.AclEntity; + +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +/** + * Mybatis Mapper for the table of acl. + */ +@Mapper +public interface AclMapper { + + @Insert({ + ""}) + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + void batchInsert(List aclEntities); + + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + @Insert("INSERT INTO acl (cluster_id, pattern, operation, permission_type, host, resource_type, resource_name, pattern_type)" + + "VALUE (#{clusterId}, #{pattern}, #{operation}, #{permissionType}, #{host}, #{resourceType}, #{resourceName}, #{patternType})") + void insert(AclEntity aclEntity); + + @Update("UPDATE acl SET status=0 WHERE id=#{id}") + void deleteById(AclEntity aclEntity); + + @Update("UPDATE acl SET resource_type=#{resourceType} WHERE id=#{id}") + void updateResourceTypeById(AclEntity aclEntity); + + @Select("SELECT * FROM acl") + List selectAll(); + + @Select("SELECT * FROM acl WHERE id=#{id}") + AclEntity selectById(AclEntity aclEntity); +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/config/ConfigMapper.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/config/ConfigMapper.java index 167c7b24..905b551b 100644 --- a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/config/ConfigMapper.java +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/config/ConfigMapper.java @@ -52,7 +52,8 @@ public interface ConfigMapper { @Insert("INSERT INTO config (cluster_id, business_type, instance_type, instance_id, config_name, config_value, start_version, " + "status, is_default, end_version, diff_type, description, edit, is_modify, eventmesh_version) VALUE " + "(#{clusterId},#{businessType},#{instanceType},#{instanceId},#{configName}," - + "#{configValue},#{startVersion},#{status},#{isDefault},#{endVersion},#{diffType},#{description},#{edit},#{isModify},#{eventmeshVersion})") + + "#{configValue},#{startVersion},#{status},#{isDefault},#{endVersion},#{diffType}," + + "#{description},#{edit},#{isModify},#{eventmeshVersion})") @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") Integer addConfig(ConfigEntity configEntity); diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/instanceuser/InstanceUserMapper.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/instanceuser/InstanceUserMapper.java new file mode 100644 index 00000000..86017d76 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/mapper/instanceuser/InstanceUserMapper.java @@ -0,0 +1,56 @@ +/* + * 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.eventmesh.dashboard.console.mapper.instanceuser; + +import org.apache.eventmesh.dashboard.console.entity.instanceuser.InstanceUserEntity; + +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; +import org.apache.ibatis.annotations.Select; +import org.apache.ibatis.annotations.Update; + +import java.util.List; + +/** + * Mybatis Mapper for the table of instanceuser. + */ +@Mapper +public interface InstanceUserMapper { + + @Options(useGeneratedKeys = true, keyProperty = "id", keyColumn = "id") + @Insert("INSERT INTO instance_user (id, instance_type, password, cluster_id, name, token, status) " + + "VALUES (#{id}, #{instanceType}, #{password}, #{clusterId}, #{name}, #{token},1)") + void insert(InstanceUserEntity instanceuserEntity); + + @Update("UPDATE instance_user SET status=0 WHERE cluster_id=#{clusterId}") + void deleteInstanceUserByCluster(InstanceUserEntity instanceuserEntity); + + @Update("UPDATE instance_user SET password=#{password} WHERE id=#{id}") + void updatePasswordById(InstanceUserEntity instanceuserentity); + + @Select("SELECT * FROM instance_user WHERE status=1") + List selectAll(); + + @Select("SELECT * FROM instance_user WHERE id=#{id} AND status=1") + InstanceUserEntity selectById(InstanceUserEntity instanceuserEntity); + + @Select("SELECT * FROM instance_user WHERE name=#{name} AND status=1") + List selectByName(InstanceUserEntity instanceuserEntity); + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/acl/AclService.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/acl/AclService.java new file mode 100644 index 00000000..b92af3ad --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/acl/AclService.java @@ -0,0 +1,39 @@ +/* + * 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.eventmesh.dashboard.console.service.acl; + +import org.apache.eventmesh.dashboard.console.entity.acl.AclEntity; + +import java.util.List; + +/** + * Service providing data of acl. + */ +public interface AclService { + + void insert(AclEntity aclEntity); + + void deleteAclById(AclEntity aclEntity); + + void updateResourceTypeById(AclEntity aclEntity); + + List selectAll(); + + AclEntity selectById(AclEntity aclEntity); + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/acl/Impl/AclServiceImpl.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/acl/Impl/AclServiceImpl.java new file mode 100644 index 00000000..94d15194 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/acl/Impl/AclServiceImpl.java @@ -0,0 +1,59 @@ +/* + * 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.eventmesh.dashboard.console.service.acl.Impl; + +import org.apache.eventmesh.dashboard.console.entity.acl.AclEntity; +import org.apache.eventmesh.dashboard.console.mapper.acl.AclMapper; +import org.apache.eventmesh.dashboard.console.service.acl.AclService; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class AclServiceImpl implements AclService { + + @Autowired + private AclMapper aclMapper; + + @Override + public void insert(AclEntity aclEntity) { + aclMapper.insert(aclEntity); + } + + @Override + public void deleteAclById(AclEntity aclEntity) { + aclMapper.deleteById(aclEntity); + } + + @Override + public void updateResourceTypeById(AclEntity aclEntity) { + aclMapper.updateResourceTypeById(aclEntity); + } + + @Override + public List selectAll() { + return aclMapper.selectAll(); + } + + @Override + public AclEntity selectById(AclEntity aclEntity) { + return aclMapper.selectById(aclEntity); + } +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/instanceuser/Impl/InstanceUserServiceImpl.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/instanceuser/Impl/InstanceUserServiceImpl.java new file mode 100644 index 00000000..4b9fe1b2 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/instanceuser/Impl/InstanceUserServiceImpl.java @@ -0,0 +1,68 @@ +/* + * 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.eventmesh.dashboard.console.service.instanceuser.Impl; + +import org.apache.eventmesh.dashboard.console.entity.instanceuser.InstanceUserEntity; +import org.apache.eventmesh.dashboard.console.mapper.instanceuser.InstanceUserMapper; +import org.apache.eventmesh.dashboard.console.service.instanceuser.InstanceUserService; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +@Transactional + +@Service +public class InstanceUserServiceImpl implements InstanceUserService { + + @Autowired + private InstanceUserMapper instanceUserMapper; + + @Override + public void insert(InstanceUserEntity instanceuserEntity) { + instanceUserMapper.insert(instanceuserEntity); + } + + @Override + public void deleteInstanceUserByCluster(InstanceUserEntity instanceuserEntity) { + instanceUserMapper.deleteInstanceUserByCluster(instanceuserEntity); + } + + @Override + public void updatePasswordById(InstanceUserEntity instanceuserEntity) { + instanceUserMapper.updatePasswordById(instanceuserEntity); + } + + @Override + public List selectAll() { + return instanceUserMapper.selectAll(); + } + + @Override + public InstanceUserEntity selectById(InstanceUserEntity instanceuserEntity) { + return instanceUserMapper.selectById(instanceuserEntity); + } + + @Override + public List selectByName(InstanceUserEntity instanceuserEntity) { + return instanceUserMapper.selectByName(instanceuserEntity); + } + +} diff --git a/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/instanceuser/InstanceUserService.java b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/instanceuser/InstanceUserService.java new file mode 100644 index 00000000..8b512c45 --- /dev/null +++ b/eventmesh-dashboard-console/src/main/java/org/apache/eventmesh/dashboard/console/service/instanceuser/InstanceUserService.java @@ -0,0 +1,41 @@ +/* + * 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.eventmesh.dashboard.console.service.instanceuser; + +import org.apache.eventmesh.dashboard.console.entity.instanceuser.InstanceUserEntity; + +import java.util.List; + +/** + * InstanceUser data service + */ +public interface InstanceUserService { + + void insert(InstanceUserEntity instanceuserEntity); + + void deleteInstanceUserByCluster(InstanceUserEntity instanceuserEntity); + + void updatePasswordById(InstanceUserEntity instanceuserentity); + + List selectAll(); + + InstanceUserEntity selectById(InstanceUserEntity instanceuserEntity); + + List selectByName(InstanceUserEntity instanceuserEntity); + +} diff --git a/eventmesh-dashboard-console/src/main/resources/eventmesh-dashboard.sql b/eventmesh-dashboard-console/src/main/resources/eventmesh-dashboard.sql index fa1ccb3a..0e31fbd6 100644 --- a/eventmesh-dashboard-console/src/main/resources/eventmesh-dashboard.sql +++ b/eventmesh-dashboard-console/src/main/resources/eventmesh-dashboard.sql @@ -23,10 +23,10 @@ create table cluster register_name_list varchar(4096) default '' not null comment '注册中心名字', bootstrap_servers varchar(2048) default '' not null comment 'server地址', eventmesh_version varchar(32) default '' not null comment 'eventmesh版本', - client_properties text null comment 'EventMesh客户端配置', - jmx_properties text null comment 'JMX配置', - reg_properties text null comment '注册中心配置', - description text null comment '备注', + client_properties text null comment 'EventMesh客户端配置', + jmx_properties text null comment 'JMX配置', + reg_properties text null comment '注册中心配置', + description text null comment '备注', auth_type int default 0 not null comment '认证类型,-1未知,0:无认证,', run_state tinyint default 1 not null comment '运行状态, 0表示未监控, 1监控中,有注册中心,2:监控中,无注册中心', create_time timestamp default CURRENT_TIMESTAMP not null comment '接入时间', @@ -35,8 +35,7 @@ create table cluster store_type int default 0 not null, constraint uniq_name unique (name) -) - comment '物理集群信息表'; +) comment '物理集群信息表'; create index idx_uniq_name on cluster (name); @@ -52,10 +51,10 @@ create table config instance_type tinyint not null comment '配置类型 0:runtime,1:storage,2:connector,3:topic', instance_id bigint default -1 not null comment '实例ID,上面配置对应的(比如runtime)的id', config_name varchar(192) default '' not null comment '配置名称', - config_value text null comment '配置值', + config_value text null comment '配置值', start_version varchar(64) default '' not null comment '配置开始使用的版本', status int default 1 not null comment '0 关闭 1 开启 ', - is_default int default 1 null, + is_default int default 1 null, end_version varchar(64) default '' not null comment '配置结束使用的版本', diff_type int default -1 not null comment '差异类型', description varchar(1000) default '' not null comment '备注', @@ -66,8 +65,7 @@ create table config eventmesh_version varchar(64) default ' ' not null, constraint uniq_instance_type_instance_id_config_name unique (instance_id, config_name, instance_type) -) - comment '配置信息表'; +) comment '配置信息表'; create index idx_phy_id_instance_id on config (cluster_id, instance_id); @@ -81,8 +79,8 @@ create table `group` primary key, cluster_id bigint default -1 not null comment '集群id', name varchar(192) collate utf8_bin default '' not null comment 'Group名称', - member_count int unsigned default '0' not null comment '成员数', - members text null comment 'group的member列表', + member_count int unsigned default '0' not null comment '成员数', + members text null comment 'group的member列表', type tinyint not null comment 'group类型 0:consumer 1:producer', state varchar(64) default '' not null comment '状态', create_time timestamp default CURRENT_TIMESTAMP not null comment '创建时间', @@ -90,8 +88,7 @@ create table `group` status int default 1 not null, constraint uniq_cluster_phy_id_name unique (cluster_id, name) -) - comment 'Group信息表'; +) comment 'Group信息表'; create index cluster_id on `group` (cluster_id, name); @@ -112,16 +109,13 @@ create table group_member status int default 1 not null, constraint uniq_cluster_topic_group unique (cluster_id, topic_name, group_name) -) - comment 'GroupMember信息表'; +) comment 'GroupMember信息表'; create index cluster_id on group_member (cluster_id, topic_name, group_name); - - drop table if exists runtime; create table runtime ( @@ -140,8 +134,7 @@ create table runtime endpoint_map varchar(1024) default '' not null comment '监听信息', constraint uniq_cluster_phy_id__host_port unique (cluster_id, host) -) - comment 'Runtime信息表'; +) comment 'Runtime信息表'; create index idx_phy_id_host_storage_id on runtime (cluster_id, storage_cluster_id); @@ -169,30 +162,67 @@ create table store endpoint_map varchar(1024) default '' not null comment '监听信息', constraint uniq_cluster_phy_id__storage_id unique (cluster_id, store_id) -) - comment 'Store信息表'; +) comment 'Store信息表'; create index idx_store_id_runtime_id on store (store_id, cluster_id, runtime_id); +DROP TABLE IF EXISTS `instance_user`; +CREATE TABLE `instance_user` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', + `instance_type` int(255) NOT NULL DEFAULT 0 COMMENT '区分不同软件', + `password` varchar(100) NOT NULL DEFAULT '' COMMENT '密码', + `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '物理集群ID', + `name` varchar(192) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL DEFAULT '' COMMENT '名称', + `token` varchar(8192) NOT NULL DEFAULT '' COMMENT '密钥', + `status` int default 1 not null comment '状态: 1启用,0未启用', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Instance_User信息表'; + + + +DROP TABLE IF EXISTS `acl`; +CREATE TABLE `acl` +( + `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id', + `cluster_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '集群id', + `pattern` varchar(192) NOT NULL DEFAULT '' COMMENT 'Service User Pattern', + `operation` int(11) NOT NULL DEFAULT '0' COMMENT '操作,', + `permission_type` int(11) NOT NULL DEFAULT '0' COMMENT '权限类型(0:未知,1:任意,2:拒绝,3:允许)', + `host` varchar(192) NOT NULL DEFAULT '' COMMENT '', + `resource_type` int(11) NOT NULL DEFAULT '0' COMMENT '资源类型(0:未知,1:任意,10:Kafka Topic,11:Kafka Group;21:Rocketmq topic)', + `resource_name` varchar(192) NOT NULL DEFAULT '' COMMENT '资源名称', + `pattern_type` tinyint(4) NOT NULL COMMENT '匹配类型(0:未知,1:任意,2:Match,3:Literal,4:prefixed)', + `status` int NOT NULL DEFAULT 1 COMMENT '状态(0:删除,1:存在)', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + PRIMARY KEY (`id`), + INDEX `idx_cluster_phy_id_principal_res_name` (`cluster_id`, `pattern`, `resource_name`) +) ENGINE = InnoDB + DEFAULT CHARSET = utf8mb4, + DEFAULT COLLATE = utf8mb4_bin COMMENT ='ACL信息表'; + DROP TABLE IF EXISTS `group`; CREATE TABLE `group` ( - `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', + `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '集群id', `name` varchar(192) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'Group名称', - `member_count` int unsigned NOT NULL DEFAULT '0' COMMENT '成员数', + `member_count` int unsigned NOT NULL DEFAULT '0' COMMENT '成员数', `members` varchar(1024) COMMENT 'group的member列表', `type` tinyint NOT NULL COMMENT 'group类型 0:consumer 1:producer', `state` varchar(64) NOT NULL DEFAULT '' COMMENT '状态', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', - `status` int NOT NULL DEFAULT '1', + `status` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `uniq_cluster_phy_id_name` (`cluster_id`, `name`), - KEY `cluster_id` (`cluster_id`, `name`) + KEY `cluster_id` (`cluster_id`, `name`) ) ENGINE = InnoDB AUTO_INCREMENT = 322 DEFAULT CHARSET = utf8mb4, @@ -203,17 +233,17 @@ DROP TABLE IF EXISTS `group_member`; CREATE TABLE `group_member` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', - `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '集群ID', - `topic_name` varchar(192) NOT NULL DEFAULT '' COMMENT 'Topic名称', - `group_name` varchar(192) NOT NULL DEFAULT '' COMMENT 'Group名称', - `eventmesh_user` varchar(192) NOT NULL DEFAULT '' COMMENT 'EventMesh用户', - `state` varchar(64) NOT NULL DEFAULT '' COMMENT '状态', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', - `status` int NOT NULL DEFAULT '1', + `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '集群ID', + `topic_name` varchar(192) NOT NULL DEFAULT '' COMMENT 'Topic名称', + `group_name` varchar(192) NOT NULL DEFAULT '' COMMENT 'Group名称', + `eventmesh_user` varchar(192) NOT NULL DEFAULT '' COMMENT 'EventMesh用户', + `state` varchar(64) NOT NULL DEFAULT '' COMMENT '状态', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `status` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `uniq_cluster_topic_group` (`cluster_id`, `topic_name`, `group_name`), - KEY `cluster_id` (`cluster_id`, `topic_name`, `group_name`) + KEY `cluster_id` (`cluster_id`, `topic_name`, `group_name`) ) ENGINE = InnoDB AUTO_INCREMENT = 257 DEFAULT CHARSET = utf8mb4, @@ -224,19 +254,19 @@ DROP TABLE IF EXISTS `operation_log`; CREATE TABLE `operation_log` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', - `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '物理集群ID', - `operation_type` varchar(192) NOT NULL DEFAULT '' COMMENT '操作类型,如:启动,停止,重启,添加,删除,修改', - `state` int NOT NULL DEFAULT '0' COMMENT '操作状态 0:未知,1:执行中,2:成功,3:失败', + `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '物理集群ID', + `operation_type` varchar(192) NOT NULL DEFAULT '' COMMENT '操作类型,如:启动,停止,重启,添加,删除,修改', + `state` int NOT NULL DEFAULT '0' COMMENT '操作状态 0:未知,1:执行中,2:成功,3:失败', `content` varchar(1024) COMMENT '备注信息', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `end_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间', - `operation_user` varchar(192) DEFAULT NULL, + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `end_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间', + `operation_user` varchar(192) DEFAULT NULL, `result` varchar(1024), - `target_type` varchar(192) NOT NULL, - `is_delete` int NOT NULL DEFAULT '0', + `target_type` varchar(192) NOT NULL, + `is_delete` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), - KEY `idx_cluster_phy_id` (`cluster_id`), - KEY `idx_state` (`state`) + KEY `idx_cluster_phy_id` (`cluster_id`), + KEY `idx_state` (`state`) ) ENGINE = InnoDB AUTO_INCREMENT = 68 DEFAULT CHARSET = utf8mb4, @@ -247,20 +277,20 @@ DROP TABLE IF EXISTS `topic`; CREATE TABLE `topic` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', - `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '集群ID', + `cluster_id` bigint NOT NULL DEFAULT '-1' COMMENT '集群ID', `topic_name` varchar(192) CHARACTER SET utf8mb4 - COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'Topic名称', - `runtime_id` varchar(2048) NOT NULL DEFAULT '' COMMENT 'RuntimeId', - `storage_id` varchar(2048) NOT NULL DEFAULT '' COMMENT 'StorageId', - `retention_ms` bigint NOT NULL DEFAULT '-2' COMMENT '保存时间,-2:未知,-1:无限制,>=0对应时间,单位ms', - `type` tinyint NOT NULL DEFAULT '0' COMMENT 'Topic类型,默认0,0:普通,1:EventMesh内部', - `description` varchar(1024) DEFAULT '' COMMENT '备注信息', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间(尽量与Topic实际创建时间一致)', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间(尽量与Topic实际创建时间一致)', - `status` int NOT NULL DEFAULT '1', + COLLATE utf8mb4_bin NOT NULL DEFAULT '' COMMENT 'Topic名称', + `runtime_id` varchar(2048) NOT NULL DEFAULT '' COMMENT 'RuntimeId', + `storage_id` varchar(2048) NOT NULL DEFAULT '' COMMENT 'StorageId', + `retention_ms` bigint NOT NULL DEFAULT '-2' COMMENT '保存时间,-2:未知,-1:无限制,>=0对应时间,单位ms', + `type` tinyint NOT NULL DEFAULT '0' COMMENT 'Topic类型,默认0,0:普通,1:EventMesh内部', + `description` varchar(1024) DEFAULT '' COMMENT '备注信息', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间(尽量与Topic实际创建时间一致)', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间(尽量与Topic实际创建时间一致)', + `status` int NOT NULL DEFAULT '1', PRIMARY KEY (`id`), UNIQUE KEY `uniq_cluster_phy_id_topic_name` (`cluster_id`, `topic_name`), - KEY `cluster_id` (`cluster_id`, `topic_name`) + KEY `cluster_id` (`cluster_id`, `topic_name`) ) ENGINE = InnoDB AUTO_INCREMENT = 562 DEFAULT CHARSET = utf8mb4, @@ -270,24 +300,24 @@ CREATE TABLE `topic` DROP TABLE IF EXISTS `client`; CREATE TABLE `client` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', - `name` varchar(192) NOT NULL DEFAULT '' COMMENT '客户端名称', - `platform` varchar(192) NOT NULL DEFAULT '' COMMENT '客户端平台', - `language` varchar(192) NOT NULL DEFAULT '' COMMENT '客户端语言', - `pid` bigint(22) NOT NULL DEFAULT '-1' COMMENT '客户端进程ID', - `host` varchar(128) NOT NULL DEFAULT '' COMMENT '客户端地址', - `port` int(16) NOT NULL DEFAULT '-1' COMMENT '客户端端口', - `protocol` varchar(192) NOT NULL DEFAULT '' COMMENT '协议类型', + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', + `name` varchar(192) NOT NULL DEFAULT '' COMMENT '客户端名称', + `platform` varchar(192) NOT NULL DEFAULT '' COMMENT '客户端平台', + `language` varchar(192) NOT NULL DEFAULT '' COMMENT '客户端语言', + `pid` bigint(22) NOT NULL DEFAULT '-1' COMMENT '客户端进程ID', + `host` varchar(128) NOT NULL DEFAULT '' COMMENT '客户端地址', + `port` int(16) NOT NULL DEFAULT '-1' COMMENT '客户端端口', + `protocol` varchar(192) NOT NULL DEFAULT '' COMMENT '协议类型', `status` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '状态: 1启用,0未启用', - `config_ids` varchar(1024) NOT NULL DEFAULT '' COMMENT 'csv config id list, like:1,3,7', - `description` varchar(1024) NOT NULL DEFAULT '' COMMENT '客户端描述', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `config_ids` varchar(1024) NOT NULL DEFAULT '' COMMENT 'csv config id list, like:1,3,7', + `description` varchar(1024) NOT NULL DEFAULT '' COMMENT '客户端描述', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), - INDEX `idx_cluster_id` (`cluster_id`) + INDEX `idx_cluster_id` (`cluster_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4, DEFAULT COLLATE = utf8mb4_bin COMMENT ='client is an SDK application that can produce or consume events.'; @@ -298,17 +328,17 @@ DROP TABLE IF EXISTS `connector`; CREATE TABLE `connector` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', - `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', - `name` varchar(512) NOT NULL DEFAULT '' COMMENT 'Connector名称', - `class_name` varchar(512) NOT NULL DEFAULT '' COMMENT 'Connector类', - `type` varchar(32) NOT NULL DEFAULT '' COMMENT 'Connector类型', + `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', + `name` varchar(512) NOT NULL DEFAULT '' COMMENT 'Connector名称', + `class_name` varchar(512) NOT NULL DEFAULT '' COMMENT 'Connector类', + `type` varchar(32) NOT NULL DEFAULT '' COMMENT 'Connector类型', `status` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '状态: 1启用,0未启用', `pod_state` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT 'k8s pod状态。0: pending;1: running;2: success;3: failed;4: unknown', - `config_ids` varchar(1024) NOT NULL DEFAULT '' COMMENT 'csv config id list, like:1,3,7', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `config_ids` varchar(1024) NOT NULL DEFAULT '' COMMENT 'csv config id list, like:1,3,7', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), - INDEX `idx_cluster_id` (`cluster_id`) + INDEX `idx_cluster_id` (`cluster_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4, DEFAULT COLLATE = utf8mb4_bin COMMENT ='Connector信息表'; @@ -316,27 +346,27 @@ CREATE TABLE `connector` DROP TABLE IF EXISTS `connection`; CREATE TABLE `connection` ( - `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', - `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', - `source_type` varchar(64) NOT NULL DEFAULT '' COMMENT 'source类型,可以为client或source connector', - `source_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT 'client或source connector ID', - `sink_type` varchar(64) NOT NULL DEFAULT '' COMMENT 'sink类型,可以为client或sink connector', - `sink_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT 'client或sink connector ID', - `runtime_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '对应runtime id', + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id', + `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', + `source_type` varchar(64) NOT NULL DEFAULT '' COMMENT 'source类型,可以为client或source connector', + `source_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT 'client或source connector ID', + `sink_type` varchar(64) NOT NULL DEFAULT '' COMMENT 'sink类型,可以为client或sink connector', + `sink_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT 'client或sink connector ID', + `runtime_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '对应runtime id', `status` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '状态: 1启用,0未启用', - `topic` varchar(192) NOT NULL DEFAULT '' COMMENT 'topic name', - `group_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT 'GroupID', - `description` varchar(1024) NOT NULL DEFAULT '' COMMENT '客户端描述', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `topic` varchar(192) NOT NULL DEFAULT '' COMMENT 'topic name', + `group_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT 'GroupID', + `description` varchar(1024) NOT NULL DEFAULT '' COMMENT '客户端描述', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `end_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '结束时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), - INDEX `idx_cluster_id` (`cluster_id`), - INDEX `idx_group_id` (`group_id`), - INDEX `idx_topic` (`topic`), - INDEX `idx_source_id` (`source_id`), - INDEX `idx_sink_id` (`sink_id`) + INDEX `idx_cluster_id` (`cluster_id`), + INDEX `idx_group_id` (`group_id`), + INDEX `idx_topic` (`topic`), + INDEX `idx_source_id` (`source_id`), + INDEX `idx_sink_id` (`sink_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4, DEFAULT COLLATE = utf8mb4_bin COMMENT ='connection from event source to event sink. event source can be a source connector or a producer client.'; @@ -345,16 +375,16 @@ DROP TABLE IF EXISTS `health_check_result`; CREATE TABLE `health_check_result` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '自增id', - `type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '检查维度(0:未知, 1:Cluster, 2:Runtime, 3:Topic, 4:Storage)', + `type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '检查维度(0:未知, 1:Cluster, 2:Runtime, 3:Topic, 4:Storage)', `type_id` bigint(20) unsigned NOT NULL COMMENT '对应检查维度的实例id', - `cluster_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '集群ID', - `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '检查状态(0:未通过,1:通过,2:正在检查,3:超时)', - `result_desc` varchar(1024) NOT NULL DEFAULT '' COMMENT '检查结果描述', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', + `cluster_id` bigint(20) NOT NULL DEFAULT '0' COMMENT '集群ID', + `state` tinyint(4) NOT NULL DEFAULT '0' COMMENT '检查状态(0:未通过,1:通过,2:正在检查,3:超时)', + `result_desc` varchar(1024) NOT NULL DEFAULT '' COMMENT '检查结果描述', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), - INDEX `idx_cluster_id` (`cluster_id`), - INDEX `idx_type` (`type`) + INDEX `idx_cluster_id` (`cluster_id`), + INDEX `idx_type` (`type`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4, DEFAULT COLLATE = utf8mb4_bin COMMENT ='健康检查结果'; @@ -363,23 +393,30 @@ DROP TABLE IF EXISTS `meta`; CREATE TABLE `meta` ( `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id', - `name` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心名称', - `type` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心类型,nacos,etcd,zookeeper', - `version` varchar(128) NOT NULL DEFAULT '' COMMENT '注册中心版本', - `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', - `host` varchar(128) NOT NULL DEFAULT '' COMMENT '注册中心地址', - `port` int(16) NOT NULL DEFAULT '-1' COMMENT '注册中心端口', - `role` varchar(16) NOT NULL DEFAULT '-1' COMMENT '角色, leader follower observer', - `username` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心用户名', - `params` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心启动参数', + `name` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心名称', + `type` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心类型,nacos,etcd,zookeeper', + `version` varchar(128) NOT NULL DEFAULT '' COMMENT '注册中心版本', + `cluster_id` bigint(20) NOT NULL DEFAULT '-1' COMMENT '集群ID', + `host` varchar(128) NOT NULL DEFAULT '' COMMENT '注册中心地址', + `port` int(16) NOT NULL DEFAULT '-1' COMMENT '注册中心端口', + `role` varchar(16) NOT NULL DEFAULT '-1' COMMENT '角色, leader follower observer', + `username` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心用户名', + `params` varchar(192) NOT NULL DEFAULT '' COMMENT '注册中心启动参数', `status` tinyint(4) unsigned NOT NULL DEFAULT '0' COMMENT '状态: 1启用,0未启用', - `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', - `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', + `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', + `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', PRIMARY KEY (`id`), - INDEX `idx_cluster_id` (`cluster_id`) + INDEX `idx_cluster_id` (`cluster_id`) ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4, - DEFAULT COLLATE = utf8mb4_bin COMMENT ='注册中心信息表'; \ No newline at end of file + DEFAULT COLLATE = utf8mb4_bin COMMENT ='注册中心信息表'; + + + + + + + diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/acl/AclMapperTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/acl/AclMapperTest.java new file mode 100644 index 00000000..5071650e --- /dev/null +++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/acl/AclMapperTest.java @@ -0,0 +1,102 @@ +package org.apache.eventmesh.dashboard.console.mapper.acl; +import java.sql.Timestamp; + +import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication; +import org.apache.eventmesh.dashboard.console.entity.acl.AclEntity; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.ArrayList; +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = EventMeshDashboardApplication.class) +@ActiveProfiles("test") +@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = {"classpath:use-test-schema.sql", "classpath:eventmesh-dashboard.sql"}) +@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:acl-test.sql") + +public class AclMapperTest { + + @Autowired + private AclMapper aclMapper; + + @Test + public void testBatchInsert() { + + List aclEntities = new ArrayList<>(); + for (int i = 7; i < 10; i++) { + AclEntity aclEntity = new AclEntity(); + + aclEntity.setClusterId(1L); + aclEntity.setPattern("pattern1"); + aclEntity.setOperation(0); + aclEntity.setPermissionType(1); + aclEntity.setHost("127.0.0.1"); + aclEntity.setResourceType(1); + aclEntity.setResourceName("2"); + aclEntity.setPatternType(1); + aclEntities.add(aclEntity); + } + + aclMapper.batchInsert(aclEntities); + assertEquals(3, aclEntities.size()); + // aclEntities.size()返回的是新加的size,是3,而不是acl表中总的size,是5 + } + + @Test + public void testInsert() { +// AclEntity aclEntity = new AclEntity("", 0, "0", "", "0", "source_name", 1); + AclEntity aclEntity = new AclEntity(); + aclEntity.setClusterId(0L); + aclEntity.setPattern("pattern1"); + aclEntity.setOperation(0); + aclEntity.setPermissionType(1); + aclEntity.setHost("host"); + aclEntity.setResourceType(1); + aclEntity.setResourceName("resn"); + aclEntity.setPatternType(0); + aclEntity.setStatus(0); + aclEntity.setId(0L); + aclEntity.setClusterId(0L); + + aclMapper.insert(aclEntity); + assertNotNull(aclEntity); + assertEquals(5, aclEntity.getId()); + } + + @Test + public void testDelete() { + AclEntity aclEntity = new AclEntity(); + aclEntity.setId(4L); + aclMapper.deleteById(aclEntity); + assertEquals(4, aclEntity.getId()); + // 删除的就是id=4这条数据 + // 通过改status为0,实现删除 + } + + @Test + public void testUpdate() { + AclEntity aclEntity = new AclEntity(); + aclEntity.setId(3L); + aclEntity.setResourceType(10); + aclMapper.updateResourceTypeById(aclEntity); + aclEntity = aclMapper.selectById(aclEntity); + assertEquals(10, aclEntity.getResourceType()); + } + + @Test + public void testSelect() { + AclEntity aclEntity = new AclEntity(); + aclEntity.setId(3L); + aclMapper.selectById(aclEntity); + assertEquals(3, aclEntity.getId()); + } + +} diff --git a/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/instanceuser/InstanceUserMapperTest.java b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/instanceuser/InstanceUserMapperTest.java new file mode 100644 index 00000000..5a62e54e --- /dev/null +++ b/eventmesh-dashboard-console/src/test/java/org/apache/eventmesh/dashboard/console/mapper/instanceuser/InstanceUserMapperTest.java @@ -0,0 +1,68 @@ +package org.apache.eventmesh.dashboard.console.mapper.instanceuser; + +import org.apache.eventmesh.dashboard.console.EventMeshDashboardApplication; +import org.apache.eventmesh.dashboard.console.entity.instanceuser.InstanceUserEntity; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.jdbc.Sql; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; + +@ExtendWith(SpringExtension.class) +@SpringBootTest(classes = EventMeshDashboardApplication.class) +@ActiveProfiles("test") +@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = {"classpath:use-test-schema.sql", "classpath:eventmesh-dashboard.sql"}) +@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:instance-user-test.sql") +class InstanceUserMapperTest { + + @Autowired + private InstanceUserMapper instanceUserMapper; + + @Test + public void testSelectAll() { + List instanceUserEntities = instanceUserMapper.selectAll(); + assertEquals(3, instanceUserEntities.size()); + } + + @Test + public void testSelectById() { + InstanceUserEntity instanceUserEntity1 = new InstanceUserEntity(); + instanceUserEntity1.setId(3L); + InstanceUserEntity instanceUserEntity = instanceUserMapper.selectById(instanceUserEntity1); + assertEquals(3, instanceUserEntity.getId()); + } + + @Test + public void testSelectByName() { + InstanceUserEntity instanceUserEntity1 = new InstanceUserEntity(); + instanceUserEntity1.setName("name01"); + List instanceUserEntities = instanceUserMapper.selectByName(instanceUserEntity1); + assertEquals(1, instanceUserEntities.size()); + } + + @Test + public void testInsert() { + InstanceUserEntity instanceUserEntity = new InstanceUserEntity(0, "pwd", 13L, "name4", "11", 1); + instanceUserMapper.insert(instanceUserEntity); + assertNotNull(instanceUserEntity); + assertEquals(4, instanceUserEntity.getId()); + // instanceuser.sql中新加三条数据,这条数据id自增为4 + } + + @Test + public void testUpdateNameById() { + InstanceUserEntity instanceUserEntity = new InstanceUserEntity(); + instanceUserEntity.setId(3L); + instanceUserEntity.setPassword("123"); + instanceUserMapper.updatePasswordById(instanceUserEntity); + instanceUserEntity = instanceUserMapper.selectById(instanceUserEntity); + assertEquals("123", instanceUserEntity.getPassword()); + } + +} \ No newline at end of file diff --git a/eventmesh-dashboard-console/src/test/resources/acl-test.sql b/eventmesh-dashboard-console/src/test/resources/acl-test.sql new file mode 100644 index 00000000..5352e477 --- /dev/null +++ b/eventmesh-dashboard-console/src/test/resources/acl-test.sql @@ -0,0 +1,23 @@ +/* + * 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. + */ + +INSERT INTO eventmesh_dashboard_test.acl (id, cluster_id, pattern, operation, permission_type, host, resource_type, + resource_name, pattern_type, create_time, update_time) +VALUES (3, 0, '', 0, '0', '', '0', 'source_name', 1, '2024-03-27 13:22:36', '2024-03-27 14:12:07'); +INSERT INTO eventmesh_dashboard_test.acl (id, cluster_id, pattern, operation, permission_type, host, resource_type, + resource_name, pattern_type, create_time, update_time) +VALUES (4, 0, '', 0, '0', '', '0', 'source_name1', 1, '2024-03-27 13:22:36', '2024-03-27 14:12:07'); diff --git a/eventmesh-dashboard-console/src/test/resources/instance-user-test.sql b/eventmesh-dashboard-console/src/test/resources/instance-user-test.sql new file mode 100644 index 00000000..2a4b47ba --- /dev/null +++ b/eventmesh-dashboard-console/src/test/resources/instance-user-test.sql @@ -0,0 +1,28 @@ +/* + * 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. + */ +DELETE FROM `eventmesh_dashboard_test`.instance_user WHERE TRUE; +ALTER TABLE `eventmesh_dashboard_test`.instance_user AUTO_INCREMENT = 1; + +INSERT INTO eventmesh_dashboard_test.instance_user (instance_type, password, cluster_id, name, token, status) +VALUES (1, 'pwd01', 1, 'name01', 'token01', 1); + +INSERT INTO eventmesh_dashboard_test.instance_user (instance_type, password, cluster_id, name, token, status) +VALUES (2, 'pwd02', 2, 'name02', 'token02', 1); + +INSERT INTO eventmesh_dashboard_test.instance_user (instance_type, password, cluster_id, name, token, status) +VALUES (3, 'pwd03', 3, 'name03', 'token03', 1); + diff --git a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/remoting/UserRemotingService.java b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/remoting/UserRemotingService.java index 69ec414e..5f5e18d3 100644 --- a/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/remoting/UserRemotingService.java +++ b/eventmesh-dashboard-service/src/main/java/org/apache/eventmesh/dashboard/service/remoting/UserRemotingService.java @@ -27,9 +27,9 @@ */ public interface UserRemotingService { - CreateUserRequest createServiceUser(CreateUserRequest request); + CreateUserRequest createInstanceUser(CreateUserRequest request); - DeleterUserRequest deleteServiceUser(DeleterUserRequest request); + DeleterUserRequest deleteInstanceUser(DeleterUserRequest request); - GetUserResult getServiceUser(GetUserRequest request); + GetUserResult getInstanceUser(GetUserRequest request); }