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

astefanutti pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel-k.git

commit bcba05fbcf3049148aa5157024523b75b87cd980
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Tue Sep 24 16:03:57 2019 +0200

    fix(trait): Directly configure container env in Jolokia trait
---
 pkg/trait/jolokia.go      | 41 ++++++++++++++++++++---------------------
 pkg/trait/jolokia_test.go | 16 ++++++++++------
 2 files changed, 30 insertions(+), 27 deletions(-)

diff --git a/pkg/trait/jolokia.go b/pkg/trait/jolokia.go
index bfe6174..37721ba 100644
--- a/pkg/trait/jolokia.go
+++ b/pkg/trait/jolokia.go
@@ -79,15 +79,32 @@ func (t *jolokiaTrait) Configure(e *Environment) (bool, 
error) {
 }
 
 func (t *jolokiaTrait) Apply(e *Environment) (err error) {
+       containerName := defaultContainerName
+       dt := e.Catalog.GetTrait(containerTraitID)
+       if dt != nil {
+               containerName = dt.(*containerTrait).Name
+       }
+
+       container := e.Resources.GetContainerByName(containerName)
+       if container == nil {
+               e.Integration.Status.SetCondition(
+                       v1alpha1.IntegrationConditionJolokiaAvailable,
+                       corev1.ConditionFalse,
+                       
v1alpha1.IntegrationConditionContainerNotAvailableReason,
+                       "",
+               )
+               return nil
+       }
+
        if t.Enabled == nil || !*t.Enabled {
                // Deactivate the Jolokia Java agent
                // Note: the AB_JOLOKIA_OFF environment variable acts as an 
option flag
-               envvar.SetVal(&e.EnvVars, "AB_JOLOKIA_OFF", "true")
+               envvar.SetVal(&container.Env, "AB_JOLOKIA_OFF", "true")
                return nil
        }
 
        // Need to set it explicitly as it default to true
-       envvar.SetVal(&e.EnvVars, "AB_JOLOKIA_AUTH_OPENSHIFT", "false")
+       envvar.SetVal(&container.Env, "AB_JOLOKIA_AUTH_OPENSHIFT", "false")
 
        // Configure the Jolokia Java agent
        // Populate first with the extra options
@@ -113,25 +130,7 @@ func (t *jolokiaTrait) Apply(e *Environment) (err error) {
        for k, v := range options {
                optionValues = append(optionValues, k+"="+v)
        }
-       envvar.SetVal(&e.EnvVars, "AB_JOLOKIA_OPTS", strings.Join(optionValues, 
","))
-
-       containerName := defaultContainerName
-       dt := e.Catalog.GetTrait(containerTraitID)
-       if dt != nil {
-               containerName = dt.(*containerTrait).Name
-       }
-
-       container := e.Resources.GetContainerByName(containerName)
-       if container == nil {
-               e.Integration.Status.SetCondition(
-                       v1alpha1.IntegrationConditionJolokiaAvailable,
-                       corev1.ConditionFalse,
-                       
v1alpha1.IntegrationConditionContainerNotAvailableReason,
-                       "",
-               )
-
-               return nil
-       }
+       envvar.SetVal(&container.Env, "AB_JOLOKIA_OPTS", 
strings.Join(optionValues, ","))
 
        containerPort := corev1.ContainerPort{
                Name:          "jolokia",
diff --git a/pkg/trait/jolokia_test.go b/pkg/trait/jolokia_test.go
index 30381f6..5474fde 100644
--- a/pkg/trait/jolokia_test.go
+++ b/pkg/trait/jolokia_test.go
@@ -113,12 +113,13 @@ func TestApplyJolokiaTraitNominalShouldSucceed(t 
*testing.T) {
 
        err := trait.Apply(environment)
 
+       container := 
environment.Resources.GetContainerByName(defaultContainerName)
+
        assert.Nil(t, err)
-       test.EnvVarHasValue(t, environment.EnvVars, 
"AB_JOLOKIA_AUTH_OPENSHIFT", "false")
-       test.EnvVarHasValue(t, environment.EnvVars, "AB_JOLOKIA_OPTS", 
"port=8778")
+       test.EnvVarHasValue(t, container.Env, "AB_JOLOKIA_AUTH_OPENSHIFT", 
"false")
+       test.EnvVarHasValue(t, container.Env, "AB_JOLOKIA_OPTS", "port=8778")
        assert.Len(t, environment.Integration.Status.Conditions, 1)
 
-       container := environment.Resources.GetContainerByName("integration")
        assert.NotNil(t, container)
        assert.Len(t, container.Ports, 1)
        containerPort := container.Ports[0]
@@ -158,8 +159,10 @@ func 
TestApplyJolokiaTraitWithOptionShouldOverrideDefault(t *testing.T) {
 
        err := trait.Apply(environment)
 
+       container := 
environment.Resources.GetContainerByName(defaultContainerName)
+
        assert.Nil(t, err)
-       ev := envvar.Get(environment.EnvVars, "AB_JOLOKIA_OPTS")
+       ev := envvar.Get(container.Env, "AB_JOLOKIA_OPTS")
        assert.NotNil(t, ev)
        assert.Contains(t, ev.Value, "port=8778", "host=explicit-host", 
"discoveryEnabled=true", "protocol=http", "caCert=.cacert")
        assert.Contains(t, ev.Value, "extendedClientCheck=false", 
"clientPrincipal=cn:any", "useSslClientAuthentication=false")
@@ -181,8 +184,10 @@ func TestApplyDisabledJolokiaTraitShouldNotSucceed(t 
*testing.T) {
 
        err := trait.Apply(environment)
 
+       container := 
environment.Resources.GetContainerByName(defaultContainerName)
+
        assert.Nil(t, err)
-       test.EnvVarHasValue(t, environment.EnvVars, "AB_JOLOKIA_OFF", "true")
+       test.EnvVarHasValue(t, container.Env, "AB_JOLOKIA_OFF", "true")
 }
 
 func TestSetDefaultJolokiaOptionShoudlNotOverrideOptionsMap(t *testing.T) {
@@ -283,7 +288,6 @@ func TestAddWrongTypeOptionToJolokiaOptionsDoesNothing(t 
*testing.T) {
 }
 
 func createNominalJolokiaTest() (*jolokiaTrait, *Environment) {
-
        trait := newJolokiaTrait()
        enabled := true
        trait.Enabled = &enabled

Reply via email to