mirror of https://github.com/k3s-io/k3s
Merge pull request #21964 from caesarxuchao/fix-thirdparty-parameter
Auto commit by PR queue botpull/6/head
commit
89c9c24987
|
@ -658,7 +658,7 @@ func (m *Master) thirdpartyapi(group, kind, version string) *apiserver.APIGroupV
|
|||
OptionsExternalVersion: &optionsExternalVersion,
|
||||
|
||||
Serializer: thirdpartyresourcedata.NewNegotiatedSerializer(api.Codecs, kind, externalVersion, internalVersion),
|
||||
ParameterCodec: api.ParameterCodec,
|
||||
ParameterCodec: thirdpartyresourcedata.NewThirdPartyParameterCodec(api.ParameterCodec),
|
||||
|
||||
Context: m.RequestContextMapper,
|
||||
|
||||
|
|
|
@ -568,8 +568,7 @@ func testInstallThirdPartyAPIListVersion(t *testing.T, version string) {
|
|||
}
|
||||
|
||||
if len(list.Items) != len(test.items) {
|
||||
t.Errorf("unexpected length: %d vs %d", len(list.Items), len(test.items))
|
||||
return
|
||||
t.Fatalf("unexpected length: %d vs %d", len(list.Items), len(test.items))
|
||||
}
|
||||
// The order of elements in LIST is not guaranteed.
|
||||
mapping := make(map[string]int)
|
||||
|
@ -715,8 +714,7 @@ func testInstallThirdPartyAPIPostForVersion(t *testing.T, version string) {
|
|||
|
||||
resp, err := http.Post(server.URL+"/apis/company.com/"+version+"/namespaces/default/foos", "application/json", bytes.NewBuffer(data))
|
||||
if !assert.NoError(err) {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
return
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
||||
assert.Equal(http.StatusCreated, resp.StatusCode)
|
||||
|
@ -829,6 +827,39 @@ func httpDelete(url string) (*http.Response, error) {
|
|||
return client.Do(req)
|
||||
}
|
||||
|
||||
func TestInstallThirdPartyAPIListOptions(t *testing.T) {
|
||||
for _, version := range versionsToTest {
|
||||
testInstallThirdPartyAPIListOptionsForVersion(t, version)
|
||||
}
|
||||
}
|
||||
|
||||
func testInstallThirdPartyAPIListOptionsForVersion(t *testing.T, version string) {
|
||||
_, etcdserver, server, assert := initThirdParty(t, version)
|
||||
// TODO: Uncomment when fix #19254
|
||||
// defer server.Close()
|
||||
defer etcdserver.Terminate(t)
|
||||
|
||||
// send a GET request with query parameter
|
||||
resp, err := httpGetWithRV(server.URL + "/apis/company.com/" + version + "/namespaces/default/foos")
|
||||
if !assert.NoError(err) {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
assert.Equal(http.StatusOK, resp.StatusCode)
|
||||
}
|
||||
|
||||
func httpGetWithRV(url string) (*http.Response, error) {
|
||||
req, err := http.NewRequest("GET", url, nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
q := req.URL.Query()
|
||||
// resourceversion is part of a ListOptions
|
||||
q.Add("resourceversion", "0")
|
||||
req.URL.RawQuery = q.Encode()
|
||||
client := &http.Client{}
|
||||
return client.Do(req)
|
||||
}
|
||||
|
||||
func TestInstallThirdPartyResourceRemove(t *testing.T) {
|
||||
for _, version := range versionsToTest {
|
||||
testInstallThirdPartyResourceRemove(t, version)
|
||||
|
|
|
@ -21,12 +21,14 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"io"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"k8s.io/kubernetes/pkg/api"
|
||||
"k8s.io/kubernetes/pkg/api/meta"
|
||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||
apiutil "k8s.io/kubernetes/pkg/api/util"
|
||||
"k8s.io/kubernetes/pkg/api/v1"
|
||||
"k8s.io/kubernetes/pkg/apimachinery/registered"
|
||||
"k8s.io/kubernetes/pkg/apis/extensions"
|
||||
"k8s.io/kubernetes/pkg/runtime"
|
||||
|
@ -364,3 +366,19 @@ func (t *thirdPartyResourceDataCreator) New(kind unversioned.GroupVersionKind) (
|
|||
return t.delegate.New(kind)
|
||||
}
|
||||
}
|
||||
|
||||
func NewThirdPartyParameterCodec(p runtime.ParameterCodec) runtime.ParameterCodec {
|
||||
return &thirdPartyParameterCodec{p}
|
||||
}
|
||||
|
||||
type thirdPartyParameterCodec struct {
|
||||
delegate runtime.ParameterCodec
|
||||
}
|
||||
|
||||
func (t *thirdPartyParameterCodec) DecodeParameters(parameters url.Values, from unversioned.GroupVersion, into runtime.Object) error {
|
||||
return t.delegate.DecodeParameters(parameters, v1.SchemeGroupVersion, into)
|
||||
}
|
||||
|
||||
func (t *thirdPartyParameterCodec) EncodeParameters(obj runtime.Object, to unversioned.GroupVersion) (url.Values, error) {
|
||||
return t.delegate.EncodeParameters(obj, v1.SchemeGroupVersion)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue