From 54a6be8ed62f1a4c8d7e01c49762aae5e6d933bd Mon Sep 17 00:00:00 2001 From: Donnie Adams Date: Thu, 21 Dec 2023 18:03:11 -0500 Subject: [PATCH] Add support for acorn.region interpolation in Acornfiles Signed-off-by: Donnie Adams --- pkg/controller/controller.go | 5 +---- pkg/jobs/jobs.go | 3 ++- pkg/secrets/interpolation.go | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 5 deletions(-) diff --git a/pkg/controller/controller.go b/pkg/controller/controller.go index 2a86f366e..da3e88017 100644 --- a/pkg/controller/controller.go +++ b/pkg/controller/controller.go @@ -40,10 +40,7 @@ type Controller struct { } func New(ctx context.Context) (*Controller, error) { - if err := crds.Create(ctx, scheme.Scheme, v1.SchemeGroupVersion); err != nil { - return nil, err - } - if err := crds.Create(ctx, scheme.Scheme, adminv1.SchemeGroupVersion); err != nil { + if err := crds.Create(ctx, scheme.Scheme, v1.SchemeGroupVersion, adminv1.SchemeGroupVersion); err != nil { return nil, err } diff --git a/pkg/jobs/jobs.go b/pkg/jobs/jobs.go index 025480f4a..4c2d2f02d 100644 --- a/pkg/jobs/jobs.go +++ b/pkg/jobs/jobs.go @@ -11,6 +11,7 @@ import ( v1 "github.com/acorn-io/runtime/pkg/apis/internal.acorn.io/v1" "github.com/acorn-io/runtime/pkg/appdefinition" "github.com/acorn-io/runtime/pkg/encryption/nacl" + "github.com/acorn-io/z" corev1 "k8s.io/api/core/v1" apierror "k8s.io/apimachinery/pkg/api/errors" "k8s.io/utils/strings/slices" @@ -138,7 +139,7 @@ func GetEvent(jobName string, appInstance *v1.AppInstance) string { if !appInstance.DeletionTimestamp.IsZero() { return "delete" } - if appInstance.Spec.Stop != nil && *appInstance.Spec.Stop { + if z.Dereference(appInstance.Spec.Stop) { return "stop" } if (appInstance.Generation <= 1 || slices.Contains(appInstance.Status.AppSpec.Jobs[jobName].Events, "create")) && !appInstance.Status.AppStatus.Jobs[jobName].CreateEventSucceeded { diff --git a/pkg/secrets/interpolation.go b/pkg/secrets/interpolation.go index c0e7ea394..e2575d6c6 100644 --- a/pkg/secrets/interpolation.go +++ b/pkg/secrets/interpolation.go @@ -241,6 +241,19 @@ func (i *Interpolator) GetProjectName() (string, error) { return name, nil } +func (i *Interpolator) GetRegion() (string, error) { + if region := i.app.GetRegion(); region != "" { + return region, nil + } + + project := &v1.ProjectInstance{} + if err := i.client.Get(i.ctx, router.Key("", i.app.Namespace), project); err != nil { + return "", err + } + + return project.Status.DefaultRegion, nil +} + func (i *Interpolator) resolveApp(keyName string) (string, bool, error) { switch strings.ToLower(keyName) { case "name": @@ -270,6 +283,9 @@ func (i *Interpolator) resolveApp(keyName string) (string, bool, error) { case "externalid": externalID, err := i.getExternalID() return externalID, true, err + case "region": + region, err := i.GetRegion() + return region, true, err } return "", false, nil }