You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@linkis.apache.org by ca...@apache.org on 2022/08/23 07:59:02 UTC
[incubator-linkis] branch dev-1.3.0 updated: EnginePlugin managment module (#2914) (#2916)
This is an automated email from the ASF dual-hosted git repository.
casion pushed a commit to branch dev-1.3.0
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git
The following commit(s) were added to refs/heads/dev-1.3.0 by this push:
new 40f7d5bb9 EnginePlugin managment module (#2914) (#2916)
40f7d5bb9 is described below
commit 40f7d5bb9cbd4f6a75ad928c1968beb6810b4ac7
Author: yyuser5201314 <63...@users.noreply.github.com>
AuthorDate: Tue Aug 23 15:58:56 2022 +0800
EnginePlugin managment module (#2914) (#2916)
* EnginePlugin managment module (#2914)
* EnginePlugin managment module add swagger annotation(#2914)
---
.../server/dao/EngineConnBmlResourceDao.java | 7 +
.../dao/impl/EngineConnBmlResourceMapper.xml | 32 +-
.../server/entity/EngineConnBmlResource.java | 6 +
.../server/restful/EnginePluginRestful.java | 198 ++++++++-
.../EnginePluginAdminService.java} | 29 +-
.../service/impl/EnginePluginAdminService.java | 154 +++++++
.../EnginePluginBMLVo.java} | 34 +-
.../PageViewVo.java} | 31 +-
.../AbstractEngineConnBmlResourceGenerator.scala | 4 +-
linkis-web/src/apps/linkis/i18n/common/zh.json | 27 +-
.../linkis/module/EnginePluginManagement/index.js | 25 +-
.../module/EnginePluginManagement/index.scss | 46 +-
.../linkis/module/EnginePluginManagement/index.vue | 479 +++++++++++++++++++++
linkis-web/src/apps/linkis/router.js | 14 +-
linkis-web/src/apps/linkis/view/linkis/index.vue | 5 +-
15 files changed, 997 insertions(+), 94 deletions(-)
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
index 8da15ca50..54d4fcd8a 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
@@ -18,6 +18,7 @@
package org.apache.linkis.engineplugin.server.dao;
import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
+import org.apache.linkis.engineplugin.vo.EnginePluginBMLVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@@ -27,6 +28,12 @@ import java.util.List;
@Mapper
public interface EngineConnBmlResourceDao {
+ List<String> getTypeList();
+
+ List<String> getTypeVersionList(@Param("type") String type);
+
+ List<EngineConnBmlResource> selectByPageVo(EnginePluginBMLVo enginePluginBMLVo);
+
List<EngineConnBmlResource> getAllEngineConnBmlResource(
@Param("engineConnType") String engineConnType, @Param("version") String version);
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/impl/EngineConnBmlResourceMapper.xml b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/impl/EngineConnBmlResourceMapper.xml
index 5145b3532..1be548bbc 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/impl/EngineConnBmlResourceMapper.xml
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/impl/EngineConnBmlResourceMapper.xml
@@ -6,16 +6,16 @@
~ 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.
-->
-
+
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="org.apache.linkis.engineplugin.server.dao.EngineConnBmlResourceDao">
@@ -31,6 +31,30 @@
WHERE engine_conn_type=#{engineConnType} and `version`=#{version}
</select>
+ <select id="getTypeVersionList" resultType="String">
+ SELECT version FROM linkis_cg_engine_conn_plugin_bml_resources where engine_conn_type = #{type} GROUP BY version
+ </select>
+
+ <select id="getTypeList" resultType="String">
+ SELECT engine_conn_type FROM linkis_cg_engine_conn_plugin_bml_resources GROUP BY engine_conn_type
+ </select>
+
+ <select id="selectByPageVo"
+ resultType="org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource">
+ SELECT
+ *
+ FROM linkis_cg_engine_conn_plugin_bml_resources
+ <where>
+ <if test="engineConnType != null and engineConnType != ''">
+ <![CDATA[AND `engine_conn_type` like concat('%', #{engineConnType}, '%')]]>
+ </if>
+ <if test="engineConnVersion != null and engineConnVersion != ''">
+ <![CDATA[AND `version` like concat('%', #{engineConnVersion}, '%')]]>
+ </if>
+ </where>
+ <![CDATA[ ORDER BY create_time DESC ]]>
+ </select>
+
<delete id="delete" parameterType="org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource">
delete from linkis_cg_engine_conn_plugin_bml_resources where
engine_conn_type=#{engineConnBmlResource.engineConnType} and
@@ -66,4 +90,4 @@
</insert>
-</mapper>
\ No newline at end of file
+</mapper>
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/entity/EngineConnBmlResource.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/entity/EngineConnBmlResource.java
index d177e8616..6b341e83e 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/entity/EngineConnBmlResource.java
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/entity/EngineConnBmlResource.java
@@ -19,6 +19,8 @@ package org.apache.linkis.engineplugin.server.entity;
import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+
public class EngineConnBmlResource {
private Long id;
@@ -29,7 +31,11 @@ public class EngineConnBmlResource {
private Long fileSize;
private String bmlResourceId;
private String bmlResourceVersion;
+
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTime;
+
+ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
private Date lastUpdateTime;
public Long getId() {
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/restful/EnginePluginRestful.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/restful/EnginePluginRestful.java
index a9207d2fd..86600e0fc 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/restful/EnginePluginRestful.java
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/restful/EnginePluginRestful.java
@@ -17,17 +17,19 @@
package org.apache.linkis.engineplugin.server.restful;
+import com.github.pagehelper.PageInfo;
+import org.apache.linkis.bml.protocol.Version;
import org.apache.linkis.common.conf.Configuration;
+import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
import org.apache.linkis.engineplugin.server.service.EngineConnResourceService;
+import org.apache.linkis.engineplugin.server.service.EnginePluginAdminService;
import org.apache.linkis.engineplugin.server.service.RefreshEngineConnResourceRequest;
+import org.apache.linkis.engineplugin.vo.EnginePluginBMLVo;
import org.apache.linkis.server.Message;
import org.apache.linkis.server.utils.ModuleUserUtils;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestMethod;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
@@ -35,6 +37,9 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
@Api(tags = "ECP(engineconn plugin) operation")
@RestController
@@ -44,6 +49,191 @@ public class EnginePluginRestful {
private static final Logger log = LoggerFactory.getLogger(EnginePluginRestful.class);
@Autowired private EngineConnResourceService engineConnResourceService;
+ @Autowired private EnginePluginAdminService enginePluginAdminService;
+
+ @ApiOperation(value = "rollBack", notes = "modify the default bmlResourceVersion of the engineplugin", response = Message.class)
+ @RequestMapping(path = "/rollBack", method = RequestMethod.POST)
+ public Message rollBackEnginePlugin(HttpServletRequest req,
+ @RequestBody EngineConnBmlResource engineConnBmlResource) {
+ String username = ModuleUserUtils.getOperationUser(req, "rollBackEnginePlugin");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to rollBack EnginePlugin {} {}", username,engineConnBmlResource.getEngineConnType(),engineConnBmlResource.getVersion());
+ try {
+ enginePluginAdminService.rollBackEnginePlugin(engineConnBmlResource);
+ log.info("{} finished to rollBack EnginePlugin {} {}", username,engineConnBmlResource.getEngineConnType(),engineConnBmlResource.getVersion());
+ return Message.ok();
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }
+
+ @ApiOperation(value = "getVersionList", notes = "get all bmlResourceVersion of engineplugin", response = Message.class)
+ @RequestMapping(path = "/getVersionList", method = RequestMethod.GET)
+ public Message getVersionList(HttpServletRequest req,
+ @RequestParam(value = "ecType", required = false) String ecType,
+ @RequestParam(value = "version", required = false) String version,
+ @RequestParam(value = "bmlResourceId", required = false) String bmlResourceId) {
+ String username = ModuleUserUtils.getOperationUser(req, "getVersionList");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to get all ec resource versionList", username);
+ try {
+ List<Version> typeList = enginePluginAdminService.getVersionList(username,bmlResourceId);
+ log.info("{} finished get all ec resource versionList", username);
+ return Message.ok().data("versionList", typeList);
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }
+
+ @ApiOperation(value = "getTypeList", notes = "get all types of engineplugin", response = Message.class)
+ @RequestMapping(path = "/getTypeList", method = RequestMethod.GET)
+ public Message getTypeList(HttpServletRequest req) {
+ String username = ModuleUserUtils.getOperationUser(req, "getTypeList");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to get all ec resource TypeList", username);
+ try {
+ List<String> typeList = enginePluginAdminService.getTypeList();
+ log.info("{} finished get all ec resource TypeList", username);
+ return Message.ok().data("typeList", typeList);
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }
+
+ @ApiOperation(value = "getTypeVersionList", notes = "get all versions of the engineplgin type", response = Message.class)
+ @RequestMapping(path = "/getTypeVersionList/{type}", method = RequestMethod.GET)
+ public Message getTypeVersionList(
+ @PathVariable("type") String type,
+ HttpServletRequest req) {
+ String username = ModuleUserUtils.getOperationUser(req, "getTypeList");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to get all ec resource TypeList", username);
+ try {
+ List<String> typeList = enginePluginAdminService.getTypeVersionList(type);
+ log.info("{} finished get all ec resource TypeList", username);
+ return Message.ok().data("queryList", typeList);
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }
+
+ @ApiOperation(value = "updateEnginePluginBML", notes = "Add a new version of the engineplugin", response = Message.class)
+ @RequestMapping(path = "/updateEnginePluginBML", method = RequestMethod.POST)
+ public Message updateEnginePluginBML(@RequestParam("file") MultipartFile file,
+ @RequestParam(value = "ecType") String ecType,
+ @RequestParam(value = "version") String version,
+ HttpServletRequest req) {
+ if(ecType.isEmpty() || ecType.length() == 0 || ecType.equals("null")){
+ return Message.error("ecType is not null");
+ }else if(version.isEmpty() || version.length() == 0 || version.equals("null")){
+ return Message.error("version is not null");
+ }
+ file.getOriginalFilename().toLowerCase().endsWith(".zip");
+ if(file.getOriginalFilename().toLowerCase().endsWith(".zip")){
+ String username = ModuleUserUtils.getOperationUser(req, "uploadEnginePluginBML");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to update enginePlugin {} {}", username,ecType,version);
+ try {
+ enginePluginAdminService.uploadToECHome(file);
+ RefreshEngineConnResourceRequest refreshEngineConnResourceRequest =
+ new RefreshEngineConnResourceRequest();
+ refreshEngineConnResourceRequest.setEngineConnType(ecType);
+ refreshEngineConnResourceRequest.setVersion(version);
+ engineConnResourceService.refresh(refreshEngineConnResourceRequest);
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ log.info("{} finished to update enginePlugin {} {}", username,ecType,version);
+ return Message.ok().data("mes", "upload file success");
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }else {
+ return Message.error("Only suppose zip format file");
+ }
+ }
+
+ @ApiOperation(value = "list", notes = "list all engineplugin", response = Message.class)
+ @RequestMapping(path = "/list", method = RequestMethod.GET)
+ public Message list(
+ @RequestParam(value = "ecType", required = false) String ecType,
+ @RequestParam(value = "version", required = false) String version,
+ @RequestParam(value = "currentPage", required = false) Integer currentPage,
+ @RequestParam(value = "pageSize", required = false) Integer pageSize,
+ HttpServletRequest req) {
+ String username = ModuleUserUtils.getOperationUser(req, "list");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to list all ec resource", username);
+ EnginePluginBMLVo enginePluginBMLVo =
+ new EnginePluginBMLVo(
+ ecType,version);
+ enginePluginBMLVo.setCurrentPage(null != currentPage ? currentPage : 1);
+ enginePluginBMLVo.setPageSize(null != pageSize ? pageSize : 10);
+ PageInfo<EngineConnBmlResource> engineConnBmlResourcePageInfo = enginePluginAdminService.queryDataSourceInfoPage(enginePluginBMLVo);
+ log.info("{} finished to list all ec resource", username);
+ List<EngineConnBmlResource> queryList = engineConnBmlResourcePageInfo.getList();
+ return Message.ok().data("queryList", queryList)
+ .data("totalPage", engineConnBmlResourcePageInfo.getTotal());
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }
+
+ @ApiOperation(value = "uploadEnginePluginBML", notes = "add one engineplugin", response = Message.class)
+ @RequestMapping(path = "/uploadEnginePluginBML", method = RequestMethod.POST)
+ public Message uploadEnginePluginBML(@RequestParam("file") MultipartFile file, HttpServletRequest req) {
+ file.getOriginalFilename().toLowerCase().endsWith(".zip");
+ if(file.getOriginalFilename().toLowerCase().endsWith(".zip")){
+ String username = ModuleUserUtils.getOperationUser(req, "uploadEnginePluginBML");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to upload enginePlugin", username);
+ try {
+ enginePluginAdminService.uploadToECHome(file);
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ engineConnResourceService.refreshAll(true);
+ log.info("{} finished to upload enginePlugin", username);
+ return Message.ok().data("mes", "upload file success");
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }else {
+ return Message.error("Only suppose zip format file");
+ }
+ }
+
+ @ApiOperation(value = "deleteEnginePluginBML", notes = "delete one engineplugin", response = Message.class)
+ @RequestMapping(path = "/deleteEnginePluginBML", method = RequestMethod.GET)
+ public Message deleteEnginePluginBML(HttpServletRequest req,
+ @RequestParam(value = "ecType") String ecType,
+ @RequestParam(value = "version", required = false) String version) {
+ String username = ModuleUserUtils.getOperationUser(req, "deleteEnginePluginBML");
+ if (Configuration.isAdmin(username)) {
+ log.info("{} start to delete engineplugin {} {}", username,ecType,version);
+ try {
+ enginePluginAdminService.deleteEnginePluginBML(ecType,version,username);
+ } catch (Exception e) {
+ return Message.error(e.getMessage());
+ }
+ log.info("{} finished to delete engineplugin {} {}", username,ecType,version);
+ return Message.ok().data("msg", "delete successfully");
+ } else {
+ return Message.error("Only administrators can operate");
+ }
+ }
@ApiOperation(value = "refreshAll", notes = "refresh all engineconn resource", response = Message.class)
@RequestMapping(path = "/refreshAll", method = RequestMethod.GET)
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/service/EnginePluginAdminService.java
similarity index 52%
copy from linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
copy to linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/service/EnginePluginAdminService.java
index 8da15ca50..211c51454 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/service/EnginePluginAdminService.java
@@ -6,7 +6,7 @@
* (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
+ * 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,
@@ -15,24 +15,31 @@
* limitations under the License.
*/
-package org.apache.linkis.engineplugin.server.dao;
+package org.apache.linkis.engineplugin.server.service;
+import org.apache.linkis.bml.protocol.Version;
import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
+import org.apache.linkis.engineplugin.vo.EnginePluginBMLVo;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
+import org.springframework.web.multipart.MultipartFile;
import java.util.List;
-@Mapper
-public interface EngineConnBmlResourceDao {
+import com.github.pagehelper.PageInfo;
- List<EngineConnBmlResource> getAllEngineConnBmlResource(
- @Param("engineConnType") String engineConnType, @Param("version") String version);
+public interface EnginePluginAdminService {
- void save(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+ void rollBackEnginePlugin(EngineConnBmlResource engineConnBmlResource);
- void update(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+ void uploadToECHome(MultipartFile file);
- void delete(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+ void deleteEnginePluginBML(String ecType, String version, String username);
+
+ PageInfo<EngineConnBmlResource> queryDataSourceInfoPage(EnginePluginBMLVo enginePluginBMLVo);
+
+ List<String> getTypeList();
+
+ List<String> getTypeVersionList(String type);
+
+ List<Version> getVersionList(String userName, String bmlResourceId);
}
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/service/impl/EnginePluginAdminService.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/service/impl/EnginePluginAdminService.java
new file mode 100644
index 000000000..bf6369857
--- /dev/null
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/service/impl/EnginePluginAdminService.java
@@ -0,0 +1,154 @@
+/*
+ * 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.linkis.engineplugin.server.service.impl;
+
+import org.apache.linkis.bml.client.BmlClient;
+import org.apache.linkis.bml.client.BmlClientFactory;
+import org.apache.linkis.bml.protocol.BmlResourceVersionsResponse;
+import org.apache.linkis.bml.protocol.Version;
+import org.apache.linkis.common.utils.ZipUtils;
+import org.apache.linkis.engineplugin.server.dao.EngineConnBmlResourceDao;
+import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
+import org.apache.linkis.engineplugin.server.localize.AbstractEngineConnBmlResourceGenerator;
+import org.apache.linkis.engineplugin.server.restful.EnginePluginRestful;
+import org.apache.linkis.engineplugin.vo.EnginePluginBMLVo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.List;
+
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+@Service
+public class EnginePluginAdminService
+ implements org.apache.linkis.engineplugin.server.service.EnginePluginAdminService {
+
+ private static final Logger log = LoggerFactory.getLogger(EnginePluginRestful.class);
+ @Autowired private EngineConnBmlResourceDao engineConnBmlResourceDao;
+ @Autowired private AbstractEngineConnBmlResourceGenerator abstractEngineConnBmlResourceGenerator;
+
+ private BmlClient bmlClient = BmlClientFactory.createBmlClient();
+
+ @Override
+ public void rollBackEnginePlugin(EngineConnBmlResource engineConnBmlResource) {
+ engineConnBmlResourceDao.update(engineConnBmlResource);
+ }
+
+ @Override
+ public List<String> getTypeVersionList(String type) {
+ return engineConnBmlResourceDao.getTypeVersionList(type);
+ }
+
+ @Override
+ public List<Version> getVersionList(String userName, String bmlResourceId) {
+ BmlResourceVersionsResponse versions = bmlClient.getVersions(userName, bmlResourceId);
+ List<Version> versions1 = versions.resourceVersions().versions();
+ return versions1;
+ }
+
+ @Override
+ public List<String> getTypeList() {
+ return engineConnBmlResourceDao.getTypeList();
+ }
+
+ @Override
+ public void deleteEnginePluginBML(String ecType, String version, String username) {
+ List<EngineConnBmlResource> allEngineConnBmlResource = null;
+ try {
+ allEngineConnBmlResource =
+ engineConnBmlResourceDao.getAllEngineConnBmlResource(ecType, version);
+ allEngineConnBmlResource.forEach(
+ engineConnBmlResource -> {
+ // 等待bug修复后修改
+ // bmlClient.deleteResource(username,engineConnBmlResource.getBmlResourceId());
+ engineConnBmlResourceDao.delete(engineConnBmlResource);
+ });
+ String engineConnsHome = abstractEngineConnBmlResourceGenerator.getEngineConnsHome();
+ File file = new File(engineConnsHome + "/" + ecType);
+ if (file.exists()) {
+ deleteDir(file);
+ log.info("file {} delete success", ecType);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public PageInfo<EngineConnBmlResource> queryDataSourceInfoPage(
+ EnginePluginBMLVo enginePluginBMLVo) {
+ PageHelper.startPage(enginePluginBMLVo.getCurrentPage(), enginePluginBMLVo.getPageSize());
+ try {
+ List<EngineConnBmlResource> queryList =
+ engineConnBmlResourceDao.selectByPageVo(enginePluginBMLVo);
+ return new PageInfo<>(queryList);
+ } finally {
+ PageHelper.clearPage();
+ }
+ }
+
+ @Override
+ public void uploadToECHome(MultipartFile mfile) {
+ String engineConnsHome = abstractEngineConnBmlResourceGenerator.getEngineConnsHome();
+ try {
+ InputStream in = mfile.getInputStream();
+ byte[] buffer = new byte[1024];
+ int len = 0;
+ File file = new File(engineConnsHome);
+ if (!file.exists()) {
+ log.info("engineplugin's home doesn’t exist");
+ }
+ OutputStream out = new FileOutputStream(engineConnsHome + "/" + mfile.getOriginalFilename());
+ while ((len = in.read(buffer)) != -1) {
+ out.write(buffer, 0, len);
+ }
+ out.close();
+ in.close();
+ } catch (Exception e) {
+ log.info("file {} upload fail", mfile.getOriginalFilename());
+ }
+
+ ZipUtils.fileToUnzip(engineConnsHome + "/" + mfile.getOriginalFilename(), engineConnsHome);
+ File file = new File(engineConnsHome + "/" + mfile.getOriginalFilename());
+ if (file.exists()) {
+ file.delete();
+ log.info("file {} delete success", mfile.getOriginalFilename());
+ }
+ }
+
+ public static void deleteDir(File directory) {
+ File files[] = directory.listFiles();
+ for (File file : files) {
+ if (file.isDirectory()) {
+ deleteDir(file);
+ } else {
+ file.delete();
+ }
+ }
+ directory.delete();
+ }
+}
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/vo/EnginePluginBMLVo.java
similarity index 53%
copy from linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
copy to linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/vo/EnginePluginBMLVo.java
index 8da15ca50..f5265b9d6 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/vo/EnginePluginBMLVo.java
@@ -15,24 +15,30 @@
* limitations under the License.
*/
-package org.apache.linkis.engineplugin.server.dao;
+package org.apache.linkis.engineplugin.vo;
-import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
+public class EnginePluginBMLVo extends PageViewVo {
+ private String engineConnType;
+ private String engineConnVersion;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
+ public EnginePluginBMLVo(String engineConnType, String engineConnVersion) {
+ this.engineConnType = engineConnType;
+ this.engineConnVersion = engineConnVersion;
+ }
-import java.util.List;
+ public String getEngineConnType() {
+ return engineConnType;
+ }
-@Mapper
-public interface EngineConnBmlResourceDao {
+ public void setEngineConnType(String engineConnType) {
+ this.engineConnType = engineConnType;
+ }
- List<EngineConnBmlResource> getAllEngineConnBmlResource(
- @Param("engineConnType") String engineConnType, @Param("version") String version);
+ public String getEngineConnVersion() {
+ return engineConnVersion;
+ }
- void save(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-
- void update(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-
- void delete(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+ public void setEngineConnVersion(String engineConnVersion) {
+ this.engineConnVersion = engineConnVersion;
+ }
}
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/vo/PageViewVo.java
similarity index 53%
copy from linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
copy to linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/vo/PageViewVo.java
index 8da15ca50..bb48a24dd 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/vo/PageViewVo.java
@@ -15,24 +15,25 @@
* limitations under the License.
*/
-package org.apache.linkis.engineplugin.server.dao;
+package org.apache.linkis.engineplugin.vo;
-import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
+public class PageViewVo {
+ private int currentPage;
+ private int pageSize;
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
+ public int getCurrentPage() {
+ return currentPage;
+ }
-import java.util.List;
+ public void setCurrentPage(int currentPage) {
+ this.currentPage = currentPage;
+ }
-@Mapper
-public interface EngineConnBmlResourceDao {
+ public int getPageSize() {
+ return pageSize;
+ }
- List<EngineConnBmlResource> getAllEngineConnBmlResource(
- @Param("engineConnType") String engineConnType, @Param("version") String version);
-
- void save(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-
- void update(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-
- void delete(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+ public void setPageSize(int pageSize) {
+ this.pageSize = pageSize;
+ }
}
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/scala/org/apache/linkis/engineplugin/server/localize/AbstractEngineConnBmlResourceGenerator.scala b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/scala/org/apache/linkis/engineplugin/server/localize/AbstractEngineConnBmlResourceGenerator.scala
index 11d520644..b46b82455 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/scala/org/apache/linkis/engineplugin/server/localize/AbstractEngineConnBmlResourceGenerator.scala
+++ b/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/scala/org/apache/linkis/engineplugin/server/localize/AbstractEngineConnBmlResourceGenerator.scala
@@ -51,9 +51,9 @@ abstract class AbstractEngineConnBmlResourceGenerator extends EngineConnBmlResou
"Cannot find the home path of engineconn dist."
)
if (StringUtils.isBlank(version) || NO_VERSION_MARK == version) return engineConnDistHome
- val engineConnPackageHome = Paths.get(engineConnDistHome, "v" + version).toFile.getPath
+ val engineConnPackageHome = Paths.get(engineConnDistHome, version).toFile.getPath
if (new File(engineConnPackageHome).exists()) engineConnPackageHome
- else engineConnDistHome
+ else Paths.get(engineConnDistHome, "v" + version).toFile.getPath
}
protected def getEngineConnDistHomeList(engineConnType: String): Array[String] = {
diff --git a/linkis-web/src/apps/linkis/i18n/common/zh.json b/linkis-web/src/apps/linkis/i18n/common/zh.json
index 8cb191b8c..2e0ed0dbe 100644
--- a/linkis-web/src/apps/linkis/i18n/common/zh.json
+++ b/linkis-web/src/apps/linkis/i18n/common/zh.json
@@ -155,7 +155,8 @@
"udfFunctionManage": "UDF管理",
"functionManagement": "函数管理",
"dataSourceManage": "数据源管理",
- "userResourceManagement": "用户资源管理"
+ "userResourceManagement": "用户资源管理",
+ "EnginePluginManagement": "引擎物料管理"
}
}
},
@@ -317,7 +318,29 @@
"cannotPublish": "不可发布",
"used": "可用",
"commentValue": "从版本 {text} 回滚"
- }
+ },
+ "EnginePluginManagement": {
+ "engineConnType": "引擎类型",
+ "engineConnVersion": "引擎版本",
+ "create": "新增引擎插件",
+ "fileName": "文件名称",
+ "fileSize": "文件大小",
+ "lastModified": "文件更新时间",
+ "bmlResourceId": "物料资源Id",
+ "bmlResourceVersion": "物料资源版本",
+ "lastUpdateTime": "更新时间",
+ "createTime": "创建时间",
+ "Reset": "重置",
+ "delete": "删除已选物料的版本",
+ "update": "更新引擎插件",
+ "updateFileOnly": "更新",
+ "resourceVersion": "引擎物料bml版本",
+ "user": "所属人",
+ "deleteCurrentbml": "删除",
+ "versionList": "版本列表",
+ "rollback": "回滚",
+ "action": "操作"
+ }
}
}
}
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.js
similarity index 52%
copy from linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
copy to linkis-web/src/apps/linkis/module/EnginePluginManagement/index.js
index 8da15ca50..7e9d3693c 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
+++ b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.js
@@ -15,24 +15,7 @@
* limitations under the License.
*/
-package org.apache.linkis.engineplugin.server.dao;
-
-import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
-
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-@Mapper
-public interface EngineConnBmlResourceDao {
-
- List<EngineConnBmlResource> getAllEngineConnBmlResource(
- @Param("engineConnType") String engineConnType, @Param("version") String version);
-
- void save(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-
- void update(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-
- void delete(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
-}
+export default {
+ name: 'EnginePluginManagement',
+ component: () => import('./index.vue'),
+};
diff --git a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.scss
similarity index 53%
copy from linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
copy to linkis-web/src/apps/linkis/module/EnginePluginManagement/index.scss
index 8da15ca50..f9898b0f2 100644
--- a/linkis-computation-governance/linkis-engineconn/linkis-engineconn-plugin-server/src/main/java/org/apache/linkis/engineplugin/server/dao/EngineConnBmlResourceDao.java
+++ b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.scss
@@ -14,25 +14,37 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+@import '@/common/style/variables.scss';
+
+.search-bar {
+ .search-item11 {
+ display: flex;
+ justify-content: flex-start;
+ align-items: center;
+ font-size: $font-size-base;
+
+ .lable {
+ width: 180px;
+ // flex-basis: 130px;
+ text-align: right;
+ }
+ }
+
+ .ivu-col {
+ display: flex;
+ justify-content: center;
+ }
-package org.apache.linkis.engineplugin.server.dao;
-
-import org.apache.linkis.engineplugin.server.entity.EngineConnBmlResource;
-
-import org.apache.ibatis.annotations.Mapper;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-@Mapper
-public interface EngineConnBmlResourceDao {
-
- List<EngineConnBmlResource> getAllEngineConnBmlResource(
- @Param("engineConnType") String engineConnType, @Param("version") String version);
+}
- void save(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+.table-content {
+ margin-top: 25px;
+}
- void update(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
- void delete(@Param("engineConnBmlResource") EngineConnBmlResource engineConnBmlResource);
+.modal {
+ .footer {
+ display: flex;
+ justify-content: space-between;
+ }
}
diff --git a/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue
new file mode 100644
index 000000000..d7d073a92
--- /dev/null
+++ b/linkis-web/src/apps/linkis/module/EnginePluginManagement/index.vue
@@ -0,0 +1,479 @@
+<!--
+ ~ 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.
+ -->
+
+<template>
+ <div :style="{height: '100%', overflow: 'hidden'}">
+ <Modal
+ width="800"
+ class="modal"
+ v-model="showVersionList"
+ :loading="loadingForm"
+ :title="`${currentEngineType}${$t('message.linkis.EnginePluginManagement.versionList')} 当前版本${currentEngineVersion}`"
+ >
+ <Table
+ border
+ size="small"
+ align="center"
+ :columns="versionTableColumnNum"
+ :data="this.currentVersionList"
+ max-height="300"
+ class="table-content"
+ >
+ <template slot-scope="{ row }" slot="action">
+ <ButtonGroup size="small" :key="row.resourceVersion">
+ <Button
+ v-if="row.resourceVersion != currentResourcebmlVersion"
+ size="primary"
+ type="text"
+ @click="onRollback(row)"
+ >
+
+ {{ $t('message.linkis.EnginePluginManagement.rollback') }}
+ </Button>
+ <Button
+ v-if="row.resourceVersion != currentResourcebmlVersion"
+ size="primary"
+ type="error"
+ @click="deleteCurrentbml(row)"
+ >
+ {{ $t('message.linkis.EnginePluginManagement.deleteCurrentbml') }}
+ </Button>
+
+ </ButtonGroup>
+ </template>
+ </Table>
+ <div slot="footer">
+ <div>
+ <Button @click="showVersionList = false">{{
+ $t('message.linkis.cancel')
+ }}</Button>
+ </div>
+ </div>
+ </Modal>
+ <Modal
+ width="800"
+ class="modal"
+ v-model="showFileOperate"
+ :title="`${actionType} ${ecType}`"
+ >
+ <Spin size="large" fix v-if="loadingForm"></Spin>
+ <div style="height: 200px">
+ <form style="width: 200px;height: 200px">
+ <input type="file" @change="getFile($event)"></input>
+ </form>
+ </div>
+
+ <div slot="footer">
+ <div class="footer">
+ <div>
+ <Button
+ type="primary"
+ @click="showFileOperate = false"
+ >{{ $t('message.linkis.close') }}</Button>
+ <Button type="primary" @click="onSubmit">{{
+ $t('message.linkis.complete')}}</Button>
+ </div>
+ </div>
+ </div>
+ </Modal>
+ <Row class="search-bar" type="flex" justify="space-around">
+ <Col>
+ <span class="lable" :title="$t('message.linkis.EnginePluginManagement.engineConnType')">{{ $t('message.linkis.EnginePluginManagement.engineConnType') }}</span>
+ <Select v-model="ecType" clearable>
+ <Option
+ v-for="(item) in typeList"
+ :label="item"
+ :value="item"
+ :key="item"/>
+ </Select>
+ </Col>
+ <Col>
+ <span class="lable" :title="$t('message.linkis.EnginePluginManagement.engineConnVersion')">{{ $t('message.linkis.EnginePluginManagement.engineConnVersion') }}</span>
+ <Select v-model="version" clearable>
+ <Option
+ v-for="(item) in typeVersionList"
+ :label="item"
+ :value="item"
+ :key="item"/>
+ </Select>
+ </Col>
+ <Col span="12">
+ <Button type="primary" :style="{width: '60px', marginRight: '5px', padding: '5px'}" @click="resetSearch">{{
+ $t('message.linkis.EnginePluginManagement.Reset')}}</Button>
+ <Button type="primary" class="button" :style="{width: '60px', marginRight: '5px', marginLeft: '5px', padding: '5px'}" @click="initECMList()">{{
+ $t('message.linkis.search') }}</Button>
+ <Button type="primary" :style="{width: '120px', marginRight: '5px', padding: '5px'}" @click="createOrUpdate(1)">{{
+ $t('message.linkis.EnginePluginManagement.update')}}</Button>
+ <Button type="error" :style="{width: '120px', marginRight: '5px', padding: '5px'}" @click="deleteBML">{{
+ $t('message.linkis.EnginePluginManagement.delete')}}</Button>
+ <Button type="primary" :style="{width: '90px', marginRight: '5px', padding: '5px'}" @click="createOrUpdate(0)">{{
+ $t('message.linkis.EnginePluginManagement.create') }}</Button>
+ </Col>
+ </Row>
+ <Table
+ border
+ size="small"
+ align="center"
+ :columns="tableColumnNum"
+ :data="pageDatalist"
+ :loading="tableLoading"
+ class="table-content engineplugin-management-table"
+ >
+ <template slot-scope="{ row, index }" slot="bmlResourceVersion">
+ <Button
+ size="small"
+ type="primary"
+ :disabled="row.expire"
+ @click="openVersionList(row, index)"
+ >{{ `${row.bmlResourceVersion || '-'}` }}</Button
+ >
+ </template>
+ </Table>
+ <div style="margin: 10px; overflow: hidden; textAlign: center">
+ <div>
+ <Page
+ :page-size="page.pageSize"
+ :total="page.totalSize"
+ :current="page.pageNow"
+ @on-change="changePage"
+ size="small"
+ show-total
+ show-elevator
+ :prev-text="$t('message.linkis.previousPage')" :next-text="$t('message.linkis.nextPage')"
+ ></Page>
+ </div>
+ </div>
+ </div>
+</template>
+<script>
+import api from '@/common/service/api';
+export default {
+ data() {
+ return {
+ ecType: null,
+ version: null,
+ typeList: [],
+ typeVersionList: [],
+ page: {
+ totalSize: 0,
+ pageSize: 8,
+ pageNow: 1,
+ },
+ file: null,
+ currentEnginpluginData: null,
+ showFileOperate: false,
+ actionType: '',
+ actionNum: '',
+ loadingForm: false,
+ tableLoading: false,
+ tableColumnNum: [
+ {
+ title: "ID",
+ key: 'id',
+ width: 60,
+ tooltip: true,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.engineConnType'),
+ key: 'engineConnType',
+ width: 120,
+ tooltip: true,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.engineConnVersion'),
+ key: 'version',
+ width: 120,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.fileName'),
+ key: 'fileName',
+ width: 120,
+ tooltip: true,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.fileSize'),
+ key: 'fileSize',
+ tooltip: true,
+ width: 120,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.lastModified'),
+ key: 'lastModified',
+ tooltip: true,
+ width: 120,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.bmlResourceId'),
+ key: 'bmlResourceId',
+ tooltip: true,
+ width: 120,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.bmlResourceVersion'),
+ key: 'bmlResourceVersion',
+ slot: 'bmlResourceVersion',
+ width: 120,
+ tooltip: true,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.lastUpdateTime'),
+ key: 'lastUpdateTime',
+ width: 120,
+ tooltip: true,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.createTime'),
+ key: 'createTime',
+ width: 120,
+ tooltip: true,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.action'),
+ width: 120,
+ slot: 'action',
+ align: 'center',
+ },
+ ],
+ pageDatalist: [],
+ currentVersionList: [],
+ currentEngineType: null,
+ currentEngineVersion: null,
+ currentResourcebmlVersion: null,
+ showVersionList: false,
+ versionTableColumnNum: [
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.resourceVersion'),
+ key: 'resourceVersion',
+ tooltip: true,
+ minWidth: 60,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.user'),
+ key: 'user',
+ tooltip: true,
+ minWidth: 60,
+ align: 'center',
+ },
+ {
+ title: this.$t('message.linkis.EnginePluginManagement.action'),
+ key: 'action',
+ tooltip: true,
+ minWidth: 120,
+ align: 'center',
+ slot: 'action',
+ },
+ ],
+ }
+ },
+ watch: {
+ ecType(newName, oldName) {
+ console.log(oldName);
+ this.getTypeVersionList(newName)
+ }
+ },
+ created() {
+ this.getTypeList();
+ this.initECMList();
+ },
+ methods: {
+ async initECMList() {
+ let paramsData = {
+ "ecType": this.ecType,
+ "version": this.version,
+ "pageSize": this.page.pageSize,
+ "currentPage": this.page.pageNow
+ }
+ let ECM = await api.fetch('/engineplugin/list',paramsData,'get') || {};
+ this.pageDatalist = ECM.queryList || []
+ this.page.totalSize=ECM.totalPage
+ },
+
+ async getTypeList(){
+ let typeListTem = await api.fetch('/engineplugin/getTypeList','get') || {};
+ this.typeList=typeListTem.typeList
+ },
+ async getTypeVersionList(ecType){
+ let urlTemp = '/engineplugin/getTypeVersionList/'+ ecType
+ let typeVersionListTem = await api.fetch(urlTemp, 'get') || {};
+ this.typeVersionList=typeVersionListTem.queryList
+ this.version=(typeVersionListTem.queryList)[0]
+ },
+ resetSearch(){
+ this.ecType = null
+ this.version=null
+ this.initECMList();
+ },
+ getFile(event) {
+ this.file = event.target.files[0];
+ },
+ onSubmit() {
+ var formData = new FormData();
+ if(this.actionNum === 0){
+ formData.append('file', this.file);
+ api.fetch('/engineplugin/uploadEnginePluginBML', formData, {methed: 'post', 'Content-Type': 'multipart/form-data'}).then(response => {
+ console.log(response);
+ this.$Message.success(response.mes);
+ this.getTypeList();
+ this.showFileOperate = false;
+ }).catch(e => {
+ console.log(e);
+ this.$Message.error(e);
+ this.showFileOperate = false;
+ })
+
+ }else if(this.actionNum === 1){
+ formData.append('file', this.file);
+ formData.append('ecType', this.ecType);
+ formData.append('version', this.version);
+ api.fetch('/engineplugin/updateEnginePluginBML', formData, {methed: 'post', 'Content-Type': 'multipart/form-data'}).then(response => {
+ this.$Message.success(response.mes);
+ this.getTypeList();
+ this.initECMList();
+ this.showFileOperate = false;
+ }).catch(e => {
+ console.log(e);
+ this.$Message.error(e);
+ this.showFileOperate = false;
+ })
+
+ }
+
+ },
+ deleteBML(){
+ var th=this;
+ var reqList=[]
+ th.pageDatalist.forEach(it => {
+ if(it.engineConnType == th.ecType && it.version == th.version){
+ reqList.push(it.bmlResourceId);
+ }
+ })
+ api.fetch('/bml/deleteResources', {'resourceIds': reqList}, 'post').then(response => {
+ console.log(response);
+ api.fetch('/engineplugin/deleteEnginePluginBML', {'ecType': th.ecType, 'version': th.version}, 'get').then(response2 => {
+ th.getTypeList();
+ th.resetSearch();
+ this.$Message.success(response2.msg);
+ }).catch(e2 => {
+ console.log(e2);
+ this.$Message.error(e2);
+ })
+ }).catch(e => {
+ th.$Message.error(e);
+ console.log(e);
+ })
+
+ //暂存后续相关bug修复后修改
+ // var th=this;
+ // api.fetch('/engineplugin/deleteEnginePluginBML', {'ecType': th.ecType, 'version': th.version}, 'get').then(response => {
+ // this.$Message.success(response.mes);
+ // }).catch(e => {
+ // console.log(e);
+ // this.$Message.error(e);
+ // })
+ },
+ createOrUpdate(num) {
+ this.actionNum = num
+ if(num === 0){
+ this.actionType=this.$t('message.linkis.EnginePluginManagement.create')
+ }else if(num === 1){
+ this.actionType=this.$t('message.linkis.EnginePluginManagement.update')
+ }
+ this.showFileOperate = true
+ },
+ async openVersionList(row) {
+ this.currentEnginpluginData = row
+ this.currentEngineType=row.engineConnType;
+ this.currentEngineVersion=row.version;
+ this.currentResourcebmlVersion=row.bmlResourceVersion;
+ this.currentVersionList=[]
+ // this.getVersionListBybmlResourceId()
+ var th=this;
+ await api.fetch('/bml/getVersions', {'resourceId': th.currentEnginpluginData.bmlResourceId}, 'get').then(response => {
+ let userName=response.ResourceVersions.user;
+ for (let index = 0; index < response.ResourceVersions.versions.length; index++) {
+ let element = {};
+ element.resourceVersion = response.ResourceVersions.versions[index].version;
+ element.user=userName;
+ th.currentVersionList.push(element);
+ }
+ th.showVersionList = true
+ }).catch(e => {
+ th.$Message.error(e);
+ console.log(e);
+ })
+ console.log(th.currentVersionList);
+ },
+ changePage(value) {
+ this.page.pageNow = value
+ this.initECMList()
+ },
+ onRollback(data) {
+ this.showVersionList = false
+ var reqData = {};
+ reqData.bmlResourceVersion=data.resourceVersion;
+ reqData.bmlResourceId=this.currentEnginpluginData.bmlResourceId;
+ reqData.createTime=this.currentEnginpluginData.createTime;
+ reqData.engineConnType=this.currentEnginpluginData.engineConnType;
+ reqData.fileName=this.currentEnginpluginData.fileName;
+ reqData.fileSize=this.currentEnginpluginData.fileSize;
+ reqData.lastModified=this.currentEnginpluginData.lastModified;
+ reqData.lastUpdateTime=this.currentEnginpluginData.lastUpdateTime;
+ reqData.version=this.currentEnginpluginData.version;
+ api.fetch('/engineplugin/rollBack', reqData).then(response => {
+ this.initECMList();
+ this.$Message.success('onRollback Success'+response)
+ }).catch(e => {
+ this.$Message.error(e);
+ })
+ },
+ },
+}
+</script>
+<style lang="scss" src="./index.scss" scoped></style>
+
+<style lang="scss">
+.engineplugin-management-table {
+ border: 0;
+ height: calc(100% - 110px);
+ width: 100%;
+
+ .ivu-table:before {
+ height: 0
+ }
+
+ .ivu-table:after {
+ width: 0
+ }
+
+ .ivu-table {
+ height: auto;
+ border: 1px solid #dcdee2;
+ width: 100%;
+ }
+}
+</style>
diff --git a/linkis-web/src/apps/linkis/router.js b/linkis-web/src/apps/linkis/router.js
index 52f4906d2..bfec3ad54 100644
--- a/linkis-web/src/apps/linkis/router.js
+++ b/linkis-web/src/apps/linkis/router.js
@@ -5,9 +5,9 @@
* 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.
@@ -157,6 +157,16 @@ export default [
title: 'datasourceManagement',
publicPage: true,
},
+ },
+ {
+ name: 'EnginePluginManagement',
+ path: 'EnginePluginManagement',
+ component: () =>
+ import('./module/EnginePluginManagement/index.vue'),
+ meta: {
+ title: 'EnginePluginManagement',
+ publicPage: true,
+ },
}
],
},
diff --git a/linkis-web/src/apps/linkis/view/linkis/index.vue b/linkis-web/src/apps/linkis/view/linkis/index.vue
index d8b835784..a5e275755 100644
--- a/linkis-web/src/apps/linkis/view/linkis/index.vue
+++ b/linkis-web/src/apps/linkis/view/linkis/index.vue
@@ -103,6 +103,7 @@ export default {
{ key: '1-7', name: this.$t('message.linkis.sideNavList.function.children.microserviceManage'), path: '/console/microService' },
{ key: '1-9', name: this.$t('message.linkis.sideNavList.function.children.udfFunctionTitle'), path: '/console/urm/udfManagement'},
{ key: '1-8', name: this.$t('message.linkis.sideNavList.function.children.dataSourceManage'), path: '/console/dataSource' },
+ { key: '1-10', name: this.$t('message.linkis.sideNavList.function.children.EnginePluginManagement'), path: '/console/EnginePluginManagement' },
],
},
urmSideNavList: {
@@ -111,7 +112,7 @@ export default {
padding: 0,
icon: 'ios-options',
children: [
- {key: '1-9-1', name: this.$t('message.linkis.sideNavList.function.children.udfFunctionManage'), path: '/console/urm/udfManagement'},
+ {key: '1-9-1', name: this.$t('message.linkis.sideNavList.function.children.udfFunctionManage'), path: '/console/urm/udfManagement'},
{key: '1-9-2', name: this.$t('message.linkis.sideNavList.function.children.functionManagement'), path: '/console/urm/functionManagement'}
]
},
@@ -217,4 +218,4 @@ export default {
border-bottom: 0;
}
}
-</style>
\ No newline at end of file
+</style>
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@linkis.apache.org
For additional commands, e-mail: commits-help@linkis.apache.org