diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go index a44651c47a..f884b648f5 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/patch.go @@ -17,12 +17,12 @@ limitations under the License. package handlers import ( - "encoding/json" "fmt" "k8s.io/apimachinery/pkg/conversion/unstructured" "k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/json" "k8s.io/apimachinery/pkg/util/strategicpatch" "github.com/evanphx/json-patch" diff --git a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go index 0f4e6ac121..357cd7294f 100644 --- a/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go +++ b/staging/src/k8s.io/apiserver/pkg/endpoints/handlers/rest_test.go @@ -284,6 +284,37 @@ func (tc *patchTestCase) Run(t *testing.T) { } +func TestNumberConversion(t *testing.T) { + codec := api.Codecs.LegacyCodec(schema.GroupVersion{Version: "v1"}) + + currentVersionedObject := &v1.Service{ + TypeMeta: metav1.TypeMeta{Kind: "Service", APIVersion: "v1"}, + ObjectMeta: metav1.ObjectMeta{Name: "test-service"}, + Spec: v1.ServiceSpec{ + Ports: []v1.ServicePort{ + { + Port: 80, + Protocol: "TCP", + NodePort: 31678, + }, + }, + }, + } + versionedObjToUpdate := &v1.Service{} + versionedObj := &v1.Service{} + + patchJS := []byte(`{"spec":{"ports":[{"port":80,"nodePort":31789}]}}`) + + _, _, err := strategicPatchObject(codec, currentVersionedObject, patchJS, versionedObjToUpdate, versionedObj) + if err != nil { + t.Fatal(err) + } + ports := versionedObjToUpdate.Spec.Ports + if len(ports) != 1 || ports[0].Port != 80 || ports[0].NodePort != 31789 { + t.Fatal(errors.New("Ports failed to merge because of number conversion issue")) + } +} + func TestPatchResourceWithVersionConflict(t *testing.T) { namespace := "bar" name := "foo" diff --git a/vendor/BUILD b/vendor/BUILD index ecba0181ae..4fa82474b3 100644 --- a/vendor/BUILD +++ b/vendor/BUILD @@ -10023,6 +10023,7 @@ go_library( "//vendor:k8s.io/apimachinery/pkg/runtime/serializer/streaming", "//vendor:k8s.io/apimachinery/pkg/types", "//vendor:k8s.io/apimachinery/pkg/util/httpstream", + "//vendor:k8s.io/apimachinery/pkg/util/json", "//vendor:k8s.io/apimachinery/pkg/util/mergepatch", "//vendor:k8s.io/apimachinery/pkg/util/net", "//vendor:k8s.io/apimachinery/pkg/util/runtime",