Skip to content

Commit 990b2f8

Browse files
authored
Merge pull request kubernetes#114938 from seans3/patcher-remove-kube-openapi
Removes kube-openapi dependency from Patcher
2 parents 5d794f8 + 34aa661 commit 990b2f8

File tree

1 file changed

+10
-16
lines changed
  • staging/src/k8s.io/kubectl/pkg/cmd/apply

1 file changed

+10
-16
lines changed

staging/src/k8s.io/kubectl/pkg/cmd/apply/patcher.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ import (
3737
"k8s.io/apimachinery/pkg/util/strategicpatch"
3838
"k8s.io/apimachinery/pkg/util/wait"
3939
"k8s.io/cli-runtime/pkg/resource"
40-
"k8s.io/kube-openapi/pkg/util/proto"
4140
cmdutil "k8s.io/kubectl/pkg/cmd/util"
4241
"k8s.io/kubectl/pkg/scheme"
4342
"k8s.io/kubectl/pkg/util"
@@ -123,12 +122,10 @@ func (p *Patcher) patchSimple(obj runtime.Object, modified []byte, namespace, na
123122
// if openapischema is used, we'll try to get required patch type for this GVK from Open API.
124123
// if it fails or could not find any patch type, fall back to baked-in patch type determination.
125124
if patchType, err = p.getPatchTypeFromOpenAPI(p.Mapping.GroupVersionKind); err == nil && patchType == types.StrategicMergePatchType {
126-
if s := p.findOpenAPIResource(p.Mapping.GroupVersionKind); s != nil {
127-
patch, err = p.buildStrategicMergeFromOpenAPI(s, original, modified, current)
128-
if err != nil {
129-
// Warn user about problem and continue strategic merge patching using builtin types.
130-
fmt.Fprintf(errOut, "warning: error calculating patch from openapi spec: %v\n", err)
131-
}
125+
patch, err = p.buildStrategicMergeFromOpenAPI(original, modified, current)
126+
if err != nil {
127+
// Warn user about problem and continue strategic merge patching using builtin types.
128+
fmt.Fprintf(errOut, "warning: error calculating patch from openapi spec: %v\n", err)
132129
}
133130
}
134131
}
@@ -187,7 +184,12 @@ func (p *Patcher) buildMergePatch(original, modified, current []byte) ([]byte, e
187184

188185
// buildStrategicMergeFromOpenAPI builds patch from OpenAPI if it is enabled.
189186
// This is used for core types which is published in openapi.
190-
func (p *Patcher) buildStrategicMergeFromOpenAPI(schema proto.Schema, original, modified, current []byte) ([]byte, error) {
187+
func (p *Patcher) buildStrategicMergeFromOpenAPI(original, modified, current []byte) ([]byte, error) {
188+
schema := p.OpenapiSchema.LookupResource(p.Mapping.GroupVersionKind)
189+
if schema == nil {
190+
// Missing schema returns nil patch; also no error.
191+
return nil, nil
192+
}
191193
lookupPatchMeta := strategicpatch.PatchMetaFromOpenAPI{Schema: schema}
192194
if openapiPatch, err := strategicpatch.CreateThreeWayMergePatch(original, modified, current, lookupPatchMeta, p.Overwrite); err != nil {
193195
return nil, err
@@ -196,14 +198,6 @@ func (p *Patcher) buildStrategicMergeFromOpenAPI(schema proto.Schema, original,
196198
}
197199
}
198200

199-
// findOpenAPIResource finds schema of GVK in OpenAPI endpoint.
200-
func (p *Patcher) findOpenAPIResource(gvk schema.GroupVersionKind) proto.Schema {
201-
if p.OpenapiSchema == nil {
202-
return nil
203-
}
204-
return p.OpenapiSchema.LookupResource(gvk)
205-
}
206-
207201
// getPatchTypeFromOpenAPI looks up patch types supported by given GroupVersionKind in Open API.
208202
func (p *Patcher) getPatchTypeFromOpenAPI(gvk schema.GroupVersionKind) (types.PatchType, error) {
209203
if pc := p.OpenapiSchema.GetConsumes(p.Mapping.GroupVersionKind, "PATCH"); pc != nil {

0 commit comments

Comments
 (0)