From 3317094eb538daa4bb6f0f162e45ecdfe3eb715a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Mesureux?= Date: Tue, 26 Nov 2024 10:41:27 +0100 Subject: [PATCH] feat(cronJob): allow override timeZone --- .../fr/axa/openpaas/dailyclean/util/KubernetesUtils.java | 6 ++++-- .../axa/openpaas/dailyclean/util/ScriptPlaceholder.java | 3 ++- api/api/src/main/resources/scripts/cronjob.yml | 1 + .../resource/TimeRangesResourceOnStartupTest.java | 8 ++++---- .../dailyclean/resource/TimeRangesResourceTest.java | 6 +++--- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/KubernetesUtils.java b/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/KubernetesUtils.java index 36e7be8..731d122 100644 --- a/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/KubernetesUtils.java +++ b/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/KubernetesUtils.java @@ -46,13 +46,15 @@ private KubernetesUtils() {} public static InputStream createCronJobAsInputStream(KubernetesArgument argument, String cron, String imgName, - String serviceAccountName) { + String serviceAccountName + String timeZone) { String text = getFileAsString("scripts/cronjob.yml"); String cronJobAsdString = text.replace(NAME.getPlaceholder(), getCronName(argument)) .replace(ARGUMENT.getPlaceholder(), argument.getValue()) .replace(SCHEDULE.getPlaceholder(), cron) .replace(IMG_NAME.getPlaceholder(), imgName) - .replace(SERVICE_ACCOUNT_NAME.getPlaceholder(), serviceAccountName); + .replace(SERVICE_ACCOUNT_NAME.getPlaceholder(), serviceAccountName) + .replace(TIME_ZONE.getPlaceholder(), timeZone); return new ByteArrayInputStream(cronJobAsdString.getBytes()); } diff --git a/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/ScriptPlaceholder.java b/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/ScriptPlaceholder.java index 4d6f438..110ad8c 100644 --- a/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/ScriptPlaceholder.java +++ b/api/api/src/main/java/fr/axa/openpaas/dailyclean/util/ScriptPlaceholder.java @@ -6,7 +6,8 @@ public enum ScriptPlaceholder { ARGUMENT("{{argument}}"), SCHEDULE("{{schedule}}"), IMG_NAME("{{imgName}}"), - SERVICE_ACCOUNT_NAME("{{serviceAccountName}}"),; + SERVICE_ACCOUNT_NAME("{{serviceAccountName}}"), + TIME_ZONE("{{timeZone}}"),; private String placeholder; ScriptPlaceholder(String placeholder) { diff --git a/api/api/src/main/resources/scripts/cronjob.yml b/api/api/src/main/resources/scripts/cronjob.yml index 653046f..2033589 100644 --- a/api/api/src/main/resources/scripts/cronjob.yml +++ b/api/api/src/main/resources/scripts/cronjob.yml @@ -5,6 +5,7 @@ metadata: spec: concurrencyPolicy: Forbid schedule: '{{schedule}}' + timeZone: '{{timeZone}}' jobTemplate: spec: template: diff --git a/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceOnStartupTest.java b/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceOnStartupTest.java index 513dde5..203a43d 100644 --- a/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceOnStartupTest.java +++ b/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceOnStartupTest.java @@ -31,9 +31,9 @@ public void shouldUpdateTheImageVersionOnStartup() { // Create cron jobs with old versions InputStream cronJobStart = - KubernetesUtils.createCronJobAsInputStream(START, CRON_10_00, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME); + KubernetesUtils.createCronJobAsInputStream(START, CRON_10_00, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); InputStream cronJobStop = - KubernetesUtils.createCronJobAsInputStream(STOP, CRON_10_00, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME); + KubernetesUtils.createCronJobAsInputStream(STOP, CRON_10_00, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); client.load(cronJobStart).inNamespace(namespace).createOrReplace(); client.load(cronJobStop).inNamespace(namespace).createOrReplace(); @@ -67,7 +67,7 @@ public void shouldUpdateTheImageVersionOnStartupOnlyIfStartExisted() { // Create cron jobs with old versions InputStream cronJobStart = - KubernetesUtils.createCronJobAsInputStream(START, cronStart, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME); + KubernetesUtils.createCronJobAsInputStream(START, cronStart, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); client.load(cronJobStart).inNamespace(namespace).createOrReplace(); @@ -102,7 +102,7 @@ public void shouldUpdateTheImageVersionOnStartupOnlyIfStopExisted() { // Create cron jobs with old versions InputStream cronJobStop = - KubernetesUtils.createCronJobAsInputStream(STOP, cronStop, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME); + KubernetesUtils.createCronJobAsInputStream(STOP, cronStop, OLD_IMAGE_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); client.load(cronJobStop).inNamespace(namespace).createOrReplace(); diff --git a/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceTest.java b/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceTest.java index 95a2c2e..42416aa 100644 --- a/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceTest.java +++ b/api/api/src/test/java/fr/axa/openpaas/dailyclean/resource/TimeRangesResourceTest.java @@ -136,7 +136,7 @@ public void shouldUpsertExistingTimerangesWithNewOnes() { public void shouldUpsertExistingTimerangeWithNewOneAndCreate() { String cronStart = CRON_10_00; - InputStream cronJobStart = KubernetesUtils.createCronJobAsInputStream(START, cronStart, IMG_NAME, SERVICE_ACCOUNT_NAME); + InputStream cronJobStart = KubernetesUtils.createCronJobAsInputStream(START, cronStart, IMG_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); KubernetesClient client = mockServer.getClient(); final String namespace = client.getNamespace(); @@ -163,8 +163,8 @@ public void shouldUpsertExistingTimerangeWithNewOneAndCreate() { private void initializeExistingCronJobs(String cronStart, String cronStop) { - InputStream cronJobStart = KubernetesUtils.createCronJobAsInputStream(START, cronStart, IMG_NAME, SERVICE_ACCOUNT_NAME); - InputStream cronJobStop = KubernetesUtils.createCronJobAsInputStream(STOP, cronStop, IMG_NAME, SERVICE_ACCOUNT_NAME); + InputStream cronJobStart = KubernetesUtils.createCronJobAsInputStream(START, cronStart, IMG_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); + InputStream cronJobStop = KubernetesUtils.createCronJobAsInputStream(STOP, cronStop, IMG_NAME, SERVICE_ACCOUNT_NAME, TIME_ZONE); KubernetesClient client = mockServer.getClient(); final String namespace = client.getNamespace();