mirror of
https://github.com/kubernetes-sigs/kustomize.git
synced 2026-06-13 18:10:59 +00:00
Add validator to kustomization
This commit is contained in:
@@ -140,6 +140,11 @@ func (p *ExecPlugin) Transform(rm resmap.ResMap) error {
|
||||
return p.updateResMapValues(output, rm)
|
||||
}
|
||||
|
||||
func (p *ExecPlugin) Validate(rm resmap.ResMap) error {
|
||||
// Validate works exactly same with Transformer
|
||||
return p.Transform(rm)
|
||||
}
|
||||
|
||||
// invokePlugin writes plugin config to a temp file, then
|
||||
// passes the full temp file path as the first arg to a process
|
||||
// running the plugin binary. Process output is returned.
|
||||
|
||||
@@ -87,6 +87,32 @@ func (l *Loader) LoadTransformer(
|
||||
return t, nil
|
||||
}
|
||||
|
||||
func (l *Loader) LoadValidators(
|
||||
ldr ifc.Loader, v ifc.Validator, rm resmap.ResMap) ([]resmap.Validator, error) {
|
||||
var result []resmap.Validator
|
||||
for _, res := range rm.Resources() {
|
||||
t, err := l.LoadValidator(ldr, v, res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
result = append(result, t)
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (l *Loader) LoadValidator(
|
||||
ldr ifc.Loader, v ifc.Validator, res *resource.Resource) (resmap.Validator, error) {
|
||||
c, err := l.loadAndConfigurePlugin(ldr, v, res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
t, ok := c.(resmap.Validator)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("plugin %s not a validator", res.OrgId())
|
||||
}
|
||||
return t, nil
|
||||
}
|
||||
|
||||
func relativePluginPath(id resid.ResId) string {
|
||||
return filepath.Join(
|
||||
id.Group,
|
||||
|
||||
@@ -209,6 +209,10 @@ func (kt *KustTarget) accumulateTarget(ra *accumulator.ResAccumulator) (
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = kt.runValidators(ra)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
err = ra.MergeVars(kt.kustomization.Vars)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(
|
||||
@@ -278,6 +282,29 @@ func (kt *KustTarget) configureExternalTransformers() ([]resmap.Transformer, err
|
||||
return kt.pLdr.LoadTransformers(kt.ldr, kt.validator, ra.ResMap())
|
||||
}
|
||||
|
||||
func (kt *KustTarget) runValidators(ra *accumulator.ResAccumulator) error {
|
||||
validators, err := kt.configureExternalValidators()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for _, v := range validators {
|
||||
err := v.Validate(ra.ResMap())
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (kt *KustTarget) configureExternalValidators() ([]resmap.Validator, error) {
|
||||
ra := accumulator.MakeEmptyAccumulator()
|
||||
ra, err := kt.accumulateResources(ra, kt.kustomization.Validators)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return kt.pLdr.LoadValidators(kt.ldr, kt.validator, ra.ResMap())
|
||||
}
|
||||
|
||||
// accumulateResources fills the given resourceAccumulator
|
||||
// with resources read from the given list of paths.
|
||||
func (kt *KustTarget) accumulateResources(
|
||||
|
||||
Reference in New Issue
Block a user