You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by as...@apache.org on 2019/10/01 07:48:15 UTC

[camel-k] 01/05: fix(trait): Directly configure container env in Jolokia trait

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 <an...@stefanutti.fr>
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