Detect a missing key error and print a cleaner message.

pull/8/head
Brendan Burns 2018-06-14 21:51:21 -07:00
parent de8cc31355
commit e3d2242388
1 changed files with 9 additions and 1 deletions

View File

@ -306,7 +306,15 @@ func getPatchedJSON(patchType types.PatchType, originalJS, patchJS []byte, gvk s
if err != nil { if err != nil {
return nil, err return nil, err
} }
return patchObj.Apply(originalJS) bytes, err := patchObj.Apply(originalJS)
// TODO: This is pretty hacky, we need a better structured error from the json-patch
if err != nil && strings.Contains(err.Error(), "doc is missing key") {
msg := err.Error()
ix := strings.Index(msg, "key:")
key := msg[ix+5:]
return bytes, fmt.Errorf("Object to be patched is missing field (%s)", key)
}
return bytes, err
case types.MergePatchType: case types.MergePatchType:
return jsonpatch.MergePatch(originalJS, patchJS) return jsonpatch.MergePatch(originalJS, patchJS)