|
|
@ -9,9 +9,19 @@ import ( |
|
|
|
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" |
|
|
|
) |
|
|
|
|
|
|
|
func mergeMaps(itermaps ...map[string]string) map[string]string { |
|
|
|
result := make(map[string]string) |
|
|
|
for _, rv := range itermaps { |
|
|
|
for k, v := range rv { |
|
|
|
result[k] = v |
|
|
|
} |
|
|
|
} |
|
|
|
return result |
|
|
|
} |
|
|
|
|
|
|
|
// generate one cronjob for specific task
|
|
|
|
func generateCronjob(reqLogger logr.Logger, cr *blindagev1alpha1.CronOp, jobSpec blindagev1alpha1.CronTask) batchv1beta1.CronJob { |
|
|
|
labels := map[string]string{ |
|
|
|
baseLabels := map[string]string{ |
|
|
|
"operator": "cron-operator", |
|
|
|
"cronop": cr.Name, |
|
|
|
} |
|
|
@ -26,11 +36,18 @@ func generateCronjob(reqLogger logr.Logger, cr *blindagev1alpha1.CronOp, jobSpec |
|
|
|
ObjectMeta: metav1.ObjectMeta{ |
|
|
|
Name: cr.Name + "-" + jobSpec.Name, |
|
|
|
Namespace: cr.Namespace, |
|
|
|
Labels: labels, |
|
|
|
Labels: mergeMaps(baseLabels, cr.ObjectMeta.Labels), |
|
|
|
}, |
|
|
|
Spec: batchv1beta1.CronJobSpec{}, |
|
|
|
} |
|
|
|
|
|
|
|
// job and pod needs labels too
|
|
|
|
cronjob.Spec.JobTemplate.ObjectMeta.Labels = mergeMaps(baseLabels, cr.ObjectMeta.Labels) |
|
|
|
cronjob.Spec.JobTemplate.Spec.Template.ObjectMeta.Labels = mergeMaps(baseLabels, cr.ObjectMeta.Labels) |
|
|
|
|
|
|
|
// set annotation for template
|
|
|
|
cronjob.Spec.JobTemplate.Spec.Template.ObjectMeta.Annotations = cr.Spec.Annotations |
|
|
|
|
|
|
|
cronjob.Spec.Schedule = "0 * * * *" |
|
|
|
if jobSpec.Schedule != "" { |
|
|
|
cronjob.Spec.Schedule = jobSpec.Schedule |
|
|
|