Skip to content

Commit

Permalink
Merge pull request kubernetes#81515 from liggitt/cr-patch-types
Browse files Browse the repository at this point in the history
Only advertise supported patch types
  • Loading branch information
k8s-ci-robot authored Aug 17, 2019
2 parents 6b50f1a + 2302da8 commit c7e997b
Show file tree
Hide file tree
Showing 3 changed files with 31 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,14 @@ go_library(
"//staging/src/k8s.io/apimachinery/pkg/apis/meta/v1beta1:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/labels:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/types:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/runtime:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/wait:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/endpoints/openapi:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//staging/src/k8s.io/client-go/tools/cache:go_default_library",
"//staging/src/k8s.io/client-go/util/workqueue:go_default_library",
"//vendor/github.com/emicklei/go-restful:go_default_library",
Expand Down Expand Up @@ -56,6 +59,8 @@ go_test(
"//staging/src/k8s.io/apimachinery/pkg/util/json:go_default_library",
"//staging/src/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/endpoints:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/features:go_default_library",
"//staging/src/k8s.io/apiserver/pkg/util/feature:go_default_library",
"//vendor/github.com/go-openapi/spec:go_default_library",
"//vendor/github.com/google/go-cmp/cmp:go_default_library",
"//vendor/github.com/google/gofuzz:go_default_library",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,22 @@ import (
"github.com/go-openapi/spec"

v1 "k8s.io/api/autoscaling/v1"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/validation"
structuralschema "k8s.io/apiextensions-apiserver/pkg/apiserver/schema"
generatedopenapi "k8s.io/apiextensions-apiserver/pkg/generated/openapi"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
metav1beta1 "k8s.io/apimachinery/pkg/apis/meta/v1beta1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apiserver/pkg/endpoints"
"k8s.io/apiserver/pkg/endpoints/openapi"
"k8s.io/apiserver/pkg/features"
utilfeature "k8s.io/apiserver/pkg/util/feature"
openapibuilder "k8s.io/kube-openapi/pkg/builder"
"k8s.io/kube-openapi/pkg/common"
"k8s.io/kube-openapi/pkg/util"

"k8s.io/apiextensions-apiserver/pkg/apis/apiextensions"
generatedopenapi "k8s.io/apiextensions-apiserver/pkg/generated/openapi"
)

const (
Expand Down Expand Up @@ -263,11 +265,17 @@ func (b *builder) buildRoute(root, path, httpMethod, actionVerb, operationVerb s

// Build consume media types
if httpMethod == "PATCH" {
route.Consumes("application/json-patch+json",
"application/merge-patch+json",
"application/strategic-merge-patch+json")
supportedTypes := []string{
string(types.JSONPatchType),
string(types.MergePatchType),
}
if utilfeature.DefaultFeatureGate.Enabled(features.ServerSideApply) {
supportedTypes = append(supportedTypes, string(types.ApplyPatchType))
}

route.Consumes(supportedTypes...)
} else {
route.Consumes("*/*")
route.Consumes(runtime.ContentTypeJSON, runtime.ContentTypeYAML)
}

// Build option parameters
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ import (
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apiserver/pkg/endpoints"
"k8s.io/apiserver/pkg/features"
utilfeature "k8s.io/apiserver/pkg/util/feature"
)

func TestNewBuilder(t *testing.T) {
Expand Down Expand Up @@ -513,6 +515,15 @@ func TestCRDRouteParameterBuilder(t *testing.T) {
if ok {
actions.Insert(action)
}
if action == "patch" {
expected := []string{"application/json-patch+json", "application/merge-patch+json"}
if utilfeature.DefaultFeatureGate.Enabled(features.ServerSideApply) {
expected = append(expected, "application/apply-patch+yaml")
}
assert.Equal(t, operation.Consumes, expected)
} else {
assert.Equal(t, operation.Consumes, []string{"application/json", "application/yaml"})
}
}
}
assert.Equal(t, expected.expectedActions, actions)
Expand Down

0 comments on commit c7e997b

Please sign in to comment.