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 7e97939646fa94afb1c646f3c1bea31056cb1cc7
Author: Antonin Stefanutti <anto...@stefanutti.fr>
AuthorDate: Tue Nov 26 11:29:53 2019 +0100

    chore: Rely on generic patching to reconcile Knative service scaling 
annotations for running integrations
---
 pkg/trait/knative_service.go | 56 +++++++++++++++++---------------------------
 1 file changed, 21 insertions(+), 35 deletions(-)

diff --git a/pkg/trait/knative_service.go b/pkg/trait/knative_service.go
index d60e1b7..b57f76f 100644
--- a/pkg/trait/knative_service.go
+++ b/pkg/trait/knative_service.go
@@ -18,11 +18,8 @@ limitations under the License.
 package trait
 
 import (
-       "context"
        "strconv"
 
-       "sigs.k8s.io/controller-runtime/pkg/client"
-
        corev1 "k8s.io/api/core/v1"
        metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 
@@ -170,18 +167,24 @@ func (t *knativeServiceTrait) Configure(e *Environment) 
(bool, error) {
 }
 
 func (t *knativeServiceTrait) Apply(e *Environment) error {
-       if e.IntegrationInPhase(v1alpha1.IntegrationPhaseRunning) {
-               // Reconcile the Knative scale annotations
-               service := &serving.Service{}
-               err := t.client.Get(context.TODO(), client.ObjectKey{Namespace: 
e.Integration.Namespace, Name: e.Integration.Name}, service)
-               if err != nil {
-                       return err
-               }
+       ksvc := t.getServiceFor(e)
+       maps := e.ComputeConfigMaps()
+
+       e.Resources.AddAll(maps)
+       e.Resources.Add(ksvc)
 
+       e.Integration.Status.SetCondition(
+               v1alpha1.IntegrationConditionKnativeServiceAvailable,
+               corev1.ConditionTrue,
+               v1alpha1.IntegrationConditionKnativeServiceAvailableReason,
+               ksvc.Name,
+       )
+
+       if e.IntegrationInPhase(v1alpha1.IntegrationPhaseRunning) {
                replicas := e.Integration.Spec.Replicas
 
                isUpdateRequired := false
-               minScale, ok := 
service.Spec.Template.Annotations[knativeServingMinScaleAnnotation]
+               minScale, ok := 
ksvc.Spec.Template.Annotations[knativeServingMinScaleAnnotation]
                if ok {
                        min, err := strconv.Atoi(minScale)
                        if err != nil {
@@ -194,7 +197,7 @@ func (t *knativeServiceTrait) Apply(e *Environment) error {
                        isUpdateRequired = true
                }
 
-               maxScale, ok := 
service.Spec.Template.Annotations[knativeServingMaxScaleAnnotation]
+               maxScale, ok := 
ksvc.Spec.Template.Annotations[knativeServingMaxScaleAnnotation]
                if ok {
                        max, err := strconv.Atoi(maxScale)
                        if err != nil {
@@ -210,40 +213,23 @@ func (t *knativeServiceTrait) Apply(e *Environment) error 
{
                if isUpdateRequired {
                        if replicas == nil {
                                if t.MinScale != nil && *t.MinScale > 0 {
-                                       
service.Spec.Template.Annotations[knativeServingMinScaleAnnotation] = 
strconv.Itoa(*t.MinScale)
+                                       
ksvc.Spec.Template.Annotations[knativeServingMinScaleAnnotation] = 
strconv.Itoa(*t.MinScale)
                                } else {
-                                       
delete(service.Spec.Template.Annotations, knativeServingMinScaleAnnotation)
+                                       delete(ksvc.Spec.Template.Annotations, 
knativeServingMinScaleAnnotation)
                                }
                                if t.MaxScale != nil && *t.MaxScale > 0 {
-                                       
service.Spec.Template.Annotations[knativeServingMaxScaleAnnotation] = 
strconv.Itoa(*t.MaxScale)
+                                       
ksvc.Spec.Template.Annotations[knativeServingMaxScaleAnnotation] = 
strconv.Itoa(*t.MaxScale)
                                } else {
-                                       
delete(service.Spec.Template.Annotations, knativeServingMaxScaleAnnotation)
+                                       delete(ksvc.Spec.Template.Annotations, 
knativeServingMaxScaleAnnotation)
                                }
                        } else {
                                scale := strconv.Itoa(int(*replicas))
-                               
service.Spec.Template.Annotations[knativeServingMinScaleAnnotation] = scale
-                               
service.Spec.Template.Annotations[knativeServingMaxScaleAnnotation] = scale
-                       }
-                       err := t.client.Update(context.TODO(), service)
-                       if err != nil {
-                               return err
+                               
ksvc.Spec.Template.Annotations[knativeServingMinScaleAnnotation] = scale
+                               
ksvc.Spec.Template.Annotations[knativeServingMaxScaleAnnotation] = scale
                        }
                }
        }
 
-       ksvc := t.getServiceFor(e)
-       maps := e.ComputeConfigMaps()
-
-       e.Resources.AddAll(maps)
-       e.Resources.Add(ksvc)
-
-       e.Integration.Status.SetCondition(
-               v1alpha1.IntegrationConditionKnativeServiceAvailable,
-               corev1.ConditionTrue,
-               v1alpha1.IntegrationConditionKnativeServiceAvailableReason,
-               ksvc.Name,
-       )
-
        return nil
 }
 

Reply via email to