This is an automated email from the ASF dual-hosted git repository.

casion pushed a commit to branch dev-1.2.0
in repository https://gitbox.apache.org/repos/asf/incubator-linkis.git


The following commit(s) were added to refs/heads/dev-1.2.0 by this push:
     new 0ea0a0ad8 Fix issue that  querying ECM history, permission management 
fails  (#2417)
0ea0a0ad8 is described below

commit 0ea0a0ad8a86bdc3071029c637a41bd60a1997b9
Author: peacewong <[email protected]>
AuthorDate: Thu Jul 14 22:17:47 2022 +0800

    Fix issue that  querying ECM history, permission management fails  (#2417)
    
    * fix   isues #2412
    Co-authored-by: v_kkhuang <[email protected]>
---
 .../am/restful/ECResourceInfoRestfulApi.java       | 32 +++++++---------
 .../manager/am/service/ECResourceInfoService.java  |  2 +-
 .../am/service/impl/ECResourceInfoServiceImpl.java |  4 +-
 .../manager/am/util/ECResourceInfoUtils.java       | 43 +++++++++++++++++++---
 .../manager/am/vo/ECResourceInfoRecordVo.java      | 19 +++++-----
 .../ResourceVo.java}                               | 36 +++++++++++-------
 .../linkis/manager/rm/restful/RMMonitorRest.scala  |  1 +
 .../linkis/manager/dao/ECResourceRecordMapper.java |  3 +-
 .../manager/dao/impl/ECResourceRecordMapper.xml    |  1 +
 9 files changed, 89 insertions(+), 52 deletions(-)

diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/ECResourceInfoRestfulApi.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/ECResourceInfoRestfulApi.java
index 5311bdf29..5ecba6768 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/ECResourceInfoRestfulApi.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/restful/ECResourceInfoRestfulApi.java
@@ -25,6 +25,7 @@ import org.apache.linkis.manager.am.util.ECResourceInfoUtils;
 import org.apache.linkis.manager.am.vo.ECResourceInfoRecordVo;
 import 
org.apache.linkis.manager.common.entity.persistence.ECResourceInfoRecord;
 import org.apache.linkis.server.Message;
+import org.apache.linkis.server.security.SecurityFilter;
 import org.apache.linkis.server.utils.ModuleUserUtils;
 
 import org.apache.commons.lang.StringUtils;
@@ -40,7 +41,6 @@ import com.github.pagehelper.PageHelper;
 import com.github.pagehelper.PageInfo;
 
 import java.util.*;
-import java.util.stream.Collectors;
 
 @RequestMapping(
         path = "/linkisManager/ecinfo",
@@ -99,14 +99,13 @@ public class ECResourceInfoRestfulApi {
             @RequestParam(value = "pageNow", required = false, defaultValue = 
"1") Integer pageNow,
             @RequestParam(value = "pageSize", required = false, defaultValue = 
"20")
                     Integer pageSize) {
-        //        String username = SecurityFilter.getLoginUsername(req);
-        String username = "hadoop";
+        String username = SecurityFilter.getLoginUsername(req);
         // Parameter judgment
         instance = ECResourceInfoUtils.strCheckAndDef(instance, null);
-        creator = ECResourceInfoUtils.strCheckAndDef(creator, null);
+        String creatorUser = ECResourceInfoUtils.strCheckAndDef(creator, null);
         engineType = ECResourceInfoUtils.strCheckAndDef(engineType, null);
-        if (null != creator && !ECResourceInfoUtils.checkNameValid(creator)) {
-            return Message.error("Invalid creator : " + creator);
+        if (null != creatorUser && 
!ECResourceInfoUtils.checkNameValid(creatorUser)) {
+            return Message.error("Invalid creator : " + creatorUser);
         }
         if (null == startDate) {
             Calendar calendar = Calendar.getInstance();
@@ -117,8 +116,8 @@ public class ECResourceInfoRestfulApi {
         }
         if (Configuration.isAdmin(username)) {
             username = null;
-            if (StringUtils.isNotBlank(creator)) {
-                username = creator;
+            if (StringUtils.isNotBlank(creatorUser)) {
+                username = creatorUser;
             }
         }
         List<ECResourceInfoRecordVo> list = new ArrayList<>();
@@ -128,14 +127,7 @@ public class ECResourceInfoRestfulApi {
         try {
             queryTasks =
                     ecResourceInfoService.getECResourceInfoRecordList(
-                            instance, endDate, startDate, username);
-            if (StringUtils.isNotBlank(engineType)) {
-                String finalEngineType = engineType;
-                queryTasks =
-                        queryTasks.stream()
-                                .filter(info -> 
info.getLabelValue().contains(finalEngineType))
-                                .collect(Collectors.toList());
-            }
+                            instance, endDate, startDate, username, 
engineType);
             queryTasks.forEach(
                     info -> {
                         ECResourceInfoRecordVo ecrHistroryListVo = new 
ECResourceInfoRecordVo();
@@ -143,11 +135,13 @@ public class ECResourceInfoRestfulApi {
                         ecrHistroryListVo.setEngineType(
                                 
info.getLabelValue().split(",")[1].split("-")[0]);
                         ecrHistroryListVo.setUsedResource(
-                                
ECResourceInfoUtils.getStringToMap(info.getUsedResource()));
+                                
ECResourceInfoUtils.getStringToMap(info.getUsedResource(), info));
                         ecrHistroryListVo.setReleasedResource(
-                                
ECResourceInfoUtils.getStringToMap(info.getReleasedResource()));
+                                ECResourceInfoUtils.getStringToMap(
+                                        info.getReleasedResource(), info));
                         ecrHistroryListVo.setRequestResource(
-                                
ECResourceInfoUtils.getStringToMap(info.getRequestResource()));
+                                ECResourceInfoUtils.getStringToMap(
+                                        info.getRequestResource(), info));
                         list.add(ecrHistroryListVo);
                     });
         } finally {
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
index 014e31e15..22b4ce24a 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
@@ -31,7 +31,7 @@ public interface ECResourceInfoService {
     void deleteECResourceInfoRecord(Integer id);
 
     List<ECResourceInfoRecord> getECResourceInfoRecordList(
-            String instance, Date endDate, Date startDate, String username);
+            String instance, Date endDate, Date startDate, String username, 
String engineType);
 
     // TODO add search method
 
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/impl/ECResourceInfoServiceImpl.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/impl/ECResourceInfoServiceImpl.java
index 899295799..a00ac60a4 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/impl/ECResourceInfoServiceImpl.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/impl/ECResourceInfoServiceImpl.java
@@ -64,8 +64,8 @@ public class ECResourceInfoServiceImpl implements 
ECResourceInfoService {
 
     @Override
     public List<ECResourceInfoRecord> getECResourceInfoRecordList(
-            String instance, Date endDate, Date startDate, String username) {
+            String instance, Date endDate, Date startDate, String username, 
String engineType) {
         return ecResourceRecordMapper.getECResourceInfoHistory(
-                username, instance, endDate, startDate);
+                username, instance, endDate, startDate, engineType);
     }
 }
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/util/ECResourceInfoUtils.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/util/ECResourceInfoUtils.java
index 0871913ff..980389f9a 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/util/ECResourceInfoUtils.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/util/ECResourceInfoUtils.java
@@ -16,9 +16,16 @@
  */
 package org.apache.linkis.manager.am.util;
 
+import org.apache.linkis.common.utils.ByteTimeUtils;
+import org.apache.linkis.manager.am.vo.ResourceVo;
+import 
org.apache.linkis.manager.common.entity.persistence.ECResourceInfoRecord;
+import org.apache.linkis.server.BDPJettyServerHelper;
+
+import org.apache.commons.collections.MapUtils;
 import org.apache.commons.lang.StringUtils;
 
-import com.google.gson.Gson;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -26,6 +33,8 @@ import java.util.regex.Pattern;
 
 public class ECResourceInfoUtils {
 
+    private static Logger logger = 
LoggerFactory.getLogger(ECResourceInfoUtils.class);
+
     public static String NAME_REGEX = "^[a-zA-Z\\d_\\.]+$";
 
     public static boolean checkNameValid(String creator) {
@@ -36,10 +45,32 @@ public class ECResourceInfoUtils {
         return StringUtils.isBlank(str) ? def : str;
     }
 
-    public static Map<String, Object> getStringToMap(String str) {
-        Gson gson = new Gson();
-        Map<String, Object> map = new HashMap<>();
-        map = gson.fromJson(str, map.getClass());
-        return map;
+    public static ResourceVo getStringToMap(String str, ECResourceInfoRecord 
info) {
+        ResourceVo resourceVo = null;
+        Map<String, Object> map =
+                BDPJettyServerHelper.gson().fromJson(str, new 
HashMap<>().getClass());
+        if (MapUtils.isNotEmpty(map)) {
+            resourceVo = new ResourceVo();
+            if (info.getLabelValue().contains("spark")
+                    || (info.getLabelValue().contains("flink"))) {
+                if (null != map.get("driver")) {
+                    Map<String, Object> divermap = MapUtils.getMap(map, 
"driver");
+                    resourceVo.setInstance(((Double) 
divermap.get("instance")).intValue());
+                    resourceVo.setCores(((Double) 
divermap.get("cpu")).intValue());
+                    resourceVo.setMemory(
+                            
ByteTimeUtils.byteStringAsBytes(divermap.get("memory").toString()));
+                    return resourceVo;
+                } else {
+                    logger.warn("Compatible with old data ,{},{}", 
info.getLabelValue(), info);
+                    return null; // Compatible with old data
+                }
+            }
+            resourceVo.setInstance(((Double) map.get("instance")).intValue());
+            
resourceVo.setMemory(ByteTimeUtils.byteStringAsBytes((map.get("memory").toString())));
+            Double core =
+                    null == map.get("cpu") ? (Double) map.get("cores") : 
(Double) map.get("cpu");
+            resourceVo.setCores(core.intValue());
+        }
+        return resourceVo;
     }
 }
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ECResourceInfoRecordVo.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ECResourceInfoRecordVo.java
index fe8c8e77b..dedb09116 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ECResourceInfoRecordVo.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ECResourceInfoRecordVo.java
@@ -17,7 +17,6 @@
 package org.apache.linkis.manager.am.vo;
 
 import java.util.Date;
-import java.util.Map;
 
 public class ECResourceInfoRecordVo {
 
@@ -31,11 +30,11 @@ public class ECResourceInfoRecordVo {
 
     private String serviceInstance;
 
-    private Map usedResource;
+    private ResourceVo usedResource;
 
-    private Map requestResource;
+    private ResourceVo requestResource;
 
-    private Map releasedResource;
+    private ResourceVo releasedResource;
 
     private String ecmInstance;
 
@@ -97,27 +96,27 @@ public class ECResourceInfoRecordVo {
         this.serviceInstance = serviceInstance;
     }
 
-    public Map getUsedResource() {
+    public ResourceVo getUsedResource() {
         return usedResource;
     }
 
-    public void setUsedResource(Map usedResource) {
+    public void setUsedResource(ResourceVo usedResource) {
         this.usedResource = usedResource;
     }
 
-    public Map getRequestResource() {
+    public ResourceVo getRequestResource() {
         return requestResource;
     }
 
-    public void setRequestResource(Map requestResource) {
+    public void setRequestResource(ResourceVo requestResource) {
         this.requestResource = requestResource;
     }
 
-    public Map getReleasedResource() {
+    public ResourceVo getReleasedResource() {
         return releasedResource;
     }
 
-    public void setReleasedResource(Map releasedResource) {
+    public void setReleasedResource(ResourceVo releasedResource) {
         this.releasedResource = releasedResource;
     }
 
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ResourceVo.java
similarity index 58%
copy from 
linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
copy to 
linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ResourceVo.java
index 014e31e15..035938103 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/service/ECResourceInfoService.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/java/org/apache/linkis/manager/am/vo/ResourceVo.java
@@ -14,25 +14,35 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package org.apache.linkis.manager.am.vo;
 
-package org.apache.linkis.manager.am.service;
+public class ResourceVo {
 
-import 
org.apache.linkis.manager.common.entity.persistence.ECResourceInfoRecord;
+    private int cores;
+    private int instance;
+    private long memory;
 
-import java.util.Date;
-import java.util.List;
+    public int getCores() {
+        return cores;
+    }
 
-public interface ECResourceInfoService {
+    public void setCores(int cores) {
+        this.cores = cores;
+    }
 
-    ECResourceInfoRecord getECResourceInfoRecord(String ticketId);
+    public int getInstance() {
+        return instance;
+    }
 
-    void deleteECResourceInfoRecordByTicketId(String ticketId);
+    public void setInstance(int instance) {
+        this.instance = instance;
+    }
 
-    void deleteECResourceInfoRecord(Integer id);
-
-    List<ECResourceInfoRecord> getECResourceInfoRecordList(
-            String instance, Date endDate, Date startDate, String username);
-
-    // TODO add search method
+    public long getMemory() {
+        return memory;
+    }
 
+    public void setMemory(long memory) {
+        this.memory = memory;
+    }
 }
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/rm/restful/RMMonitorRest.scala
 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/rm/restful/RMMonitorRest.scala
index c41c4eede..682f55419 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/rm/restful/RMMonitorRest.scala
+++ 
b/linkis-computation-governance/linkis-manager/linkis-application-manager/src/main/scala/org/apache/linkis/manager/rm/restful/RMMonitorRest.scala
@@ -142,6 +142,7 @@ class RMMonitorRest extends Logging {
           engineInstance.put("engineType", engineTypeLabel.getEngineType)
           engineInstance.put("instance", node.getServiceInstance.getInstance)
           engineInstance.put("label", engineTypeLabel.getStringValue)
+          node.setNodeResource(ResourceUtils.convertTo(node.getNodeResource, 
ResourceType.LoadInstance))
           engineInstance.put("resource", node.getNodeResource)
           if (node.getNodeStatus == null) {
             engineInstance.put("status", "Busy")
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ECResourceRecordMapper.java
 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ECResourceRecordMapper.java
index 4d8bb7178..89bbbef47 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ECResourceRecordMapper.java
+++ 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/ECResourceRecordMapper.java
@@ -42,5 +42,6 @@ public interface ECResourceRecordMapper {
             @Param("username") String username,
             @Param("instance") String instance,
             @Param("endDate") Date endDate,
-            @Param("startDate") Date startDate);
+            @Param("startDate") Date startDate,
+            @Param("engineType") String engineType);
 }
diff --git 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/impl/ECResourceRecordMapper.xml
 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/impl/ECResourceRecordMapper.xml
index 0154fad45..0e2b6956f 100644
--- 
a/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/impl/ECResourceRecordMapper.xml
+++ 
b/linkis-computation-governance/linkis-manager/linkis-manager-persistence/src/main/java/org/apache/linkis/manager/dao/impl/ECResourceRecordMapper.xml
@@ -66,6 +66,7 @@
         <where>
             <if test="instance != null"> service_instance = #{instance}</if>
             <if test="username != null"> and create_user = #{username}</if>
+            <if test="engineType !=null">and label_value like 
concat('%',#{engineType},'%')</if>
             <if test="startDate != null">and create_time BETWEEN  #{startDate} 
AND #{endDate}</if>
         </where>
         ORDER BY linkis_cg_ec_resource_info_record.create_time DESC


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to