You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2019/07/17 07:34:12 UTC

[tomcat] branch master updated: Default to "tomcat" as the Kube namespace

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

remm pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/tomcat.git


The following commit(s) were added to refs/heads/master by this push:
     new e40a946  Default to "tomcat" as the Kube namespace
e40a946 is described below

commit e40a9467e73c75f7e9c5d942c701bbfd6be6a960
Author: remm <re...@apache.org>
AuthorDate: Wed Jul 17 09:34:00 2019 +0200

    Default to "tomcat" as the Kube namespace
    
    Refactor to pull up common code (it doesn't prevent non Kube providers,
    obviously). Warn instead of exit if the Kube environment is not present.
---
 .../membership/cloud/CloudMembershipProvider.java  | 26 +++++++++++++++++-----
 .../membership/cloud/DNSMembershipProvider.java    |  6 +----
 .../cloud/KubernetesMembershipProvider.java        |  7 +-----
 webapps/docs/changelog.xml                         |  5 +++++
 4 files changed, 28 insertions(+), 16 deletions(-)

diff --git a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
index 70f5fa1..9940673 100644
--- a/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/cloud/CloudMembershipProvider.java
@@ -42,6 +42,8 @@ public abstract class CloudMembershipProvider extends MembershipProviderBase imp
     private static final Log log = LogFactory.getLog(CloudMembershipProvider.class);
     protected static final StringManager sm = StringManager.getManager(CloudMembershipProvider.class);
 
+    protected static final String CUSTOM_ENV_PREFIX = "OPENSHIFT_KUBE_PING_";
+
     protected String url;
     protected StreamProvider streamProvider;
     protected int connectionTimeout;
@@ -65,21 +67,35 @@ public abstract class CloudMembershipProvider extends MembershipProviderBase imp
         }
     }
 
-    // Get value of environment variable named keys[0]
-    // If keys[0] isn't found, try keys[1], keys[2], ...
-    // If nothing is found, return null
+    /**
+     * Get value of environment variable.
+     * @param keys the environment variables
+     * @return the env variables values, or null if not found
+     */
     protected static String getEnv(String... keys) {
         String val = null;
-
         for (String key : keys) {
             val = AccessController.doPrivileged((PrivilegedAction<String>) () -> System.getenv(key));
             if (val != null)
                 break;
         }
-
         return val;
     }
 
+    /**
+     * Get the Kubernetes namespace, or "tomcat" if the Kubernetes environment variable
+     * cannot be found (with a warning log about the missing namespace).
+     * @return the namespace
+     */
+    protected String getNamespace() {
+        String namespace = getEnv("KUBERNETES_NAMESPACE", CUSTOM_ENV_PREFIX + "NAMESPACE");
+        if (namespace == null || namespace.length() == 0) {
+            log.warn(sm.getString("kubernetesMembershipProvider.noNamespace"));
+            namespace = "tomcat";
+        }
+        return namespace;
+    }
+
     @Override
     public void init(Properties properties) throws IOException {
         startTime = Instant.now();
diff --git a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
index 43d02f1..25fcff1 100644
--- a/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/cloud/DNSMembershipProvider.java
@@ -33,7 +33,6 @@ import org.apache.juli.logging.LogFactory;
 public class DNSMembershipProvider extends CloudMembershipProvider {
     private static final Log log = LogFactory.getLog(DNSMembershipProvider.class);
 
-    private static final String CUSTOM_ENV_PREFIX = "OPENSHIFT_KUBE_PING_";
     private String namespace;
 
     @Override
@@ -45,10 +44,7 @@ public class DNSMembershipProvider extends CloudMembershipProvider {
         super.start(level);
 
         // Set up Kubernetes API parameters
-        namespace = getEnv("KUBERNETES_NAMESPACE", CUSTOM_ENV_PREFIX + "NAMESPACE");
-        if (namespace == null || namespace.length() == 0) {
-            throw new IllegalArgumentException(sm.getString("kubernetesMembershipProvider.noNamespace"));
-        }
+        namespace = getNamespace();
 
         if (log.isDebugEnabled()) {
             log.debug(String.format("Namespace [%s] set; clustering enabled", namespace));
diff --git a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
index e977542..2950f5a 100644
--- a/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
+++ b/java/org/apache/catalina/tribes/membership/cloud/KubernetesMembershipProvider.java
@@ -42,8 +42,6 @@ import org.apache.tomcat.util.json.JSONParser;
 public class KubernetesMembershipProvider extends CloudMembershipProvider {
     private static final Log log = LogFactory.getLog(KubernetesMembershipProvider.class);
 
-    private static final String CUSTOM_ENV_PREFIX = "OPENSHIFT_KUBE_PING_";
-
     @Override
     public void start(int level) throws Exception {
         if ((level & MembershipService.MBR_RX) == 0) {
@@ -53,10 +51,7 @@ public class KubernetesMembershipProvider extends CloudMembershipProvider {
         super.start(level);
 
         // Set up Kubernetes API parameters
-        String namespace = getEnv("KUBERNETES_NAMESPACE", CUSTOM_ENV_PREFIX + "NAMESPACE");
-        if (namespace == null || namespace.length() == 0) {
-            throw new IllegalArgumentException(sm.getString("kubernetesMembershipProvider.noNamespace"));
-        }
+        String namespace = getNamespace();
 
         if (log.isDebugEnabled()) {
             log.debug(String.format("Namespace [%s] set; clustering enabled", namespace));
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index ecfa725..bfe2afd 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -89,6 +89,11 @@
       <fix>
         Avoid non fatal NPEs with Tribes when JMX is not available. (remm)
       </fix>
+      <fix>
+        Make Kube environment optional for Kube memberships, for easier testing
+        and Graal training. A warn log will occur if the environment is not
+        present. (remm)
+      </fix>
     </changelog>
   </subsection>
   <subsection name="Other">


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org