Skip to content

Commit

Permalink
apache#1199: add cronjob conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolaferraro committed Jan 28, 2020
1 parent 69e75dd commit f167562
Show file tree
Hide file tree
Showing 6 changed files with 118 additions and 46 deletions.
6 changes: 6 additions & 0 deletions assets/json-schema/Integration.json
Original file line number Diff line number Diff line change
Expand Up @@ -272,6 +272,12 @@
"$schema": "http://json-schema.org/draft-04/schema#",
"$ref": "#/definitions/Failure"
},
"generatedResources": {
"items": {
"$ref": "#/definitions/ResourceSpec"
},
"type": "array"
},
"generatedSources": {
"items": {
"$ref": "#/definitions/SourceSpec"
Expand Down
10 changes: 9 additions & 1 deletion deploy/builder-role-kubernetes.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,10 +44,18 @@ rules:
- apiGroups:
- ""
resources:
- events
- configmaps
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- get
- list
- watch
10 changes: 9 additions & 1 deletion deploy/builder-role-openshift.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,21 @@ rules:
- apiGroups:
- ""
resources:
- events
- configmaps
- secrets
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- get
- list
- watch
- apiGroups:
- ""
- "build.openshift.io"
Expand Down
107 changes: 63 additions & 44 deletions deploy/resources.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions pkg/apis/camel/v1/integration_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,6 +181,8 @@ const (
IntegrationConditionServiceAvailable IntegrationConditionType = "ServiceAvailable"
// IntegrationConditionKnativeServiceAvailable --
IntegrationConditionKnativeServiceAvailable IntegrationConditionType = "KnativeServiceAvailable"
// IntegrationConditionCronJobAvailable --
IntegrationConditionCronJobAvailable IntegrationConditionType = "CronJobAvailable"
// IntegrationConditionExposureAvailable --
IntegrationConditionExposureAvailable IntegrationConditionType = "ExposureAvailable"
// IntegrationConditionPrometheusAvailable --
Expand Down Expand Up @@ -214,6 +216,10 @@ const (
IntegrationConditionKnativeServiceAvailableReason string = "KnativeServiceAvailable"
// IntegrationConditionKnativeServiceNotAvailableReason --
IntegrationConditionKnativeServiceNotAvailableReason string = "KnativeServiceNotAvailable"
// IntegrationConditionCronJobAvailableReason --
IntegrationConditionCronJobAvailableReason string = "CronJobAvailableReason"
// IntegrationConditionCronJobNotAvailableReason --
IntegrationConditionCronJobNotAvailableReason string = "CronJobNotAvailableReason"
// IntegrationConditionPrometheusAvailableReason --
IntegrationConditionPrometheusAvailableReason string = "PrometheusAvailable"
// IntegrationConditionJolokiaAvailableReason --
Expand Down
25 changes: 25 additions & 0 deletions pkg/trait/cron.go
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,13 @@ func newCronTrait() *cronTrait {

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
}

Expand All @@ -118,6 +125,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
}

Expand Down Expand Up @@ -166,6 +178,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
}

Expand All @@ -187,6 +205,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)
}
}
Expand Down

0 comments on commit f167562

Please sign in to comment.