You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by ca...@apache.org on 2022/09/21 02:20:48 UTC

[dolphinscheduler] 01/02: [improvement]Add Set cluster name (#12058)

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

caishunfeng pushed a commit to branch 3.1.0-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit cda31104098cca05c972576004422592bb45accb
Author: jackfanwan <61...@users.noreply.github.com>
AuthorDate: Tue Sep 20 21:26:05 2022 +0800

    [improvement]Add Set cluster name (#12058)
    
    * Add Set cluster name
    
    * add unit test
    
    Co-authored-by: fanwanlong <fa...@kezaihui.com>
---
 .../api/service/impl/K8SNamespaceServiceImpl.java  | 27 ++++++++++++++++++++--
 .../api/service/K8SNamespaceServiceTest.java       | 19 +++++++++++++++
 2 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/K8SNamespaceServiceImpl.java b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/K8SNamespaceServiceImpl.java
index 760fbf8f5f..6365abfe88 100644
--- a/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/K8SNamespaceServiceImpl.java
+++ b/dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/service/impl/K8SNamespaceServiceImpl.java
@@ -32,6 +32,7 @@ import org.apache.dolphinscheduler.remote.exceptions.RemotingException;
 import org.apache.dolphinscheduler.api.k8s.K8sClientService;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.collections.CollectionUtils;
 
 import java.util.ArrayList;
 import java.util.Date;
@@ -40,6 +41,7 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.stream.Collectors;
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -418,10 +420,31 @@ public class K8SNamespaceServiceImpl extends BaseServiceImpl implements K8sNames
      */
     @Override
     public List<K8sNamespace> queryNamespaceAvailable(User loginUser) {
+        List<K8sNamespace> k8sNamespaces;
         if (isAdmin(loginUser)) {
-            return k8sNamespaceMapper.selectList(null);
+            k8sNamespaces = k8sNamespaceMapper.selectList(null);
         } else {
-            return k8sNamespaceMapper.queryNamespaceAvailable(loginUser.getId());
+             k8sNamespaces = k8sNamespaceMapper.queryNamespaceAvailable(loginUser.getId());
+        }
+        setClusterName(k8sNamespaces);
+        return k8sNamespaces;
+    }
+
+    /**
+     * set cluster_name
+     * @param k8sNamespaces source data
+     */
+    private void setClusterName(List<K8sNamespace> k8sNamespaces) {
+        if (CollectionUtils.isNotEmpty(k8sNamespaces)) {
+            List<Cluster> clusters = clusterMapper.queryAllClusterList();
+            if (CollectionUtils.isNotEmpty(clusters)) {
+                Map<Long, String> codeNameMap = clusters.stream()
+                        .collect(Collectors.toMap(Cluster::getCode, Cluster::getName, (a, b) -> a));
+                for (K8sNamespace k8sNamespace : k8sNamespaces) {
+                    String clusterName = codeNameMap.get(k8sNamespace.getClusterCode());
+                    k8sNamespace.setClusterName(clusterName);
+                }
+            }
         }
     }
 
diff --git a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java
index ed684ea914..390153aa3d 100644
--- a/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java
+++ b/dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/service/K8SNamespaceServiceTest.java
@@ -221,6 +221,25 @@ public class K8SNamespaceServiceTest {
         Assert.assertTrue(CollectionUtils.isEmpty(namespaces));
     }
 
+    @Test
+    public void testQueryNamespaceAvailable() {
+        List<K8sNamespace> k8sNamespaces = new ArrayList<>();
+        K8sNamespace k8sNamespace = new K8sNamespace();
+        k8sNamespace.setClusterCode(1L);
+        k8sNamespaces.add(k8sNamespace);
+
+        List<Cluster> clusters = new ArrayList<>();
+        Cluster cluster = new Cluster();
+        cluster.setCode(1L);
+        cluster.setName("test");
+        clusters.add(cluster);
+
+        Mockito.when(k8sNamespaceMapper.selectList(Mockito.any())).thenReturn(k8sNamespaces);
+        Mockito.when(clusterMapper.queryAllClusterList()).thenReturn(clusters);
+        List<K8sNamespace> result = k8sNamespaceService.queryNamespaceAvailable(getLoginUser());
+        Assert.assertEquals(result.get(0).getClusterName(), cluster.getName());
+    }
+
     private User getLoginUser() {
 
         User loginUser = new User();