From 56e11b57e3e6f1c241a5723b3b7167b7384e0845 Mon Sep 17 00:00:00 2001 From: Jeffrey Regan Date: Wed, 3 Oct 2018 10:53:52 -0700 Subject: [PATCH] Isolate generator calls. --- pkg/resmap/resmap.go | 5 ++++- pkg/target/kusttarget.go | 36 ++++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 17 deletions(-) diff --git a/pkg/resmap/resmap.go b/pkg/resmap/resmap.go index da38f7633..39a79f6d8 100644 --- a/pkg/resmap/resmap.go +++ b/pkg/resmap/resmap.go @@ -220,7 +220,10 @@ func MergeWithoutOverride(maps ...ResMap) (ResMap, error) { // MergeWithOverride combines multiple ResMap instances, allowing and sometimes // demanding certain collisions and skipping nil maps. -// In case if all of the maps are nil, an empty ResMap is returned. +// A collision would be demanded, say, when a generated ConfigMap has the +// "replace" option in its generation instructions, meaning it is supposed +// to replace something from the raw resources list. +// If all of the maps are nil, an empty ResMap is returned. // When looping over the instances to combine them, if a resource id for resource X // is found to be already in the combined map, then the behavior field for X // must be BehaviorMerge or BehaviorReplace. If X is not in the map, then it's diff --git a/pkg/target/kusttarget.go b/pkg/target/kusttarget.go index 63cdac8ee..4bd36b399 100644 --- a/pkg/target/kusttarget.go +++ b/pkg/target/kusttarget.go @@ -135,24 +135,11 @@ func (kt *KustTarget) loadCustomizedResMap() (resmap.ResMap, error) { if err != nil { errs.Append(errors.Wrap(err, "RegisterCRDs")) } - cms, err := resmap.NewResMapFromConfigMapArgs( - configmapandsecret.NewConfigMapFactory(kt.fSys, kt.ldr), - kt.kustomization.ConfigMapGenerator) + resMap, err := kt.generateConfigMapsAndSecrets(errs) if err != nil { - errs.Append(errors.Wrap(err, "NewResMapFromConfigMapArgs")) + errs.Append(errors.Wrap(err, "generateConfigMapsAndSecrets")) } - secrets, err := resmap.NewResMapFromSecretArgs( - configmapandsecret.NewSecretFactory(kt.fSys, kt.ldr.Root()), - kt.kustomization.SecretGenerator) - if err != nil { - errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs")) - } - res, err := resmap.MergeWithoutOverride(cms, secrets) - if err != nil { - return nil, errors.Wrap(err, "Merge") - } - - result, err = resmap.MergeWithOverride(result, res) + result, err = resmap.MergeWithOverride(result, resMap) if err != nil { return nil, err } @@ -192,6 +179,23 @@ func (kt *KustTarget) loadCustomizedResMap() (resmap.ResMap, error) { return result, nil } +func (kt *KustTarget) generateConfigMapsAndSecrets( + errs *interror.KustomizationErrors) (resmap.ResMap, error) { + cms, err := resmap.NewResMapFromConfigMapArgs( + configmapandsecret.NewConfigMapFactory(kt.fSys, kt.ldr), + kt.kustomization.ConfigMapGenerator) + if err != nil { + errs.Append(errors.Wrap(err, "NewResMapFromConfigMapArgs")) + } + secrets, err := resmap.NewResMapFromSecretArgs( + configmapandsecret.NewSecretFactory(kt.fSys, kt.ldr.Root()), + kt.kustomization.SecretGenerator) + if err != nil { + errs.Append(errors.Wrap(err, "NewResMapFromSecretArgs")) + } + return resmap.MergeWithoutOverride(cms, secrets) +} + // Gets Bases and Resources as advertised. func (kt *KustTarget) loadResMapFromBasesAndResources() (resmap.ResMap, error) { bases, errs := kt.loadCustomizedBases()