Skip to content

Commit

Permalink
Enable use of generators in transformers field
Browse files Browse the repository at this point in the history
  • Loading branch information
LittleChimera committed Sep 9, 2024
1 parent b7cdd91 commit 03f7506
Show file tree
Hide file tree
Showing 3 changed files with 57 additions and 2 deletions.
6 changes: 4 additions & 2 deletions api/internal/plugins/loader/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,10 @@ func (l *Loader) LoadTransformer(
}
t, ok := c.(resmap.Transformer)
if !ok {
return nil, fmt.Errorf("plugin %s not a transformer", res.OrgId())
if g, ok := c.(resmap.Generator); ok {
return &resmap.TransformerWithProperties{Transformer: &resmap.GeneratorAsTransformer{Generator: g}}, nil
}
return nil, fmt.Errorf("plugin %s is neither a transformer nor generator", res.OrgId())
}
return &resmap.TransformerWithProperties{Transformer: t}, nil
}
Expand Down Expand Up @@ -282,4 +285,3 @@ func (l *Loader) loadExecOrGoPlugin(resId resid.ResId) (resmap.Configurable, err
}
return c, nil
}

36 changes: 36 additions & 0 deletions api/krusty/generator_as_transformer_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// Copyright 2019 The Kubernetes Authors.
// SPDX-License-Identifier: Apache-2.0

package krusty_test

import (
"testing"

kusttest_test "sigs.k8s.io/kustomize/api/testutils/kusttest"
)

func TestSecretGeneratorAsTransformer(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteK("app/base", `
transformers:
- |-
apiVersion: builtin
kind: SecretGenerator
metadata:
name: foo
literals:
- foo=bar
options:
disableNameSuffixHash: true
`)
m := th.Run("app/base", th.MakeDefaultOptions())
th.AssertActualEqualsExpected(m, `
apiVersion: v1
data:
foo: YmFy
kind: Secret
metadata:
name: foo
type: Opaque
`)
}
17 changes: 17 additions & 0 deletions api/resmap/resmap.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
package resmap

import (
"fmt"

"sigs.k8s.io/kustomize/api/ifc"
"sigs.k8s.io/kustomize/api/resource"
"sigs.k8s.io/kustomize/api/types"
Expand Down Expand Up @@ -40,6 +42,21 @@ type GeneratorWithProperties struct {
Origin *resource.Origin
}

type GeneratorAsTransformer struct {
Generator
}

func (g *GeneratorAsTransformer) Transform(m ResMap) error {
rm, err := g.Generate()
if err != nil {
return err
}
if err = m.AppendAll(rm); err != nil {
return fmt.Errorf("failed to add generated resources to resmap: %w", err)
}
return nil
}

// Something that's configurable accepts an
// instance of PluginHelpers and a raw config
// object (YAML in []byte form).
Expand Down

0 comments on commit 03f7506

Please sign in to comment.