mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Merge pull request #21964 from caesarxuchao/fix-thirdparty-parameter
Auto commit by PR queue bot
This commit is contained in:
		@@ -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)
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user