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:14 UTC

[camel-k] branch master updated (82cff0a -> 2a922d8)

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

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


    from 82cff0a  fix: Kaniko publisher step fails with IncrementalPackager
     new bcba05f  fix(trait): Directly configure container env in Jolokia trait
     new e0a141f  fix(trait): Directly configure container env in Prometheus trait
     new 64553ae  fix(prometheus): Create a service if no one exists already
     new d433821  fix(prometheus): Fix Prometheus service condition message
     new 2a922d8  fix(knative): Add Jolokia and Prometheus traits so that they are disabled by default

The 5 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 pkg/trait/jolokia.go       |  41 ++++++++--------
 pkg/trait/jolokia_test.go  |  16 ++++---
 pkg/trait/prometheus.go    | 113 ++++++++++++++++++++++++---------------------
 pkg/trait/service.go       |  61 +++++++++++++-----------
 pkg/trait/trait_catalog.go |   2 +
 5 files changed, 127 insertions(+), 106 deletions(-)


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

Posted by as...@apache.org.
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 <an...@stefanutti.fr>
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) {


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

Posted by as...@apache.org.
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


[camel-k] 04/05: fix(prometheus): Fix Prometheus service condition message

Posted by as...@apache.org.
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 d433821d2766e56a31e8f0d8f41c7bad76edcadc
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 18:32:17 2019 +0200

    fix(prometheus): Fix Prometheus service condition message
---
 pkg/trait/prometheus.go | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index bbef5b8..b5dd77d 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -92,7 +92,7 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
 	// 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)
+	condition.Message = fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
 
 	// Retrieve the service or create a new one if the service trait is enabled
 	serviceEnabled := false
@@ -114,7 +114,7 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
 	if serviceEnabled {
 		servicePort := t.getServicePort()
 		service.Spec.Ports = append(service.Spec.Ports, *servicePort)
-		condition.Message += fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port)
+		condition.Message = fmt.Sprintf("%s(%s/%d) -> ", service.Name, servicePort.Name, servicePort.Port) + condition.Message
 
 		// Add the ServiceMonitor resource
 		if t.ServiceMonitor {


[camel-k] 05/05: fix(knative): Add Jolokia and Prometheus traits so that they are disabled by default

Posted by as...@apache.org.
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 2a922d82351d9ded3122528c9bb5d7fdb6ff3d1d
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 18:32:53 2019 +0200

    fix(knative): Add Jolokia and Prometheus traits so that they are disabled by default
---
 pkg/trait/trait_catalog.go | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/pkg/trait/trait_catalog.go b/pkg/trait/trait_catalog.go
index 5dfacab..b682314 100644
--- a/pkg/trait/trait_catalog.go
+++ b/pkg/trait/trait_catalog.go
@@ -184,6 +184,8 @@ func (c *Catalog) traitsFor(environment *Environment) []Trait {
 			c.tAffinity,
 			c.tKnativeService,
 			c.tContainer,
+			c.tJolokia,
+			c.tPrometheus,
 			c.tClasspath,
 			c.tProbes,
 			c.tIstio,


[camel-k] 03/05: fix(prometheus): Create a service if no one exists already

Posted by as...@apache.org.
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 64553ae05309806ebbdf999179a3edc4bcc425ee
Author: Antonin Stefanutti <an...@stefanutti.fr>
AuthorDate: Tue Sep 24 18:28:09 2019 +0200

    fix(prometheus): Create a service if no one exists already
---
 pkg/trait/prometheus.go | 47 ++++++++++++++++++++++---------------
 pkg/trait/service.go    | 61 ++++++++++++++++++++++++++++---------------------
 2 files changed, 64 insertions(+), 44 deletions(-)

diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go
index 7ff1db4..bbef5b8 100644
--- a/pkg/trait/prometheus.go
+++ b/pkg/trait/prometheus.go
@@ -94,32 +94,43 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) {
 	container.Ports = append(container.Ports, *containerPort)
 	condition.Message += fmt.Sprintf("%s(%s/%d)", container.Name, containerPort.Name, containerPort.ContainerPort)
 
-	// Add the service port
+	// Retrieve the service or create a new one if the service trait is enabled
+	serviceEnabled := false
 	service := e.Resources.GetServiceForIntegration(e.Integration)
 	if service == nil {
-		condition.Status = corev1.ConditionFalse
-		condition.Reason = v1alpha1.IntegrationConditionServiceNotAvailableReason
-	} else {
+		trait := e.Catalog.GetTrait(serviceTraitID)
+		if serviceTrait, ok := trait.(*serviceTrait); ok {
+			serviceEnabled = serviceTrait.isEnabled()
+		}
+		if serviceEnabled {
+			// add a new service if not already created
+			service = getServiceFor(e)
+			e.Resources.Add(service)
+		}
+	}
+
+	// Add the service port and service monitor resource
+	// A better strategy may be needed when the Knative profile is active
+	if serviceEnabled {
 		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)
 
-	if condition.Status == corev1.ConditionFalse {
-		return nil
-	}
-
-	// Add the ServiceMonitor resource
-	if t.ServiceMonitor {
-		smt, err := t.getServiceMonitorFor(e)
-		if err != nil {
-			return err
+		// Add the ServiceMonitor resource
+		if t.ServiceMonitor {
+			smt, err := t.getServiceMonitorFor(e)
+			if err != nil {
+				return err
+			}
+			e.Resources.Add(smt)
 		}
-		e.Resources.Add(smt)
+	} else {
+		condition.Status = corev1.ConditionFalse
+		condition.Reason = v1alpha1.IntegrationConditionServiceNotAvailableReason
 	}
 
+	e.Integration.Status.SetConditions(condition)
+
 	return nil
 }
 
@@ -167,7 +178,7 @@ func (t *prometheusTrait) getServiceMonitorFor(e *Environment) (*monitoringv1.Se
 			},
 			Endpoints: []monitoringv1.Endpoint{
 				{
-					Port: "prometheus",
+					Port: prometheusPortName,
 				},
 			},
 		},
diff --git a/pkg/trait/service.go b/pkg/trait/service.go
index ae204c0..3efb446 100644
--- a/pkg/trait/service.go
+++ b/pkg/trait/service.go
@@ -30,16 +30,23 @@ type serviceTrait struct {
 	Auto      *bool `property:"auto"`
 }
 
-const httpPortName = "http"
+const (
+	serviceTraitID = "service"
+	httpPortName   = "http"
+)
 
 func newServiceTrait() *serviceTrait {
 	return &serviceTrait{
-		BaseTrait: newBaseTrait("service"),
+		BaseTrait: newBaseTrait(serviceTraitID),
 	}
 }
 
+func (t *serviceTrait) isEnabled() bool {
+	return t.Enabled == nil || *t.Enabled
+}
+
 func (t *serviceTrait) Configure(e *Environment) (bool, error) {
-	if t.Enabled != nil && !*t.Enabled {
+	if !t.isEnabled() {
 		e.Integration.Status.SetCondition(
 			v1alpha1.IntegrationConditionServiceAvailable,
 			corev1.ConditionFalse,
@@ -83,32 +90,34 @@ func (t *serviceTrait) Configure(e *Environment) (bool, error) {
 	return true, nil
 }
 
-func (t *serviceTrait) Apply(e *Environment) (err error) {
+func (t *serviceTrait) Apply(e *Environment) error {
 	svc := e.Resources.GetServiceForIntegration(e.Integration)
+	// add a new service if not already created
 	if svc == nil {
-		svc := corev1.Service{
-			TypeMeta: metav1.TypeMeta{
-				Kind:       "Service",
-				APIVersion: "v1",
-			},
-			ObjectMeta: metav1.ObjectMeta{
-				Name:      e.Integration.Name,
-				Namespace: e.Integration.Namespace,
-				Labels: map[string]string{
-					"camel.apache.org/integration": e.Integration.Name,
-				},
+		svc = getServiceFor(e)
+		e.Resources.Add(svc)
+	}
+	return nil
+}
+
+func getServiceFor(e *Environment) *corev1.Service {
+	return &corev1.Service{
+		TypeMeta: metav1.TypeMeta{
+			Kind:       "Service",
+			APIVersion: "v1",
+		},
+		ObjectMeta: metav1.ObjectMeta{
+			Name:      e.Integration.Name,
+			Namespace: e.Integration.Namespace,
+			Labels: map[string]string{
+				"camel.apache.org/integration": e.Integration.Name,
 			},
-			Spec: corev1.ServiceSpec{
-				Ports: []corev1.ServicePort{},
-				Selector: map[string]string{
-					"camel.apache.org/integration": e.Integration.Name,
-				},
+		},
+		Spec: corev1.ServiceSpec{
+			Ports: []corev1.ServicePort{},
+			Selector: map[string]string{
+				"camel.apache.org/integration": e.Integration.Name,
 			},
-		}
-
-		// add a new service if not already created
-		e.Resources.Add(&svc)
+		},
 	}
-
-	return nil
 }