Skip to content

Commit

Permalink
Raise error for external generators or transformers (#4565)
Browse files Browse the repository at this point in the history
* Raise error if duplicate orgids for external transformers or external generators are configured

* Remove output of resources in error message

* Remove trailing newline
  • Loading branch information
CandiedCode committed Apr 6, 2022
1 parent 4fc0249 commit 7888aef
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 2 deletions.
9 changes: 7 additions & 2 deletions api/internal/target/kusttarget.go
Expand Up @@ -304,7 +304,9 @@ func (kt *KustTarget) configureExternalGenerators() (
rm.Replace(r)
}
}
ra.AppendAll(rm)
if err = ra.AppendAll(rm); err != nil {
return nil, errors.Wrapf(err, "configuring external generator")
}
}
ra, err := kt.accumulateResources(ra, generatorPaths)
if err != nil {
Expand Down Expand Up @@ -348,7 +350,10 @@ func (kt *KustTarget) configureExternalTransformers(transformers []string) ([]*r
rm.Replace(r)
}
}
ra.AppendAll(rm)

if err = ra.AppendAll(rm); err != nil {
return nil, errors.Wrapf(err, "configuring external transformer")
}
}
ra, err := kt.accumulateResources(ra, transformerPaths)
if err != nil {
Expand Down
68 changes: 68 additions & 0 deletions api/internal/target/kusttarget_test.go
Expand Up @@ -257,3 +257,71 @@ metadata:
assert.NoError(t, err)
assert.Equal(t, string(expYaml), string(actYaml))
}

func TestDuplicateExternalGeneratorsForbidden(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteK("/generator", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
generators:
- |-
apiVersion: generators.example/v1
kind: ManifestGenerator
metadata:
name: ManifestGenerator
annotations:
config.kubernetes.io/function: |
container:
image: ManifestGenerator:latest
spec:
image: 'someimage:12345'
configPath: config.json
- |-
apiVersion: generators.example/v1
kind: ManifestGenerator
metadata:
name: ManifestGenerator
annotations:
config.kubernetes.io/function: |
container:
image: ManifestGenerator:latest
spec:
image: 'someimage:12345'
configPath: another_config.json
`)
_, err := makeAndLoadKustTarget(t, th.GetFSys(), "/generator").AccumulateTarget()
assert.Error(t, err)
assert.Contains(t, err.Error(), "may not add resource with an already registered id: ManifestGenerator.v1.generators.example/ManifestGenerator")
}

func TestDuplicateExternalTransformersForbidden(t *testing.T) {
th := kusttest_test.MakeHarness(t)
th.WriteK("/transformer", `
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
transformers:
- |-
apiVersion: transformers.example.co/v1
kind: ValueAnnotator
metadata:
name: notImportantHere
annotations:
config.kubernetes.io/function: |
container:
image: example.docker.com/my-functions/valueannotator:1.0.0
value: 'pass'
- |-
apiVersion: transformers.example.co/v1
kind: ValueAnnotator
metadata:
name: notImportantHere
annotations:
config.kubernetes.io/function: |
container:
image: example.docker.com/my-functions/valueannotator:1.0.0
value: 'fail'
`)
_, err := makeAndLoadKustTarget(t, th.GetFSys(), "/transformer").AccumulateTarget()
assert.Error(t, err)
assert.Contains(t, err.Error(), "may not add resource with an already registered id: ValueAnnotator.v1.transformers.example.co/notImportantHere")
}

0 comments on commit 7888aef

Please sign in to comment.