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

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

commit fd88d0d9115cce2bd2cf82d13620781376048043
Author: Nicola Ferraro <ni.ferr...@gmail.com>
AuthorDate: Tue Jan 28 01:21:46 2020 +0100

    #1199: add cronjob conditions
---
 deploy/builder-role-kubernetes.yaml    | 10 +++++++++-
 deploy/builder-role-openshift.yaml     | 10 +++++++++-
 pkg/apis/camel/v1/integration_types.go |  6 ++++++
 pkg/trait/cron.go                      | 25 +++++++++++++++++++++++++
 4 files changed, 49 insertions(+), 2 deletions(-)

diff --git a/deploy/builder-role-kubernetes.yaml 
b/deploy/builder-role-kubernetes.yaml
index 13a0853..5a18caf 100644
--- a/deploy/builder-role-kubernetes.yaml
+++ b/deploy/builder-role-kubernetes.yaml
@@ -44,10 +44,18 @@ rules:
 - apiGroups:
   - ""
   resources:
-  - events
   - configmaps
   - secrets
   verbs:
   - get
   - list
   - watch
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - create
+  - get
+  - list
+  - watch
diff --git a/deploy/builder-role-openshift.yaml 
b/deploy/builder-role-openshift.yaml
index 48bea4a..a0ab82b 100644
--- a/deploy/builder-role-openshift.yaml
+++ b/deploy/builder-role-openshift.yaml
@@ -44,7 +44,6 @@ rules:
 - apiGroups:
   - ""
   resources:
-  - events
   - configmaps
   - secrets
   verbs:
@@ -53,6 +52,15 @@ rules:
   - watch
 - apiGroups:
   - ""
+  resources:
+  - events
+  verbs:
+  - create
+  - get
+  - list
+  - watch
+- apiGroups:
+  - ""
   - "build.openshift.io"
   resources:
   - buildconfigs
diff --git a/pkg/apis/camel/v1/integration_types.go 
b/pkg/apis/camel/v1/integration_types.go
index a818587..742c296 100644
--- a/pkg/apis/camel/v1/integration_types.go
+++ b/pkg/apis/camel/v1/integration_types.go
@@ -180,6 +180,8 @@ const (
        IntegrationConditionServiceAvailable IntegrationConditionType = 
"ServiceAvailable"
        // IntegrationConditionKnativeServiceAvailable --
        IntegrationConditionKnativeServiceAvailable IntegrationConditionType = 
"KnativeServiceAvailable"
+       // IntegrationConditionCronJobAvailable --
+       IntegrationConditionCronJobAvailable IntegrationConditionType = 
"CronJobAvailable"
        // IntegrationConditionExposureAvailable --
        IntegrationConditionExposureAvailable IntegrationConditionType = 
"ExposureAvailable"
        // IntegrationConditionPrometheusAvailable --
@@ -213,6 +215,10 @@ const (
        IntegrationConditionKnativeServiceAvailableReason string = 
"KnativeServiceAvailable"
        // IntegrationConditionKnativeServiceNotAvailableReason --
        IntegrationConditionKnativeServiceNotAvailableReason string = 
"KnativeServiceNotAvailable"
+       // IntegrationConditionCronJobAvailableReason --
+       IntegrationConditionCronJobAvailableReason string = 
"CronJobAvailableReason"
+       // IntegrationConditionCronJobNotAvailableReason --
+       IntegrationConditionCronJobNotAvailableReason string = 
"CronJobNotAvailableReason"
        // IntegrationConditionPrometheusAvailableReason --
        IntegrationConditionPrometheusAvailableReason string = 
"PrometheusAvailable"
        // IntegrationConditionJolokiaAvailableReason --
diff --git a/pkg/trait/cron.go b/pkg/trait/cron.go
index b2b44d6..815aa66 100644
--- a/pkg/trait/cron.go
+++ b/pkg/trait/cron.go
@@ -115,6 +115,13 @@ func newCronTrait() Trait {
 
 func (t *cronTrait) Configure(e *Environment) (bool, error) {
        if t.Enabled != nil && !*t.Enabled {
+               e.Integration.Status.SetCondition(
+                       v1.IntegrationConditionCronJobAvailable,
+                       corev1.ConditionFalse,
+                       v1.IntegrationConditionCronJobNotAvailableReason,
+                       "explicitly disabled",
+               )
+
                return false, nil
        }
 
@@ -125,6 +132,11 @@ func (t *cronTrait) Configure(e *Environment) (bool, 
error) {
        if t.Auto == nil || *t.Auto {
                globalCron, err := t.getGlobalCron(e)
                if err != nil {
+                       e.Integration.Status.SetErrorCondition(
+                               v1.IntegrationConditionCronJobAvailable,
+                               
v1.IntegrationConditionCronJobNotAvailableReason,
+                               err,
+                       )
                        return false, err
                }
 
@@ -177,6 +189,12 @@ func (t *cronTrait) Configure(e *Environment) (bool, 
error) {
                return false, err
        }
        if strategy != ControllerStrategyCronJob {
+               e.Integration.Status.SetCondition(
+                       v1.IntegrationConditionCronJobAvailable,
+                       corev1.ConditionFalse,
+                       v1.IntegrationConditionCronJobNotAvailableReason,
+                       "controller strategy: "+string(strategy),
+               )
                return false, nil
        }
 
@@ -198,6 +216,13 @@ func (t *cronTrait) Apply(e *Environment) error {
                        e.Resources.AddAll(maps)
                        e.Resources.Add(cronJob)
 
+                       e.Integration.Status.SetCondition(
+                               v1.IntegrationConditionCronJobAvailable,
+                               corev1.ConditionTrue,
+                               v1.IntegrationConditionCronJobAvailableReason,
+                               fmt.Sprintf("CronJob name is %s", cronJob.Name),
+                       )
+
                        envvar.SetVal(&e.EnvVars, "CAMEL_K_CRON_OVERRIDE", 
t.Components)
                }
        }

Reply via email to