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

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


The following commit(s) were added to refs/heads/master by this push:
     new cd63c84  Changed secretsproviderconfigurator interface to pass 
v1podspec (#2903)
cd63c84 is described below

commit cd63c8424051ef87918429dbf750dd89ede770c3
Author: Sanjeev Kulkarni <sanjee...@gmail.com>
AuthorDate: Thu Nov 1 10:57:33 2018 -0700

    Changed secretsproviderconfigurator interface to pass v1podspec (#2903)
---
 .../pulsar/functions/runtime/KubernetesRuntime.java     |  9 +++++----
 .../pulsar/functions/runtime/ProcessRuntimeTest.java    |  3 ++-
 .../DefaultSecretsProviderConfigurator.java             |  4 ++--
 .../KubernetesSecretsProviderConfigurator.java          | 17 ++++++++++++-----
 .../SecretsProviderConfigurator.java                    |  4 ++--
 5 files changed, 23 insertions(+), 14 deletions(-)

diff --git 
a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
 
b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
index 152842e..bb1ae71 100644
--- 
a/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
+++ 
b/pulsar-functions/runtime/src/main/java/org/apache/pulsar/functions/runtime/KubernetesRuntime.java
@@ -76,6 +76,7 @@ class KubernetesRuntime implements Runtime {
     public static final Pattern VALID_POD_NAME_REGEX =
             
Pattern.compile("[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*",
                     Pattern.CASE_INSENSITIVE);
+    private static final String PULSARFUNCTIONS_CONTAINER_NAME = 
"pulsarfunction";
 
     private final AppsV1Api appsClient;
     private final CoreV1Api coreClient;
@@ -521,6 +522,9 @@ class KubernetesRuntime implements Runtime {
         containers.add(getPrometheusContainer());
         podSpec.containers(containers);
 
+        // Configure secrets
+        
secretsProviderConfigurator.configureKubernetesRuntimeSecretsProvider(podSpec, 
PULSARFUNCTIONS_CONTAINER_NAME, instanceConfig.getFunctionDetails());
+
         return podSpec;
     }
 
@@ -540,7 +544,7 @@ class KubernetesRuntime implements Runtime {
     }
 
     private V1Container getFunctionContainer(List<String> instanceCommand, 
Function.Resources resource) {
-        final V1Container container = new V1Container().name("pulsarfunction");
+        final V1Container container = new 
V1Container().name(PULSARFUNCTIONS_CONTAINER_NAME);
 
         // set up the container images
         container.setImage(pulsarDockerImageName);
@@ -556,9 +560,6 @@ class KubernetesRuntime implements Runtime {
                                 .fieldPath("metadata.name")));
         container.addEnvItem(envVarPodName);
 
-        // Configure secrets
-        
secretsProviderConfigurator.configureKubernetesRuntimeSecretsProvider(container,
 instanceConfig.getFunctionDetails());
-
         // set container resources
         final V1ResourceRequirements resourceRequirements = new 
V1ResourceRequirements();
         final Map<String, Quantity> requests = new HashMap<>();
diff --git 
a/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
 
b/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
index c2f3638..aa385fc 100644
--- 
a/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
+++ 
b/pulsar-functions/runtime/src/test/java/org/apache/pulsar/functions/runtime/ProcessRuntimeTest.java
@@ -30,6 +30,7 @@ import java.util.List;
 import java.util.Map;
 
 import io.kubernetes.client.models.V1Container;
+import io.kubernetes.client.models.V1PodSpec;
 import org.apache.pulsar.functions.instance.InstanceConfig;
 import org.apache.pulsar.functions.proto.Function;
 import org.apache.pulsar.functions.proto.Function.ConsumerSpec;
@@ -70,7 +71,7 @@ public class ProcessRuntimeTest {
         }
 
         @Override
-        public void configureKubernetesRuntimeSecretsProvider(V1Container 
container, FunctionDetails functionDetails) {
+        public void configureKubernetesRuntimeSecretsProvider(V1PodSpec 
podSpec, String functionsContainerName, FunctionDetails functionDetails) {
         }
 
         @Override
diff --git 
a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
 
b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
index 10f9d54..c9b54f5 100644
--- 
a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
+++ 
b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/DefaultSecretsProviderConfigurator.java
@@ -19,7 +19,7 @@
 package org.apache.pulsar.functions.secretsproviderconfigurator;
 
 import com.google.gson.reflect.TypeToken;
-import io.kubernetes.client.models.V1Container;
+import io.kubernetes.client.models.V1PodSpec;
 import org.apache.pulsar.functions.proto.Function;
 import org.apache.pulsar.functions.secretsprovider.ClearTextSecretsProvider;
 
@@ -51,7 +51,7 @@ public class DefaultSecretsProviderConfigurator implements 
SecretsProviderConfig
     }
 
     @Override
-    public void configureKubernetesRuntimeSecretsProvider(V1Container 
container, Function.FunctionDetails functionDetails) {
+    public void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, 
String functionsContainerName, Function.FunctionDetails functionDetails) {
         // noop
     }
 
diff --git 
a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
 
b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
index 0321734..efefa51 100644
--- 
a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
+++ 
b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/KubernetesSecretsProviderConfigurator.java
@@ -20,10 +20,7 @@ package 
org.apache.pulsar.functions.secretsproviderconfigurator;
 
 import com.google.gson.Gson;
 import com.google.gson.reflect.TypeToken;
-import io.kubernetes.client.models.V1Container;
-import io.kubernetes.client.models.V1EnvVar;
-import io.kubernetes.client.models.V1EnvVarSource;
-import io.kubernetes.client.models.V1SecretKeySelector;
+import io.kubernetes.client.models.*;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.pulsar.functions.proto.Function;
 import 
org.apache.pulsar.functions.secretsprovider.EnvironmentBasedSecretsProvider;
@@ -62,7 +59,17 @@ public class KubernetesSecretsProviderConfigurator 
implements SecretsProviderCon
     // environment variables way. Essentially the secretName/secretPath is 
attached as secretRef to the environment variables
     // of a pod and kubernetes magically makes the secret pointed to by this 
combination available as a env variable.
     @Override
-    public void configureKubernetesRuntimeSecretsProvider(V1Container 
container, Function.FunctionDetails functionDetails) {
+    public void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, 
String functionsContainerName, Function.FunctionDetails functionDetails) {
+        V1Container container = null;
+        for (V1Container v1Container : podSpec.getContainers()) {
+            if (v1Container.getName().equals(functionsContainerName)) {
+                container = v1Container;
+                break;
+            }
+        }
+        if (container == null) {
+            throw new RuntimeException("No FunctionContainer found");
+        }
         if (!StringUtils.isEmpty(functionDetails.getSecretsMap())) {
             Type type = new TypeToken<Map<String, Object>>() {
             }.getType();
diff --git 
a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
 
b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
index a1792f1..adbd716 100644
--- 
a/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
+++ 
b/pulsar-functions/secrets/src/main/java/org/apache/pulsar/functions/secretsproviderconfigurator/SecretsProviderConfigurator.java
@@ -18,7 +18,7 @@
  */
 package org.apache.pulsar.functions.secretsproviderconfigurator;
 
-import io.kubernetes.client.models.V1Container;
+import io.kubernetes.client.models.V1PodSpec;
 import org.apache.pulsar.functions.proto.Function;
 
 import java.lang.reflect.Type;
@@ -51,7 +51,7 @@ public interface SecretsProviderConfigurator {
     /**
      * Attaches any secrets specific stuff to the k8 container for kubernetes 
runtime
      */
-    void configureKubernetesRuntimeSecretsProvider(V1Container container, 
Function.FunctionDetails functionDetails);
+    void configureKubernetesRuntimeSecretsProvider(V1PodSpec podSpec, String 
functionsContainerName, Function.FunctionDetails functionDetails);
 
     /**
      * Attaches any secrets specific stuff to the ProcessBuilder for process 
runtime

Reply via email to