From 9beefad8a74d63f52822224facaeb099c17faf31 Mon Sep 17 00:00:00 2001 From: Antoine Martin Date: Thu, 26 Jan 2023 12:05:51 +0000 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Make=20local-config=20anno?= =?UTF-8?q?tation=20specific?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit kpt only does a function at once, and honors the removal of the `config.kuberntes.io/local-config` marked resources. In consequence, we cannot use `config.kuberntes.io/local-config` anymore to inject resources. We replace it with `config.kaweezle.com/local-config`. `prune-local` is not a workaround anymore but becomes a feature. The README needs to be adapted in consequence. --- main.go | 6 ------ pkg/utils/constants.go | 2 +- pkg/utils/utils.go | 11 ++++++++--- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/main.go b/main.go index 763602f..fddddbb 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,6 @@ import ( "sigs.k8s.io/kustomize/kyaml/errors" "sigs.k8s.io/kustomize/kyaml/fn/framework" "sigs.k8s.io/kustomize/kyaml/fn/framework/command" - "sigs.k8s.io/kustomize/kyaml/kio/filters" "sigs.k8s.io/kustomize/kyaml/resid" "sigs.k8s.io/kustomize/kyaml/yaml" ) @@ -85,11 +84,6 @@ func main() { if err != nil { return errors.WrapPrefixf(err, "Removing local from keep-local resources") } - filter := &filters.IsLocalConfig{IncludeLocalConfig: false, ExcludeNonLocalConfig: false} - err = rl.Filter(filter) - if err != nil { - return errors.WrapPrefixf(err, "filtering local configs") - } } } else { diff --git a/pkg/utils/constants.go b/pkg/utils/constants.go index ae81ca4..8ce7eec 100644 --- a/pkg/utils/constants.go +++ b/pkg/utils/constants.go @@ -23,7 +23,7 @@ const ( FunctionAnnotationFunction = ConfigurationAnnotationDomain + "/function" // true when the resource is part of the local configuration - FunctionAnnotationLocalConfig = ConfigurationAnnotationDomain + "/local-config" + FunctionAnnotationLocalConfig = LocalConfigurationAnnotationDomain + "/local-config" // Setting to true means we want this function configuration to be injected as a // local configuration resource (local-config) diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go index e6ce47c..f02dd12 100644 --- a/pkg/utils/utils.go +++ b/pkg/utils/utils.go @@ -3,7 +3,6 @@ package utils import ( "sigs.k8s.io/kustomize/api/resource" "sigs.k8s.io/kustomize/kyaml/kio" - "sigs.k8s.io/kustomize/kyaml/kio/filters" "sigs.k8s.io/kustomize/kyaml/kio/kioutil" "sigs.k8s.io/kustomize/kyaml/yaml" ) @@ -40,7 +39,7 @@ func RemoveBuildAnnotations(r *resource.Resource) { func MakeResourceLocal(r *yaml.RNode) error { annotations := r.GetAnnotations() - annotations[filters.LocalConfigAnnotation] = "true" + annotations[FunctionAnnotationLocalConfig] = "true" if _, ok := annotations[kioutil.PathAnnotation]; !ok { annotations[kioutil.PathAnnotation] = ".generated.yaml" } @@ -54,6 +53,7 @@ func MakeResourceLocal(r *yaml.RNode) error { } func unLocal(list []*yaml.RNode) ([]*yaml.RNode, error) { + output := []*yaml.RNode{} for _, r := range list { annotations := r.GetAnnotations() if _, ok := annotations[FunctionAnnotationKeepLocal]; ok { @@ -70,9 +70,14 @@ func unLocal(list []*yaml.RNode) ([]*yaml.RNode, error) { delete(annotations, FunctionAnnotationIndex) } r.SetAnnotations(annotations) + output = append(output, r) + } else { + if _, ok := annotations[FunctionAnnotationLocalConfig]; !ok { + output = append(output, r) + } } } - return list, nil + return output, nil } var UnLocal kio.FilterFunc = unLocal