You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by GitBox <gi...@apache.org> on 2022/01/25 02:40:12 UTC

[GitHub] [dolphinscheduler] kezhenxu94 commented on a change in pull request #8174: [Feature-8167][service] Introduce k8s client and db support multiple environments

kezhenxu94 commented on a change in pull request #8174:
URL: https://github.com/apache/dolphinscheduler/pull/8174#discussion_r791311118



##########
File path: dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/k8s/K8sManager.java
##########
@@ -0,0 +1,67 @@
+package org.apache.dolphinscheduler.service.k8s;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.DefaultKubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.dolphinscheduler.dao.entity.K8s;
+import org.apache.dolphinscheduler.dao.mapper.K8sMapper;
+import org.apache.dolphinscheduler.remote.exceptions.RemotingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A separate class, because then wait for multiple environment feature, currently using db configuration, later unified
+ */
+@Component
+public class K8sManager {
+    /**
+     * logger of K8sManager
+     */
+    private static final Logger logger = LoggerFactory.getLogger(K8sManager.class);
+    /**
+     * cache k8s client
+     */
+    private static Map<String, KubernetesClient> clientMap = new Hashtable<>();
+
+    @Autowired
+    private K8sMapper k8sMapper;
+
+    public KubernetesClient getK8sClient(String k8sName) {
+        if(null == k8sName)
+        {
+            return null;
+        }
+        return clientMap.get(k8sName);
+    }
+
+    @PostConstruct
+    public void buildApiClientAll() throws RemotingException {
+        QueryWrapper<K8s> nodeWrapper = new QueryWrapper<>();
+        List<K8s> k8sList = k8sMapper.selectList(nodeWrapper);
+
+        if(k8sList!=null) {
+            for(K8s k8s : k8sList) {
+                DefaultKubernetesClient client =  getClient(k8s.getK8sConfig());

Review comment:
       ```suggestion
                   DefaultKubernetesClient client = getClient(k8s.getK8sConfig());
   ```

##########
File path: dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/k8s/K8sManager.java
##########
@@ -0,0 +1,67 @@
+package org.apache.dolphinscheduler.service.k8s;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.DefaultKubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.dolphinscheduler.dao.entity.K8s;
+import org.apache.dolphinscheduler.dao.mapper.K8sMapper;
+import org.apache.dolphinscheduler.remote.exceptions.RemotingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A separate class, because then wait for multiple environment feature, currently using db configuration, later unified
+ */
+@Component
+public class K8sManager {
+    /**
+     * logger of K8sManager
+     */

Review comment:
       This kind of comment is meaningless

##########
File path: dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/k8s/K8sManager.java
##########
@@ -0,0 +1,67 @@
+package org.apache.dolphinscheduler.service.k8s;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.DefaultKubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.dolphinscheduler.dao.entity.K8s;
+import org.apache.dolphinscheduler.dao.mapper.K8sMapper;
+import org.apache.dolphinscheduler.remote.exceptions.RemotingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A separate class, because then wait for multiple environment feature, currently using db configuration, later unified
+ */
+@Component
+public class K8sManager {
+    /**
+     * logger of K8sManager
+     */
+    private static final Logger logger = LoggerFactory.getLogger(K8sManager.class);
+    /**
+     * cache k8s client
+     */
+    private static Map<String, KubernetesClient> clientMap = new Hashtable<>();
+
+    @Autowired
+    private K8sMapper k8sMapper;
+
+    public KubernetesClient getK8sClient(String k8sName) {
+        if(null == k8sName)
+        {
+            return null;
+        }
+        return clientMap.get(k8sName);
+    }
+
+    @PostConstruct
+    public void buildApiClientAll() throws RemotingException {
+        QueryWrapper<K8s> nodeWrapper = new QueryWrapper<>();
+        List<K8s> k8sList = k8sMapper.selectList(nodeWrapper);
+
+        if(k8sList!=null) {

Review comment:
       Format the codes please...
   
   ```suggestion
           if (k8sList!=null) {
   ```

##########
File path: dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/k8s/K8sManager.java
##########
@@ -0,0 +1,67 @@
+package org.apache.dolphinscheduler.service.k8s;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.DefaultKubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.dolphinscheduler.dao.entity.K8s;
+import org.apache.dolphinscheduler.dao.mapper.K8sMapper;
+import org.apache.dolphinscheduler.remote.exceptions.RemotingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A separate class, because then wait for multiple environment feature, currently using db configuration, later unified
+ */
+@Component
+public class K8sManager {
+    /**
+     * logger of K8sManager
+     */
+    private static final Logger logger = LoggerFactory.getLogger(K8sManager.class);
+    /**
+     * cache k8s client
+     */
+    private static Map<String, KubernetesClient> clientMap = new Hashtable<>();
+
+    @Autowired
+    private K8sMapper k8sMapper;
+
+    public KubernetesClient getK8sClient(String k8sName) {
+        if(null == k8sName)
+        {
+            return null;
+        }

Review comment:
       Please keep the code style consistent...

##########
File path: dolphinscheduler-service/src/main/java/org/apache/dolphinscheduler/service/k8s/K8sManager.java
##########
@@ -0,0 +1,67 @@
+package org.apache.dolphinscheduler.service.k8s;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import io.fabric8.kubernetes.client.Config;
+import io.fabric8.kubernetes.client.DefaultKubernetesClient;
+import io.fabric8.kubernetes.client.KubernetesClient;
+import org.apache.dolphinscheduler.dao.entity.K8s;
+import org.apache.dolphinscheduler.dao.mapper.K8sMapper;
+import org.apache.dolphinscheduler.remote.exceptions.RemotingException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A separate class, because then wait for multiple environment feature, currently using db configuration, later unified
+ */
+@Component
+public class K8sManager {
+    /**
+     * logger of K8sManager
+     */
+    private static final Logger logger = LoggerFactory.getLogger(K8sManager.class);
+    /**
+     * cache k8s client
+     */
+    private static Map<String, KubernetesClient> clientMap = new Hashtable<>();
+
+    @Autowired
+    private K8sMapper k8sMapper;
+
+    public KubernetesClient getK8sClient(String k8sName) {
+        if(null == k8sName)
+        {
+            return null;
+        }
+        return clientMap.get(k8sName);
+    }
+
+    @PostConstruct
+    public void buildApiClientAll() throws RemotingException {
+        QueryWrapper<K8s> nodeWrapper = new QueryWrapper<>();
+        List<K8s> k8sList = k8sMapper.selectList(nodeWrapper);
+
+        if(k8sList!=null) {
+            for(K8s k8s : k8sList) {

Review comment:
       ```suggestion
               for (K8s k8s : k8sList) {
   ```

##########
File path: dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/entity/K8s.java
##########
@@ -0,0 +1,83 @@
+package org.apache.dolphinscheduler.dao.entity;

Review comment:
       License header




-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@dolphinscheduler.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org