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 e0a141f703591b8a72b1d145f74886a586844736
Author: Antonin Stefanutti <[email protected]>
AuthorDate: Tue Sep 24 16:04:37 2019 +0200

    fix(trait): Directly configure container env in Prometheus trait
---
 pkg/trait/prometheus.go | 78 +++++++++++++++++++++++--------------------------
 1 file changed, 37 insertions(+), 41 deletions(-)

diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index f52ad54..7ff1db4 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -56,39 +56,53 @@ func (t *prometheusTrait) Configure(e *Environment) (bool, 
error) {
 }
 
 func (t *prometheusTrait) 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.IntegrationConditionPrometheusAvailable,
+                       corev1.ConditionFalse,
+                       
v1alpha1.IntegrationConditionContainerNotAvailableReason,
+                       "",
+               )
+               return nil
+       }
+
        if t.Enabled == nil || !*t.Enabled {
                // Deactivate the Prometheus Java agent
                // Note: the AB_PROMETHEUS_OFF environment variable acts as an 
option flag
-               envvar.SetVal(&e.EnvVars, "AB_PROMETHEUS_OFF", "true")
+               envvar.SetVal(&container.Env, "AB_PROMETHEUS_OFF", "true")
                return nil
        }
 
-       // Configure the Prometheus Java agent
-       envvar.SetVal(&e.EnvVars, "AB_PROMETHEUS_PORT", strconv.Itoa(t.Port))
-
-       service, servicePort := t.configureServicePort(e)
-       container, containerPort := t.configureContainerPort(e)
-
        condition := v1alpha1.IntegrationCondition{
                Type:   v1alpha1.IntegrationConditionPrometheusAvailable,
                Status: corev1.ConditionTrue,
                Reason: v1alpha1.IntegrationConditionPrometheusAvailableReason,
        }
 
-       if servicePort != nil {
-               service.Spec.Ports = append(service.Spec.Ports, *servicePort)
-               condition.Message = fmt.Sprintf("%s(%s/%d) -> ", service.Name, 
servicePort.Name, servicePort.Port)
-       } else {
+       // Configure the Prometheus Java agent
+       envvar.SetVal(&container.Env, "AB_PROMETHEUS_PORT", 
strconv.Itoa(t.Port))
+
+       // Add the container port
+       containerPort := t.getContainerPort()
+       container.Ports = append(container.Ports, *containerPort)
+       condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, 
containerPort.Name, containerPort.ContainerPort)
+
+       // Add the service port
+       service := e.Resources.GetServiceForIntegration(e.Integration)
+       if service == nil {
                condition.Status = corev1.ConditionFalse
                condition.Reason = 
v1alpha1.IntegrationConditionServiceNotAvailableReason
-       }
-
-       if containerPort != nil {
-               container.Ports = append(container.Ports, *containerPort)
-               condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, 
containerPort.Name, containerPort.ContainerPort)
        } else {
-               condition.Status = corev1.ConditionFalse
-               condition.Reason = 
v1alpha1.IntegrationConditionContainerNotAvailableReason
+               servicePort := t.getServicePort()
+               service.Spec.Ports = append(service.Spec.Ports, *servicePort)
+               condition.Message += fmt.Sprintf("%s(%s/%d) -> ", service.Name, 
servicePort.Name, servicePort.Port)
        }
 
        e.Integration.Status.SetConditions(condition)
@@ -97,8 +111,8 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
                return nil
        }
 
+       // Add the ServiceMonitor resource
        if t.ServiceMonitor {
-               // Add the ServiceMonitor resource
                smt, err := t.getServiceMonitorFor(e)
                if err != nil {
                        return err
@@ -109,41 +123,23 @@ func (t *prometheusTrait) Apply(e *Environment) (err 
error) {
        return nil
 }
 
-func (t *prometheusTrait) configureContainerPort(e *Environment) 
(*corev1.Container, *corev1.ContainerPort) {
-       containerName := defaultContainerName
-       dt := e.Catalog.GetTrait(containerTraitID)
-       if dt != nil {
-               containerName = dt.(*containerTrait).Name
-       }
-
-       container := e.Resources.GetContainerByName(containerName)
-       if container == nil {
-               return nil, nil
-       }
-
+func (t *prometheusTrait) getContainerPort() *corev1.ContainerPort {
        containerPort := corev1.ContainerPort{
                Name:          prometheusPortName,
                ContainerPort: int32(t.Port),
                Protocol:      corev1.ProtocolTCP,
        }
-
-       return container, &containerPort
+       return &containerPort
 }
 
-func (t *prometheusTrait) configureServicePort(e *Environment) 
(*corev1.Service, *corev1.ServicePort) {
-       service := e.Resources.GetServiceForIntegration(e.Integration)
-       if service == nil {
-               return nil, nil
-       }
-
+func (t *prometheusTrait) getServicePort() *corev1.ServicePort {
        servicePort := corev1.ServicePort{
                Name:       prometheusPortName,
                Port:       int32(t.Port),
                Protocol:   corev1.ProtocolTCP,
                TargetPort: intstr.FromString(prometheusPortName),
        }
-
-       return service, &servicePort
+       return &servicePort
 }
 
 func (t *prometheusTrait) getServiceMonitorFor(e *Environment) 
(*monitoringv1.ServiceMonitor, error) {

Reply via email to