From e3d2242388c26ebac8ddb81786da4234c1e3f414 Mon Sep 17 00:00:00 2001 From: Brendan Burns Date: Thu, 14 Jun 2018 21:51:21 -0700 Subject: [PATCH] Detect a missing key error and print a cleaner message. --- pkg/kubectl/cmd/patch.go | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/pkg/kubectl/cmd/patch.go b/pkg/kubectl/cmd/patch.go index 14fa2c6a51..bfd50e0899 100644 --- a/pkg/kubectl/cmd/patch.go +++ b/pkg/kubectl/cmd/patch.go @@ -306,7 +306,15 @@ func getPatchedJSON(patchType types.PatchType, originalJS, patchJS []byte, gvk s if err != nil { 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: return jsonpatch.MergePatch(originalJS, patchJS)