mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-05-22 14:57:01 +00:00
True and false are mysterious.
This commit is contained in:
@@ -35,7 +35,9 @@ func NewFactoryImpl() *FactoryImpl {
|
||||
}
|
||||
|
||||
// MakePatchTransformer makes a new patch transformer
|
||||
func (p *FactoryImpl) MakePatchTransformer(slice []*resource.Resource, rf *resource.Factory) (transformers.Transformer, error) {
|
||||
func (p *FactoryImpl) MakePatchTransformer(
|
||||
slice []*resource.Resource,
|
||||
rf *resource.Factory) (transformers.Transformer, error) {
|
||||
return patch.NewPatchTransformer(slice, rf)
|
||||
}
|
||||
|
||||
@@ -44,6 +46,9 @@ func (p *FactoryImpl) MakeHashTransformer() transformers.Transformer {
|
||||
return hash.NewNameHashTransformer()
|
||||
}
|
||||
|
||||
func (p *FactoryImpl) MakeInventoryTransformer(arg *types.Inventory, namespace string, append bool) transformers.Transformer {
|
||||
return inventory.NewInventoryTransformer(arg, namespace, append)
|
||||
func (p *FactoryImpl) MakeInventoryTransformer(
|
||||
arg *types.Inventory,
|
||||
namespace string,
|
||||
gp types.GarbagePolicy) transformers.Transformer {
|
||||
return inventory.NewInventoryTransformer(arg, namespace, gp)
|
||||
}
|
||||
|
||||
@@ -18,22 +18,25 @@ import (
|
||||
|
||||
// inventoryTransformer compute the inventory object used in prune
|
||||
type inventoryTransformer struct {
|
||||
append bool
|
||||
cmName string
|
||||
cmNamespace string
|
||||
garbagePolicy types.GarbagePolicy
|
||||
cmName string
|
||||
cmNamespace string
|
||||
}
|
||||
|
||||
var _ transformers.Transformer = &inventoryTransformer{}
|
||||
|
||||
// NewInventoryTransformer makes a inventoryTransformer.
|
||||
func NewInventoryTransformer(p *types.Inventory, namespace string, append bool) transformers.Transformer {
|
||||
func NewInventoryTransformer(
|
||||
p *types.Inventory,
|
||||
namespace string,
|
||||
gp types.GarbagePolicy) transformers.Transformer {
|
||||
if p == nil || p.Type != "ConfigMap" || p.ConfigMap.Namespace != namespace {
|
||||
return transformers.NewNoOpTransformer()
|
||||
}
|
||||
return &inventoryTransformer{
|
||||
append: append,
|
||||
cmName: p.ConfigMap.Name,
|
||||
cmNamespace: p.ConfigMap.Namespace,
|
||||
garbagePolicy: gp,
|
||||
cmName: p.ConfigMap.Name,
|
||||
cmNamespace: p.ConfigMap.Namespace,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,7 +87,7 @@ func (o *inventoryTransformer) Transform(m resmap.ResMap) error {
|
||||
return err
|
||||
}
|
||||
|
||||
if !o.append {
|
||||
if o.garbagePolicy == types.GarbageCollect {
|
||||
for k := range m {
|
||||
delete(m, k)
|
||||
}
|
||||
|
||||
@@ -148,7 +148,7 @@ func TestInventoryTransformer(t *testing.T) {
|
||||
objs := makeResMap()
|
||||
|
||||
// include the original resmap; only return the ConfigMap for pruning
|
||||
tran := NewInventoryTransformer(p, "default", false)
|
||||
tran := NewInventoryTransformer(p, "default", types.GarbageCollect)
|
||||
tran.Transform(objs)
|
||||
|
||||
if !reflect.DeepEqual(objs, expected) {
|
||||
@@ -160,7 +160,7 @@ func TestInventoryTransformer(t *testing.T) {
|
||||
expected = objs.DeepCopy(rf)
|
||||
expected[resid.NewResIdWithPrefixNamespace(cmap, "pruneCM", "", "default")] = pruneMap
|
||||
// append the ConfigMap for pruning to the original resmap
|
||||
tran = NewInventoryTransformer(p, "default", true)
|
||||
tran = NewInventoryTransformer(p, "default", types.GarbageIgnore)
|
||||
tran.Transform(objs)
|
||||
|
||||
if !reflect.DeepEqual(objs, expected) {
|
||||
|
||||
@@ -27,5 +27,8 @@ import (
|
||||
type Factory interface {
|
||||
MakePatchTransformer(slice []*resource.Resource, rf *resource.Factory) (transformers.Transformer, error)
|
||||
MakeHashTransformer() transformers.Transformer
|
||||
MakeInventoryTransformer(p *types.Inventory, namespace string, append bool) transformers.Transformer
|
||||
MakeInventoryTransformer(
|
||||
p *types.Inventory,
|
||||
namespace string,
|
||||
gp types.GarbagePolicy) transformers.Transformer
|
||||
}
|
||||
|
||||
@@ -114,36 +114,15 @@ func unmarshal(y []byte, o interface{}) error {
|
||||
// MakeCustomizedResMap creates a ResMap per kustomization instructions.
|
||||
// The Resources in the returned ResMap are fully customized.
|
||||
func (kt *KustTarget) MakeCustomizedResMap() (resmap.ResMap, error) {
|
||||
ra, err := kt.AccumulateTarget()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = ra.Transform(kt.tFactory.MakeHashTransformer())
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// Given that names have changed (prefixs/suffixes added),
|
||||
// fix all the back references to those names.
|
||||
err = ra.FixBackReferences()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
// With all the back references fixed, it's OK to resolve Vars.
|
||||
err = ra.ResolveVars()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rm := ra.ResMap()
|
||||
pt := kt.tFactory.MakeInventoryTransformer(kt.kustomization.Inventory, kt.kustomization.Namespace, true)
|
||||
err = pt.Transform(rm)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return rm, nil
|
||||
return kt.makeCustomizedResMap(types.GarbageIgnore)
|
||||
}
|
||||
|
||||
func (kt *KustTarget) MakePruneConfigMap() (resmap.ResMap, error) {
|
||||
return kt.makeCustomizedResMap(types.GarbageCollect)
|
||||
}
|
||||
|
||||
func (kt *KustTarget) makeCustomizedResMap(
|
||||
garbagePolicy types.GarbagePolicy) (resmap.ResMap, error) {
|
||||
ra, err := kt.AccumulateTarget()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
@@ -165,7 +144,10 @@ func (kt *KustTarget) MakePruneConfigMap() (resmap.ResMap, error) {
|
||||
}
|
||||
|
||||
rm := ra.ResMap()
|
||||
pt := kt.tFactory.MakeInventoryTransformer(kt.kustomization.Inventory, kt.kustomization.Namespace, false)
|
||||
pt := kt.tFactory.MakeInventoryTransformer(
|
||||
kt.kustomization.Inventory,
|
||||
kt.kustomization.Namespace,
|
||||
garbagePolicy)
|
||||
err = pt.Transform(rm)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
||||
@@ -142,6 +142,14 @@ type Kustomization struct {
|
||||
Inventory *Inventory `json:"inventory,omitempty" yaml:"inventory:omitempty"`
|
||||
}
|
||||
|
||||
type GarbagePolicy int
|
||||
|
||||
const (
|
||||
GarbageUnknown GarbagePolicy = iota
|
||||
GarbageIgnore
|
||||
GarbageCollect
|
||||
)
|
||||
|
||||
// FixKustomizationPostUnmarshalling fixes things
|
||||
// like empty fields that should not be empty, or
|
||||
// moving content of deprecated fields to newer
|
||||
|
||||
Reference in New Issue
Block a user