mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #4819 from mikedanese/validate-api-version
Validate api version in kubectl --patch and --override
This commit is contained in:
commit
97d7e7e2c2
@ -26,7 +26,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/api"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest"
|
||||||
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
"github.com/GoogleCloudPlatform/kubernetes/pkg/runtime"
|
||||||
|
|
||||||
"github.com/evanphx/json-patch"
|
"github.com/evanphx/json-patch"
|
||||||
@ -161,10 +161,13 @@ func Merge(dst runtime.Object, fragment, kind string) (runtime.Object, error) {
|
|||||||
if !ok {
|
if !ok {
|
||||||
return nil, fmt.Errorf("apiVersion must be a string")
|
return nil, fmt.Errorf("apiVersion must be a string")
|
||||||
}
|
}
|
||||||
|
i, err := latest.InterfacesFor(versionString)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
codec := runtime.CodecFor(api.Scheme, versionString)
|
|
||||||
// encode dst into versioned json and apply fragment directly too it
|
// encode dst into versioned json and apply fragment directly too it
|
||||||
target, err := codec.Encode(dst)
|
target, err := i.Codec.Encode(dst)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -172,7 +175,7 @@ func Merge(dst runtime.Object, fragment, kind string) (runtime.Object, error) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
out, err := codec.Decode(patched)
|
out, err := i.Codec.Decode(patched)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -130,6 +130,12 @@ func TestMerge(t *testing.T) {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
kind: "Service",
|
||||||
|
obj: &api.Service{},
|
||||||
|
fragment: `{ "apiVersion": "badVersion" }`,
|
||||||
|
expectErr: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
kind: "Service",
|
kind: "Service",
|
||||||
obj: &api.Service{
|
obj: &api.Service{
|
||||||
|
Loading…
Reference in New Issue
Block a user