mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
Merge pull request #18022 from deads2k/gv-request
Auto commit by PR queue bot
This commit is contained in:
commit
c6b59353e1
@ -38,6 +38,7 @@ import (
|
|||||||
apierrors "k8s.io/kubernetes/pkg/api/errors"
|
apierrors "k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/client/record"
|
"k8s.io/kubernetes/pkg/client/record"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
@ -423,7 +424,7 @@ containers:
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runReplicationControllerTest(c *client.Client) {
|
func runReplicationControllerTest(c *client.Client) {
|
||||||
clientAPIVersion := c.APIVersion()
|
clientAPIVersion := c.APIVersion().String()
|
||||||
data, err := ioutil.ReadFile("cmd/integration/" + clientAPIVersion + "-controller.json")
|
data, err := ioutil.ReadFile("cmd/integration/" + clientAPIVersion + "-controller.json")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatalf("Unexpected error: %v", err)
|
glog.Fatalf("Unexpected error: %v", err)
|
||||||
@ -462,7 +463,7 @@ func runReplicationControllerTest(c *client.Client) {
|
|||||||
|
|
||||||
func runAPIVersionsTest(c *client.Client) {
|
func runAPIVersionsTest(c *client.Client) {
|
||||||
v, err := c.ServerAPIVersions()
|
v, err := c.ServerAPIVersions()
|
||||||
clientVersion := c.APIVersion()
|
clientVersion := c.APIVersion().String()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Fatalf("Failed to get api versions: %v", err)
|
glog.Fatalf("Failed to get api versions: %v", err)
|
||||||
}
|
}
|
||||||
@ -541,7 +542,7 @@ func runSelfLinkTestOnNamespace(c *client.Client, namespace string) {
|
|||||||
func runAtomicPutTest(c *client.Client) {
|
func runAtomicPutTest(c *client.Client) {
|
||||||
svcBody := api.Service{
|
svcBody := api.Service{
|
||||||
TypeMeta: unversioned.TypeMeta{
|
TypeMeta: unversioned.TypeMeta{
|
||||||
APIVersion: c.APIVersion(),
|
APIVersion: c.APIVersion().String(),
|
||||||
},
|
},
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
Name: "atomicservice",
|
Name: "atomicservice",
|
||||||
@ -623,7 +624,7 @@ func runPatchTest(c *client.Client) {
|
|||||||
resource := "services"
|
resource := "services"
|
||||||
svcBody := api.Service{
|
svcBody := api.Service{
|
||||||
TypeMeta: unversioned.TypeMeta{
|
TypeMeta: unversioned.TypeMeta{
|
||||||
APIVersion: c.APIVersion(),
|
APIVersion: c.APIVersion().String(),
|
||||||
},
|
},
|
||||||
ObjectMeta: api.ObjectMeta{
|
ObjectMeta: api.ObjectMeta{
|
||||||
Name: name,
|
Name: name,
|
||||||
@ -647,12 +648,12 @@ func runPatchTest(c *client.Client) {
|
|||||||
glog.Fatalf("Failed creating patchservice: %v", err)
|
glog.Fatalf("Failed creating patchservice: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
patchBodies := map[string]map[api.PatchType]struct {
|
patchBodies := map[unversioned.GroupVersion]map[api.PatchType]struct {
|
||||||
AddLabelBody []byte
|
AddLabelBody []byte
|
||||||
RemoveLabelBody []byte
|
RemoveLabelBody []byte
|
||||||
RemoveAllLabelsBody []byte
|
RemoveAllLabelsBody []byte
|
||||||
}{
|
}{
|
||||||
"v1": {
|
v1.SchemeGroupVersion: {
|
||||||
api.JSONPatchType: {
|
api.JSONPatchType: {
|
||||||
[]byte(`[{"op":"add","path":"/metadata/labels","value":{"foo":"bar","baz":"qux"}}]`),
|
[]byte(`[{"op":"add","path":"/metadata/labels","value":{"foo":"bar","baz":"qux"}}]`),
|
||||||
[]byte(`[{"op":"remove","path":"/metadata/labels/foo"}]`),
|
[]byte(`[{"op":"remove","path":"/metadata/labels/foo"}]`),
|
||||||
|
20
pkg/api/unversioned/register.go
Normal file
20
pkg/api/unversioned/register.go
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
/*
|
||||||
|
Copyright 2014 The Kubernetes Authors All rights reserved.
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package unversioned
|
||||||
|
|
||||||
|
// SchemeGroupVersion is group version used to register these objects
|
||||||
|
var SchemeGroupVersion = GroupVersion{Group: "", Version: ""}
|
@ -72,7 +72,7 @@ func (c *deployments) Delete(name string, options *api.DeleteOptions) error {
|
|||||||
if options == nil {
|
if options == nil {
|
||||||
return c.client.Delete().Namespace(c.ns).Resource("deployments").Name(name).Do().Error()
|
return c.client.Delete().Namespace(c.ns).Resource("deployments").Name(name).Do().Error()
|
||||||
}
|
}
|
||||||
body, err := api.Scheme.EncodeToVersion(options, c.client.APIVersion())
|
body, err := api.Scheme.EncodeToVersion(options, c.client.APIVersion().String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -187,7 +187,7 @@ func (e *events) Delete(name string) error {
|
|||||||
// Returns the appropriate field selector based on the API version being used to communicate with the server.
|
// Returns the appropriate field selector based on the API version being used to communicate with the server.
|
||||||
// The returned field selector can be used with List and Watch to filter desired events.
|
// The returned field selector can be used with List and Watch to filter desired events.
|
||||||
func (e *events) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector {
|
func (e *events) GetFieldSelector(involvedObjectName, involvedObjectNamespace, involvedObjectKind, involvedObjectUID *string) fields.Selector {
|
||||||
apiVersion := e.client.APIVersion()
|
apiVersion := e.client.APIVersion().String()
|
||||||
field := fields.Set{}
|
field := fields.Set{}
|
||||||
if involvedObjectName != nil {
|
if involvedObjectName != nil {
|
||||||
field[getInvolvedObjectNameFieldLabel(apiVersion)] = *involvedObjectName
|
field[getInvolvedObjectNameFieldLabel(apiVersion)] = *involvedObjectName
|
||||||
|
@ -50,23 +50,23 @@ type RESTClient struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *RESTClient) Get() *unversioned.Request {
|
func (c *RESTClient) Get() *unversioned.Request {
|
||||||
return unversioned.NewRequest(c, "GET", &url.URL{Host: "localhost"}, testapi.Default.Version(), c.Codec)
|
return unversioned.NewRequest(c, "GET", &url.URL{Host: "localhost"}, *testapi.Default.GroupVersion(), c.Codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RESTClient) Put() *unversioned.Request {
|
func (c *RESTClient) Put() *unversioned.Request {
|
||||||
return unversioned.NewRequest(c, "PUT", &url.URL{Host: "localhost"}, testapi.Default.Version(), c.Codec)
|
return unversioned.NewRequest(c, "PUT", &url.URL{Host: "localhost"}, *testapi.Default.GroupVersion(), c.Codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RESTClient) Patch(_ api.PatchType) *unversioned.Request {
|
func (c *RESTClient) Patch(_ api.PatchType) *unversioned.Request {
|
||||||
return unversioned.NewRequest(c, "PATCH", &url.URL{Host: "localhost"}, testapi.Default.Version(), c.Codec)
|
return unversioned.NewRequest(c, "PATCH", &url.URL{Host: "localhost"}, *testapi.Default.GroupVersion(), c.Codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RESTClient) Post() *unversioned.Request {
|
func (c *RESTClient) Post() *unversioned.Request {
|
||||||
return unversioned.NewRequest(c, "POST", &url.URL{Host: "localhost"}, testapi.Default.Version(), c.Codec)
|
return unversioned.NewRequest(c, "POST", &url.URL{Host: "localhost"}, *testapi.Default.GroupVersion(), c.Codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RESTClient) Delete() *unversioned.Request {
|
func (c *RESTClient) Delete() *unversioned.Request {
|
||||||
return unversioned.NewRequest(c, "DELETE", &url.URL{Host: "localhost"}, testapi.Default.Version(), c.Codec)
|
return unversioned.NewRequest(c, "DELETE", &url.URL{Host: "localhost"}, *testapi.Default.GroupVersion(), c.Codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *RESTClient) Do(req *http.Request) (*http.Response, error) {
|
func (c *RESTClient) Do(req *http.Request) (*http.Response, error) {
|
||||||
|
@ -397,7 +397,7 @@ func RESTClientFor(config *Config) (*RESTClient, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
client := NewRESTClient(baseURL, config.GroupVersion.String(), config.Codec, config.QPS, config.Burst)
|
client := NewRESTClient(baseURL, *config.GroupVersion, config.Codec, config.QPS, config.Burst)
|
||||||
|
|
||||||
transport, err := TransportFor(config)
|
transport, err := TransportFor(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -422,7 +422,7 @@ func UnversionedRESTClientFor(config *Config) (*RESTClient, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
client := NewRESTClient(baseURL, "", config.Codec, config.QPS, config.Burst)
|
client := NewRESTClient(baseURL, unversioned.SchemeGroupVersion, config.Codec, config.QPS, config.Burst)
|
||||||
|
|
||||||
transport, err := TransportFor(config)
|
transport, err := TransportFor(config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -73,7 +73,7 @@ func (c *horizontalPodAutoscalers) Delete(name string, options *api.DeleteOption
|
|||||||
if options == nil {
|
if options == nil {
|
||||||
return c.client.Delete().Namespace(c.ns).Resource("horizontalPodAutoscalers").Name(name).Do().Error()
|
return c.client.Delete().Namespace(c.ns).Resource("horizontalPodAutoscalers").Name(name).Do().Error()
|
||||||
}
|
}
|
||||||
body, err := api.Scheme.EncodeToVersion(options, c.client.APIVersion())
|
body, err := api.Scheme.EncodeToVersion(options, c.client.APIVersion().String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ func (c *ingress) Delete(name string, options *api.DeleteOptions) (err error) {
|
|||||||
return c.r.Delete().Namespace(c.ns).Resource("ingresses").Name(name).Do().Error()
|
return c.r.Delete().Namespace(c.ns).Resource("ingresses").Name(name).Do().Error()
|
||||||
}
|
}
|
||||||
|
|
||||||
body, err := api.Scheme.EncodeToVersion(options, c.r.APIVersion())
|
body, err := api.Scheme.EncodeToVersion(options, c.r.APIVersion().String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -71,7 +71,7 @@ func (c *podTemplates) Delete(name string, options *api.DeleteOptions) error {
|
|||||||
if options == nil {
|
if options == nil {
|
||||||
return c.r.Delete().Namespace(c.ns).Resource("podTemplates").Name(name).Do().Error()
|
return c.r.Delete().Namespace(c.ns).Resource("podTemplates").Name(name).Do().Error()
|
||||||
}
|
}
|
||||||
body, err := api.Scheme.EncodeToVersion(options, c.r.APIVersion())
|
body, err := api.Scheme.EncodeToVersion(options, c.r.APIVersion().String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -74,7 +74,7 @@ func (c *pods) Delete(name string, options *api.DeleteOptions) error {
|
|||||||
if options == nil {
|
if options == nil {
|
||||||
return c.r.Delete().Namespace(c.ns).Resource("pods").Name(name).Do().Error()
|
return c.r.Delete().Namespace(c.ns).Resource("pods").Name(name).Do().Error()
|
||||||
}
|
}
|
||||||
body, err := api.Scheme.EncodeToVersion(options, c.r.APIVersion())
|
body, err := api.Scheme.EncodeToVersion(options, c.r.APIVersion().String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/util/httpstream"
|
"k8s.io/kubernetes/pkg/util/httpstream"
|
||||||
"k8s.io/kubernetes/pkg/util/httpstream/spdy"
|
"k8s.io/kubernetes/pkg/util/httpstream/spdy"
|
||||||
@ -189,7 +190,7 @@ func TestRequestExecuteRemoteCommand(t *testing.T) {
|
|||||||
server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, testCase.MessageCount))
|
server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, testCase.MessageCount))
|
||||||
|
|
||||||
url, _ := url.ParseRequestURI(server.URL)
|
url, _ := url.ParseRequestURI(server.URL)
|
||||||
c := client.NewRESTClient(url, "x", nil, -1, -1)
|
c := client.NewRESTClient(url, unversioned.GroupVersion{Group: "x"}, nil, -1, -1)
|
||||||
req := c.Post().Resource("testing")
|
req := c.Post().Resource("testing")
|
||||||
req.SetHeader(httpstream.HeaderProtocolVersion, StreamProtocolV2Name)
|
req.SetHeader(httpstream.HeaderProtocolVersion, StreamProtocolV2Name)
|
||||||
req.Param("command", "ls")
|
req.Param("command", "ls")
|
||||||
@ -271,7 +272,7 @@ func TestRequestAttachRemoteCommand(t *testing.T) {
|
|||||||
server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, 1))
|
server := httptest.NewServer(fakeExecServer(t, i, testCase.Stdin, testCase.Stdout, testCase.Stderr, testCase.Error, testCase.Tty, 1))
|
||||||
|
|
||||||
url, _ := url.ParseRequestURI(server.URL)
|
url, _ := url.ParseRequestURI(server.URL)
|
||||||
c := client.NewRESTClient(url, "x", nil, -1, -1)
|
c := client.NewRESTClient(url, unversioned.GroupVersion{Group: "x"}, nil, -1, -1)
|
||||||
req := c.Post().Resource("testing")
|
req := c.Post().Resource("testing")
|
||||||
|
|
||||||
conf := &client.Config{
|
conf := &client.Config{
|
||||||
|
@ -32,6 +32,7 @@ import (
|
|||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"k8s.io/kubernetes/pkg/api/errors"
|
"k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/api/validation"
|
"k8s.io/kubernetes/pkg/api/validation"
|
||||||
"k8s.io/kubernetes/pkg/client/metrics"
|
"k8s.io/kubernetes/pkg/client/metrics"
|
||||||
"k8s.io/kubernetes/pkg/conversion/queryparams"
|
"k8s.io/kubernetes/pkg/conversion/queryparams"
|
||||||
@ -99,7 +100,7 @@ type Request struct {
|
|||||||
selector labels.Selector
|
selector labels.Selector
|
||||||
timeout time.Duration
|
timeout time.Duration
|
||||||
|
|
||||||
apiVersion string
|
groupVersion unversioned.GroupVersion
|
||||||
|
|
||||||
// output
|
// output
|
||||||
err error
|
err error
|
||||||
@ -111,15 +112,14 @@ type Request struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewRequest creates a new request helper object for accessing runtime.Objects on a server.
|
// NewRequest creates a new request helper object for accessing runtime.Objects on a server.
|
||||||
func NewRequest(client HTTPClient, verb string, baseURL *url.URL, apiVersion string,
|
func NewRequest(client HTTPClient, verb string, baseURL *url.URL, groupVersion unversioned.GroupVersion, codec runtime.Codec) *Request {
|
||||||
codec runtime.Codec) *Request {
|
|
||||||
return &Request{
|
return &Request{
|
||||||
client: client,
|
client: client,
|
||||||
verb: verb,
|
verb: verb,
|
||||||
baseURL: baseURL,
|
baseURL: baseURL,
|
||||||
path: baseURL.Path,
|
path: baseURL.Path,
|
||||||
apiVersion: apiVersion,
|
groupVersion: groupVersion,
|
||||||
codec: codec,
|
codec: codec,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -308,25 +308,25 @@ func (r resourceTypeToFieldMapping) filterField(resourceType, field, value strin
|
|||||||
return fMapping.filterField(field, value)
|
return fMapping.filterField(field, value)
|
||||||
}
|
}
|
||||||
|
|
||||||
type versionToResourceToFieldMapping map[string]resourceTypeToFieldMapping
|
type versionToResourceToFieldMapping map[unversioned.GroupVersion]resourceTypeToFieldMapping
|
||||||
|
|
||||||
func (v versionToResourceToFieldMapping) filterField(apiVersion, resourceType, field, value string) (newField, newValue string, err error) {
|
func (v versionToResourceToFieldMapping) filterField(groupVersion unversioned.GroupVersion, resourceType, field, value string) (newField, newValue string, err error) {
|
||||||
rMapping, ok := v[apiVersion]
|
rMapping, ok := v[groupVersion]
|
||||||
if !ok {
|
if !ok {
|
||||||
glog.Warningf("Field selector: %v - %v - %v - %v: need to check if this is versioned correctly.", apiVersion, resourceType, field, value)
|
glog.Warningf("Field selector: %v - %v - %v - %v: need to check if this is versioned correctly.", groupVersion, resourceType, field, value)
|
||||||
return field, value, nil
|
return field, value, nil
|
||||||
}
|
}
|
||||||
newField, newValue, err = rMapping.filterField(resourceType, field, value)
|
newField, newValue, err = rMapping.filterField(resourceType, field, value)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// This is only a warning until we find and fix all of the client's usages.
|
// This is only a warning until we find and fix all of the client's usages.
|
||||||
glog.Warningf("Field selector: %v - %v - %v - %v: need to check if this is versioned correctly.", apiVersion, resourceType, field, value)
|
glog.Warningf("Field selector: %v - %v - %v - %v: need to check if this is versioned correctly.", groupVersion, resourceType, field, value)
|
||||||
return field, value, nil
|
return field, value, nil
|
||||||
}
|
}
|
||||||
return newField, newValue, nil
|
return newField, newValue, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var fieldMappings = versionToResourceToFieldMapping{
|
var fieldMappings = versionToResourceToFieldMapping{
|
||||||
"v1": resourceTypeToFieldMapping{
|
v1.SchemeGroupVersion: resourceTypeToFieldMapping{
|
||||||
"nodes": clientFieldNameToAPIVersionFieldName{
|
"nodes": clientFieldNameToAPIVersionFieldName{
|
||||||
ObjectNameField: ObjectNameField,
|
ObjectNameField: ObjectNameField,
|
||||||
NodeUnschedulable: NodeUnschedulable,
|
NodeUnschedulable: NodeUnschedulable,
|
||||||
@ -371,13 +371,13 @@ func (r *Request) FieldsSelectorParam(s fields.Selector) *Request {
|
|||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
s2, err := s.Transform(func(field, value string) (newField, newValue string, err error) {
|
s2, err := s.Transform(func(field, value string) (newField, newValue string, err error) {
|
||||||
return fieldMappings.filterField(r.apiVersion, r.resource, field, value)
|
return fieldMappings.filterField(r.groupVersion, r.resource, field, value)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.err = err
|
r.err = err
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
return r.setParam(unversioned.FieldSelectorQueryParam(r.apiVersion), s2.String())
|
return r.setParam(unversioned.FieldSelectorQueryParam(r.groupVersion.String()), s2.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// LabelsSelectorParam adds the given selector as a query parameter
|
// LabelsSelectorParam adds the given selector as a query parameter
|
||||||
@ -391,7 +391,7 @@ func (r *Request) LabelsSelectorParam(s labels.Selector) *Request {
|
|||||||
if s.Empty() {
|
if s.Empty() {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
return r.setParam(unversioned.LabelSelectorQueryParam(r.apiVersion), s.String())
|
return r.setParam(unversioned.LabelSelectorQueryParam(r.groupVersion.String()), s.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
// UintParam creates a query parameter with the given value.
|
// UintParam creates a query parameter with the given value.
|
||||||
@ -417,7 +417,7 @@ func (r *Request) VersionedParams(obj runtime.Object, convertor runtime.ObjectCo
|
|||||||
if r.err != nil {
|
if r.err != nil {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
versioned, err := convertor.ConvertToVersion(obj, r.apiVersion)
|
versioned, err := convertor.ConvertToVersion(obj, r.groupVersion.String())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.err = err
|
r.err = err
|
||||||
return r
|
return r
|
||||||
@ -431,14 +431,14 @@ func (r *Request) VersionedParams(obj runtime.Object, convertor runtime.ObjectCo
|
|||||||
for _, value := range v {
|
for _, value := range v {
|
||||||
// TODO: Move it to setParam method, once we get rid of
|
// TODO: Move it to setParam method, once we get rid of
|
||||||
// FieldSelectorParam & LabelSelectorParam methods.
|
// FieldSelectorParam & LabelSelectorParam methods.
|
||||||
if k == unversioned.LabelSelectorQueryParam(r.apiVersion) && value == "" {
|
if k == unversioned.LabelSelectorQueryParam(r.groupVersion.String()) && value == "" {
|
||||||
// Don't set an empty selector for backward compatibility.
|
// Don't set an empty selector for backward compatibility.
|
||||||
// Since there is no way to get the difference between empty
|
// Since there is no way to get the difference between empty
|
||||||
// and unspecified string, we don't set it to avoid having
|
// and unspecified string, we don't set it to avoid having
|
||||||
// labelSelector= param in every request.
|
// labelSelector= param in every request.
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if k == unversioned.FieldSelectorQueryParam(r.apiVersion) {
|
if k == unversioned.FieldSelectorQueryParam(r.groupVersion.String()) {
|
||||||
if value == "" {
|
if value == "" {
|
||||||
// Don't set an empty selector for backward compatibility.
|
// Don't set an empty selector for backward compatibility.
|
||||||
// Since there is no way to get the difference between empty
|
// Since there is no way to get the difference between empty
|
||||||
@ -454,7 +454,7 @@ func (r *Request) VersionedParams(obj runtime.Object, convertor runtime.ObjectCo
|
|||||||
}
|
}
|
||||||
filteredSelector, err := selector.Transform(
|
filteredSelector, err := selector.Transform(
|
||||||
func(field, value string) (newField, newValue string, err error) {
|
func(field, value string) (newField, newValue string, err error) {
|
||||||
return fieldMappings.filterField(r.apiVersion, r.resource, field, value)
|
return fieldMappings.filterField(r.groupVersion, r.resource, field, value)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
r.err = fmt.Errorf("untransformable field selector: %v", err)
|
r.err = fmt.Errorf("untransformable field selector: %v", err)
|
||||||
|
@ -34,6 +34,7 @@ import (
|
|||||||
apierrors "k8s.io/kubernetes/pkg/api/errors"
|
apierrors "k8s.io/kubernetes/pkg/api/errors"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
"k8s.io/kubernetes/pkg/api/unversioned"
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
"k8s.io/kubernetes/pkg/labels"
|
"k8s.io/kubernetes/pkg/labels"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
@ -45,8 +46,8 @@ import (
|
|||||||
|
|
||||||
func TestRequestWithErrorWontChange(t *testing.T) {
|
func TestRequestWithErrorWontChange(t *testing.T) {
|
||||||
original := Request{
|
original := Request{
|
||||||
err: errors.New("test"),
|
err: errors.New("test"),
|
||||||
apiVersion: testapi.Default.Version(),
|
groupVersion: *testapi.Default.GroupVersion(),
|
||||||
}
|
}
|
||||||
r := original
|
r := original
|
||||||
changed := r.Param("foo", "bar").
|
changed := r.Param("foo", "bar").
|
||||||
@ -177,7 +178,7 @@ func TestRequestParam(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRequestVersionedParams(t *testing.T) {
|
func TestRequestVersionedParams(t *testing.T) {
|
||||||
r := (&Request{apiVersion: "v1"}).Param("foo", "a")
|
r := (&Request{groupVersion: v1.SchemeGroupVersion}).Param("foo", "a")
|
||||||
if !reflect.DeepEqual(r.params, url.Values{"foo": []string{"a"}}) {
|
if !reflect.DeepEqual(r.params, url.Values{"foo": []string{"a"}}) {
|
||||||
t.Errorf("should have set a param: %#v", r)
|
t.Errorf("should have set a param: %#v", r)
|
||||||
}
|
}
|
||||||
@ -193,7 +194,7 @@ func TestRequestVersionedParams(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestRequestVersionedParamsFromListOptions(t *testing.T) {
|
func TestRequestVersionedParamsFromListOptions(t *testing.T) {
|
||||||
r := &Request{apiVersion: "v1"}
|
r := &Request{groupVersion: v1.SchemeGroupVersion}
|
||||||
r.VersionedParams(&unversioned.ListOptions{ResourceVersion: "1"}, api.Scheme)
|
r.VersionedParams(&unversioned.ListOptions{ResourceVersion: "1"}, api.Scheme)
|
||||||
if !reflect.DeepEqual(r.params, url.Values{
|
if !reflect.DeepEqual(r.params, url.Values{
|
||||||
"resourceVersion": []string{"1"},
|
"resourceVersion": []string{"1"},
|
||||||
@ -261,7 +262,7 @@ func TestResultIntoWithErrReturnsErr(t *testing.T) {
|
|||||||
|
|
||||||
func TestURLTemplate(t *testing.T) {
|
func TestURLTemplate(t *testing.T) {
|
||||||
uri, _ := url.Parse("http://localhost")
|
uri, _ := url.Parse("http://localhost")
|
||||||
r := NewRequest(nil, "POST", uri, "test", nil)
|
r := NewRequest(nil, "POST", uri, unversioned.GroupVersion{Group: "test"}, nil)
|
||||||
r.Prefix("pre1").Resource("r1").Namespace("ns").Name("nm").Param("p0", "v0")
|
r.Prefix("pre1").Resource("r1").Namespace("ns").Name("nm").Param("p0", "v0")
|
||||||
full := r.URL()
|
full := r.URL()
|
||||||
if full.String() != "http://localhost/pre1/namespaces/ns/r1/nm?p0=v0" {
|
if full.String() != "http://localhost/pre1/namespaces/ns/r1/nm?p0=v0" {
|
||||||
@ -322,7 +323,7 @@ func TestTransformResponse(t *testing.T) {
|
|||||||
{Response: &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewReader(invalid))}, Data: invalid},
|
{Response: &http.Response{StatusCode: 200, Body: ioutil.NopCloser(bytes.NewReader(invalid))}, Data: invalid},
|
||||||
}
|
}
|
||||||
for i, test := range testCases {
|
for i, test := range testCases {
|
||||||
r := NewRequest(nil, "", uri, testapi.Default.Version(), testapi.Default.Codec())
|
r := NewRequest(nil, "", uri, *testapi.Default.GroupVersion(), testapi.Default.Codec())
|
||||||
if test.Response.Body == nil {
|
if test.Response.Body == nil {
|
||||||
test.Response.Body = ioutil.NopCloser(bytes.NewReader([]byte{}))
|
test.Response.Body = ioutil.NopCloser(bytes.NewReader([]byte{}))
|
||||||
}
|
}
|
||||||
@ -1029,7 +1030,7 @@ func TestUintParam(t *testing.T) {
|
|||||||
|
|
||||||
for _, item := range table {
|
for _, item := range table {
|
||||||
u, _ := url.Parse("http://localhost")
|
u, _ := url.Parse("http://localhost")
|
||||||
r := NewRequest(nil, "GET", u, "test", nil).AbsPath("").UintParam(item.name, item.testVal)
|
r := NewRequest(nil, "GET", u, unversioned.GroupVersion{Group: "test"}, nil).AbsPath("").UintParam(item.name, item.testVal)
|
||||||
if e, a := item.expectStr, r.URL().String(); e != a {
|
if e, a := item.expectStr, r.URL().String(); e != a {
|
||||||
t.Errorf("expected %v, got %v", e, a)
|
t.Errorf("expected %v, got %v", e, a)
|
||||||
}
|
}
|
||||||
@ -1200,5 +1201,5 @@ func testRESTClient(t testing.TB, srv *httptest.Server) *RESTClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
baseURL.Path = testapi.Default.ResourcePath("", "", "")
|
baseURL.Path = testapi.Default.ResourcePath("", "", "")
|
||||||
return NewRESTClient(baseURL, testapi.Default.GroupVersion().String(), testapi.Default.Codec(), 0, 0)
|
return NewRESTClient(baseURL, *testapi.Default.GroupVersion(), testapi.Default.Codec(), 0, 0)
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
|
"k8s.io/kubernetes/pkg/api/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/runtime"
|
"k8s.io/kubernetes/pkg/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util"
|
"k8s.io/kubernetes/pkg/util"
|
||||||
)
|
)
|
||||||
@ -36,7 +37,7 @@ import (
|
|||||||
type RESTClient struct {
|
type RESTClient struct {
|
||||||
baseURL *url.URL
|
baseURL *url.URL
|
||||||
// A string identifying the version of the API this client is expected to use.
|
// A string identifying the version of the API this client is expected to use.
|
||||||
apiVersion string
|
groupVersion unversioned.GroupVersion
|
||||||
|
|
||||||
// Codec is the encoding and decoding scheme that applies to a particular set of
|
// Codec is the encoding and decoding scheme that applies to a particular set of
|
||||||
// REST resources.
|
// REST resources.
|
||||||
@ -53,7 +54,7 @@ type RESTClient struct {
|
|||||||
// NewRESTClient creates a new RESTClient. This client performs generic REST functions
|
// NewRESTClient creates a new RESTClient. This client performs generic REST functions
|
||||||
// such as Get, Put, Post, and Delete on specified paths. Codec controls encoding and
|
// such as Get, Put, Post, and Delete on specified paths. Codec controls encoding and
|
||||||
// decoding of responses from the server.
|
// decoding of responses from the server.
|
||||||
func NewRESTClient(baseURL *url.URL, apiVersion string, c runtime.Codec, maxQPS float32, maxBurst int) *RESTClient {
|
func NewRESTClient(baseURL *url.URL, groupVersion unversioned.GroupVersion, c runtime.Codec, maxQPS float32, maxBurst int) *RESTClient {
|
||||||
base := *baseURL
|
base := *baseURL
|
||||||
if !strings.HasSuffix(base.Path, "/") {
|
if !strings.HasSuffix(base.Path, "/") {
|
||||||
base.Path += "/"
|
base.Path += "/"
|
||||||
@ -66,10 +67,10 @@ func NewRESTClient(baseURL *url.URL, apiVersion string, c runtime.Codec, maxQPS
|
|||||||
throttle = util.NewTokenBucketRateLimiter(maxQPS, maxBurst)
|
throttle = util.NewTokenBucketRateLimiter(maxQPS, maxBurst)
|
||||||
}
|
}
|
||||||
return &RESTClient{
|
return &RESTClient{
|
||||||
baseURL: &base,
|
baseURL: &base,
|
||||||
apiVersion: apiVersion,
|
groupVersion: groupVersion,
|
||||||
Codec: c,
|
Codec: c,
|
||||||
Throttle: throttle,
|
Throttle: throttle,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -90,9 +91,9 @@ func (c *RESTClient) Verb(verb string) *Request {
|
|||||||
c.Throttle.Accept()
|
c.Throttle.Accept()
|
||||||
}
|
}
|
||||||
if c.Client == nil {
|
if c.Client == nil {
|
||||||
return NewRequest(nil, verb, c.baseURL, c.apiVersion, c.Codec)
|
return NewRequest(nil, verb, c.baseURL, c.groupVersion, c.Codec)
|
||||||
}
|
}
|
||||||
return NewRequest(c.Client, verb, c.baseURL, c.apiVersion, c.Codec)
|
return NewRequest(c.Client, verb, c.baseURL, c.groupVersion, c.Codec)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Post begins a POST request. Short for c.Verb("POST").
|
// Post begins a POST request. Short for c.Verb("POST").
|
||||||
@ -121,6 +122,6 @@ func (c *RESTClient) Delete() *Request {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// APIVersion returns the APIVersion this RESTClient is expected to use.
|
// APIVersion returns the APIVersion this RESTClient is expected to use.
|
||||||
func (c *RESTClient) APIVersion() string {
|
func (c *RESTClient) APIVersion() unversioned.GroupVersion {
|
||||||
return c.apiVersion
|
return c.groupVersion
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user