From 3642260cc41e1d9fd2fd6caec398368c71d9d259 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=BCdiger=20Schmitz?= Date: Wed, 29 Jan 2025 16:04:22 +0100 Subject: [PATCH] fix: handle undefined creation time (#655) --- .../services/ske/kubeconfig/resource.go | 20 +++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/stackit/internal/services/ske/kubeconfig/resource.go b/stackit/internal/services/ske/kubeconfig/resource.go index 8342091e..07bd5e3f 100644 --- a/stackit/internal/services/ske/kubeconfig/resource.go +++ b/stackit/internal/services/ske/kubeconfig/resource.go @@ -394,8 +394,12 @@ func toCreatePayload(model *Model) (*ske.CreateKubeconfigPayload, error) { // helper function to check if kubecondig has expired func checkHasExpired(model *Model, currentTime time.Time) (bool, error) { - if model.Refresh.ValueBool() && !model.ExpiresAt.IsNull() { - expiresAt, err := time.Parse(time.RFC3339, model.ExpiresAt.ValueString()) + expiresAt := model.ExpiresAt + if model.Refresh.ValueBool() && !expiresAt.IsNull() { + if expiresAt.IsUnknown() { + return true, nil + } + expiresAt, err := time.Parse(time.RFC3339, expiresAt.ValueString()) if err != nil { return false, fmt.Errorf("converting expiresAt field to timestamp: %w", err) } @@ -408,7 +412,11 @@ func checkHasExpired(model *Model, currentTime time.Time) (bool, error) { // helper function to check if a credentials rotation was done func checkCredentialsRotation(cluster *ske.Cluster, model *Model) (bool, error) { - creationTime, err := time.Parse(time.RFC3339, model.CreationTime.ValueString()) + creationTimeValue := model.CreationTime + if creationTimeValue.IsNull() || creationTimeValue.IsUnknown() { + return false, nil + } + creationTime, err := time.Parse(time.RFC3339, creationTimeValue.ValueString()) if err != nil { return false, fmt.Errorf("converting creationTime field to timestamp: %w", err) } @@ -422,7 +430,11 @@ func checkCredentialsRotation(cluster *ske.Cluster, model *Model) (bool, error) // helper function to check if a cluster recreation was done func checkClusterRecreation(cluster *ske.Cluster, model *Model) (bool, error) { - creationTime, err := time.Parse(time.RFC3339, model.CreationTime.ValueString()) + creationTimeValue := model.CreationTime + if creationTimeValue.IsNull() || creationTimeValue.IsUnknown() { + return false, nil + } + creationTime, err := time.Parse(time.RFC3339, creationTimeValue.ValueString()) if err != nil { return false, fmt.Errorf("converting creationTime field to timestamp: %w", err) }