From 98381a657c80b9395c141f1c745f257d9a7826c2 Mon Sep 17 00:00:00 2001
From: Brad Davidson <brad.davidson@rancher.com>
Date: Mon, 27 Jan 2025 21:39:55 +0000
Subject: [PATCH] Include tz files in Docker image

Add timezone files to Docker image so that tz names work in spec.window.timeZone

Signed-off-by: Brad Davidson <brad.davidson@rancher.com>
---
 package/Dockerfile       | 5 +++++
 pkg/upgrade/plan/plan.go | 3 ++-
 2 files changed, 7 insertions(+), 1 deletion(-)

diff --git a/package/Dockerfile b/package/Dockerfile
index ee5f701..4bf8f7a 100644
--- a/package/Dockerfile
+++ b/package/Dockerfile
@@ -1,5 +1,6 @@
 ARG BCI=registry.suse.com/bci/bci-base:15.6
 ARG GOLANG=registry.suse.com/bci/golang:1.23
+ARG ALPINE=alpine:3.21
 
 FROM ${GOLANG} AS e2e-ginkgo
 ENV GOBIN=/bin
@@ -19,8 +20,12 @@ RUN set -x \
     && zypper -n in tar gzip
 ENTRYPOINT ["/run.sh"]
 
+FROM ${ALPINE} AS zoneinfo
+RUN apk add -U tzdata
+
 FROM scratch AS controller
 ARG TARGETARCH
 COPY dist/artifacts/system-upgrade-controller-${TARGETARCH} /bin/system-upgrade-controller
+COPY --from=zoneinfo /usr/share/zoneinfo /usr/share/zoneinfo
 USER 65534:65534
 ENTRYPOINT ["/bin/system-upgrade-controller"]
diff --git a/pkg/upgrade/plan/plan.go b/pkg/upgrade/plan/plan.go
index 92a2448..0a9d46d 100644
--- a/pkg/upgrade/plan/plan.go
+++ b/pkg/upgrade/plan/plan.go
@@ -18,6 +18,7 @@ import (
 	"github.com/rancher/wrangler/v3/pkg/crd"
 	"github.com/rancher/wrangler/v3/pkg/data"
 	corectlv1 "github.com/rancher/wrangler/v3/pkg/generated/controllers/core/v1"
+	"github.com/rancher/wrangler/v3/pkg/merr"
 	"github.com/rancher/wrangler/v3/pkg/schemas/openapi"
 	"github.com/sirupsen/logrus"
 	corev1 "k8s.io/api/core/v1"
@@ -255,7 +256,7 @@ func Validate(plan *upgradeapiv1.Plan) error {
 	}
 	if windowSpec := plan.Spec.Window; windowSpec != nil {
 		if _, err := timewindow.New(windowSpec.Days, windowSpec.StartTime, windowSpec.EndTime, windowSpec.TimeZone); err != nil {
-			return ErrInvalidWindow
+			return merr.NewErrors(ErrInvalidWindow, err)
 		}
 	}
 	if delay := plan.Spec.PostCompleteDelay; delay != nil && delay.Duration < 0 {
-- 
GitLab