From a3952f4c2b3a724033480a3de8b939fb550385d4 Mon Sep 17 00:00:00 2001 From: Srdjan Petrovic Date: Thu, 7 Mar 2024 12:25:54 -0800 Subject: [PATCH] Fix the app and version names in the MultidimPodAutoscaler resources. (#126) These names have to be valid label names. Moreover, they have to match the resources we're deleting. Without these changes, the multidimpodautoscaler resources will end up hanging. --- internal/gke/gke.go | 10 +++++----- internal/gke/nanny.go | 5 +++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/internal/gke/gke.go b/internal/gke/gke.go index 4f2350c..2cabe3f 100644 --- a/internal/gke/gke.go +++ b/internal/gke/gke.go @@ -450,7 +450,7 @@ var autoJSONTmpl = template.Must(template.New("auto").Parse(`{ // configured for the given Kubernetes ReplicaSet. func ensureReplicaSetAutoscaler(ctx context.Context, cluster *ClusterInfo, logger *slog.Logger, cfg *config.GKEConfig, replicaSet string) error { dep := cfg.Deployment - name := name{dep.App.Name, replicaSet, dep.Id[:8]}.DNSLabel() + aName := name{dep.App.Name, replicaSet, dep.Id[:8]}.DNSLabel() var b strings.Builder if err := autoJSONTmpl.Execute(&b, struct { Name string @@ -462,14 +462,14 @@ func ensureReplicaSetAutoscaler(ctx context.Context, cluster *ClusterInfo, logge TargetKind string TargetName string }{ - Name: name, + Name: aName, Namespace: namespaceName, - AppName: dep.App.Name, - DeploymentID: dep.Id, + AppName: name{dep.App.Name}.DNSLabel(), + DeploymentID: name{dep.Id}.DNSLabel(), AppContainerName: appContainerName, MinMemory: memoryUnit.String(), TargetKind: "Deployment", - TargetName: name, + TargetName: aName, }); err != nil { return err } diff --git a/internal/gke/nanny.go b/internal/gke/nanny.go index 9058847..538c86c 100644 --- a/internal/gke/nanny.go +++ b/internal/gke/nanny.go @@ -372,13 +372,14 @@ func RunManager(ctx context.Context, port int) error { }, // deleteAppVersions func(_ context.Context, app string, versions []*config.GKEConfig) error { + var errs []error for _, version := range versions { id := version.Deployment.Id if err := kill(ctx, cluster, logger, app, id); err != nil { - return fmt.Errorf("kill %q: %w", version, err) + errs = append(errs, fmt.Errorf("kill %q: %w", version, err)) } } - return nil + return errors.Join(errs...) }, )