Merge pull request #279 from mengqiy/overlay_transformer

error out when a patch has not matching object
This commit is contained in:
k8s-ci-robot 2018-02-12 17:04:49 -08:00 committed by GitHub
commit a7ffe0b3ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 30 deletions

View File

@ -43,17 +43,18 @@ func NewOverlayTransformer(overlay types.KObject) (Transformer, error) {
// Transform apply the overlay on top of the base resources.
func (o *OverlayTransformer) Transform(baseResourceMap types.KObject) error {
// Strategic merge the resources exist in both base and overlay.
for gvkn, base := range baseResourceMap {
for gvkn, overlay := range o.overlay {
// Merge overlay with base resource.
if overlay, found := o.overlay[gvkn]; found {
base, found := baseResourceMap[gvkn]
if !found {
return fmt.Errorf("failed to find an object with %#v to apply the patch", gvkn.GVK)
}
versionedObj, err := scheme.Scheme.New(gvkn.GVK)
if err != nil {
switch {
case runtime.IsNotRegisteredError(err):
if runtime.IsNotRegisteredError(err) {
return fmt.Errorf("failed to find schema for %#v (which may be a CRD type): %v", gvkn.GVK, err)
default:
return err
}
return err
}
// TODO: Change this to use the new Merge package.
// Store the name of the base object, because this name may have been munged.
@ -68,14 +69,6 @@ func (o *OverlayTransformer) Transform(baseResourceMap types.KObject) error {
}
base.SetName(baseName)
baseResourceMap[gvkn].Object = merged
delete(o.overlay, gvkn)
}
}
// If there are resources in overlay that are not defined in base, just add it to base.
if len(o.overlay) > 0 {
for gvkn, jsonObj := range o.overlay {
baseResourceMap[gvkn] = jsonObj
}
}
return nil
}