From ed3c9af6df6857d5453a50854b93ef095f1995c9 Mon Sep 17 00:00:00 2001
From: Konstantinos Samaras-Tsakiris <ksamtsak@gmail.com>
Date: Sun, 28 Nov 2021 20:50:33 +0100
Subject: [PATCH] Trim cronjob name

---
 controllers/drupalsite_controller_test.go | 20 ++++++++++----------
 controllers/drupalsite_resources.go       |  4 +++-
 2 files changed, 13 insertions(+), 11 deletions(-)

diff --git a/controllers/drupalsite_controller_test.go b/controllers/drupalsite_controller_test.go
index 6a62ffe0..bd6e9d8d 100644
--- a/controllers/drupalsite_controller_test.go
+++ b/controllers/drupalsite_controller_test.go
@@ -273,7 +273,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check if the Cronjob resource is created
 				By("Expecting Cronjob to be created")
 				Eventually(func() []metav1.OwnerReference {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return cronjob.ObjectMeta.OwnerReferences
 				}, timeout, interval).Should(ContainElement(expectedOwnerReference))
 			})
@@ -481,7 +481,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check the image version on the cronjob
 				By("Expecting the new drupal Version on the cronjob spec")
 				Eventually(func() bool {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					for i, container := range cronjob.Spec.JobTemplate.Spec.Template.Spec.Containers {
 						switch container.Name {
 						case "cronjob":
@@ -644,11 +644,11 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check Drush cronjob
 				By("Expecting Drush cronjob recreated")
 				Eventually(func() error {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return k8sClient.Delete(ctx, &cronjob)
 				}, timeout, interval).Should(Succeed())
 				Eventually(func() []metav1.OwnerReference {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return cronjob.ObjectMeta.OwnerReferences
 				}, timeout, interval).Should(ContainElement(expectedOwnerReference))
 			})
@@ -947,7 +947,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check if the Cronjob resource is created
 				By("Expecting Cronjob to be created")
 				Eventually(func() []metav1.OwnerReference {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return cronjob.ObjectMeta.OwnerReferences
 				}, timeout, interval).Should(ContainElement(expectedOwnerReference))
 
@@ -1143,7 +1143,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check the image version on the cronjob
 				By("Expecting the new drupal Version on the cronjob spec")
 				Eventually(func() bool {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					for i, container := range cronjob.Spec.JobTemplate.Spec.Template.Spec.Containers {
 						switch container.Name {
 						case "cronjob":
@@ -1393,7 +1393,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check if the Cronjob resource is created
 				By("Expecting Cronjob to be created")
 				Eventually(func() []metav1.OwnerReference {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return cronjob.ObjectMeta.OwnerReferences
 				}, timeout, interval).Should(ContainElement(expectedOwnerReference))
 
@@ -1684,7 +1684,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check if the Cronjob resource is created
 				By("Expecting Cronjob to be created")
 				Eventually(func() []metav1.OwnerReference {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return cronjob.ObjectMeta.OwnerReferences
 				}, timeout, interval).Should(ContainElement(expectedOwnerReference))
 			})
@@ -1844,7 +1844,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check if the Cronjob resource is created
 				By("Expecting Cronjob to be created")
 				Eventually(func() []metav1.OwnerReference {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					return cronjob.ObjectMeta.OwnerReferences
 				}, timeout, interval).Should(ContainElement(expectedOwnerReference))
 			})
@@ -2007,7 +2007,7 @@ var _ = Describe("DrupalSite controller", func() {
 				// Check the image version on the cronjob
 				By("Expecting the new drupal Version on the cronjob spec")
 				Eventually(func() bool {
-					k8sClient.Get(ctx, types.NamespacedName{Name: "cronjob-" + key.Name, Namespace: key.Namespace}, &cronjob)
+					k8sClient.Get(ctx, types.NamespacedName{Name: key.Name, Namespace: key.Namespace}, &cronjob)
 					for i, container := range cronjob.Spec.JobTemplate.Spec.Template.Spec.Containers {
 						switch container.Name {
 						case "cronjob":
diff --git a/controllers/drupalsite_resources.go b/controllers/drupalsite_resources.go
index 6f46c10f..4533e621 100644
--- a/controllers/drupalsite_resources.go
+++ b/controllers/drupalsite_resources.go
@@ -513,7 +513,9 @@ func (r *DrupalSiteReconciler) ensureResourceX(ctx context.Context, d *webservic
 			return nil
 		}
 		// This ensures we have cron function for the website, see: https://gitlab.cern.ch/webservices/webframeworks-planning/-/issues/437
-		cron := &batchbeta1.CronJob{ObjectMeta: metav1.ObjectMeta{Name: "cronjob-" + d.Name, Namespace: d.Namespace}}
+		// Note: Cronjob name must be < 52 characters
+		// Since max DrupalSite name is 50 chars, we can't have a prefix.
+		cron := &batchbeta1.CronJob{ObjectMeta: metav1.ObjectMeta{Name: d.Name, Namespace: d.Namespace}}
 		_, err := controllerruntime.CreateOrUpdate(ctx, r.Client, cron, func() error {
 			log.V(3).Info("Ensuring Resource", "Kind", cron.TypeMeta.Kind, "Resource.Namespace", cron.Namespace, "Resource.Name", cron.Name)
 			return cronjobForDrupalSite(cron, databaseSecret, d)
-- 
GitLab