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
