mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	revert backward compatibility hacks (36004, 32751) that are no-longer needed in 1.6
This commit is contained in:
		@@ -61,9 +61,7 @@ go_library(
 | 
				
			|||||||
        "//pkg/util/net:go_default_library",
 | 
					        "//pkg/util/net:go_default_library",
 | 
				
			||||||
        "//pkg/util/proxy:go_default_library",
 | 
					        "//pkg/util/proxy:go_default_library",
 | 
				
			||||||
        "//pkg/util/runtime:go_default_library",
 | 
					        "//pkg/util/runtime:go_default_library",
 | 
				
			||||||
        "//pkg/util/sets:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/util/strategicpatch:go_default_library",
 | 
					        "//pkg/util/strategicpatch:go_default_library",
 | 
				
			||||||
        "//pkg/util/version:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/util/wsstream:go_default_library",
 | 
					        "//pkg/util/wsstream:go_default_library",
 | 
				
			||||||
        "//pkg/watch:go_default_library",
 | 
					        "//pkg/watch:go_default_library",
 | 
				
			||||||
        "//pkg/watch/versioned:go_default_library",
 | 
					        "//pkg/watch/versioned:go_default_library",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,14 +18,11 @@ package handlers
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"net/http"
 | 
						"net/http"
 | 
				
			||||||
	"strings"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
 | 
						metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/apiserver/handlers/responsewriters"
 | 
						"k8s.io/kubernetes/pkg/apiserver/handlers/responsewriters"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime"
 | 
						"k8s.io/kubernetes/pkg/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/runtime/schema"
 | 
						"k8s.io/kubernetes/pkg/runtime/schema"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/sets"
 | 
					 | 
				
			||||||
	utilversion "k8s.io/kubernetes/pkg/util/version"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/emicklei/go-restful"
 | 
						"github.com/emicklei/go-restful"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -37,7 +34,7 @@ type APIResourceLister interface {
 | 
				
			|||||||
// RootAPIHandler returns a handler which will list the provided groups and versions as available.
 | 
					// RootAPIHandler returns a handler which will list the provided groups and versions as available.
 | 
				
			||||||
func RootAPIHandler(s runtime.NegotiatedSerializer, f func(req *restful.Request) []metav1.APIGroup) restful.RouteFunction {
 | 
					func RootAPIHandler(s runtime.NegotiatedSerializer, f func(req *restful.Request) []metav1.APIGroup) restful.RouteFunction {
 | 
				
			||||||
	return func(req *restful.Request, resp *restful.Response) {
 | 
						return func(req *restful.Request, resp *restful.Response) {
 | 
				
			||||||
		responsewriters.WriteObjectNegotiated(s, schema.GroupVersion{}, resp.ResponseWriter, req.Request, http.StatusOK, &metav1.APIGroupList{Groups: filterAPIGroups(req, f(req))})
 | 
							responsewriters.WriteObjectNegotiated(s, schema.GroupVersion{}, resp.ResponseWriter, req.Request, http.StatusOK, &metav1.APIGroupList{Groups: f(req)})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -55,41 +52,3 @@ func SupportedResourcesHandler(s runtime.NegotiatedSerializer, groupVersion sche
 | 
				
			|||||||
		responsewriters.WriteObjectNegotiated(s, schema.GroupVersion{}, resp.ResponseWriter, req.Request, http.StatusOK, &metav1.APIResourceList{GroupVersion: groupVersion.String(), APIResources: lister.ListAPIResources()})
 | 
							responsewriters.WriteObjectNegotiated(s, schema.GroupVersion{}, resp.ResponseWriter, req.Request, http.StatusOK, &metav1.APIResourceList{GroupVersion: groupVersion.String(), APIResources: lister.ListAPIResources()})
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
// TODO: Remove in 1.6. This is for backward compatibility with 1.4 kubectl.
 | 
					 | 
				
			||||||
// See https://github.com/kubernetes/kubernetes/issues/35791
 | 
					 | 
				
			||||||
var groupsWithNewVersionsIn1_5 = sets.NewString("apps", "policy")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TODO: Remove in 1.6.
 | 
					 | 
				
			||||||
func filterAPIGroups(req *restful.Request, groups []metav1.APIGroup) []metav1.APIGroup {
 | 
					 | 
				
			||||||
	if !isOldKubectl(req.HeaderParameter("User-Agent")) {
 | 
					 | 
				
			||||||
		return groups
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	// hide API group that has new versions added in 1.5.
 | 
					 | 
				
			||||||
	var ret []metav1.APIGroup
 | 
					 | 
				
			||||||
	for _, group := range groups {
 | 
					 | 
				
			||||||
		if groupsWithNewVersionsIn1_5.Has(group.Name) {
 | 
					 | 
				
			||||||
			continue
 | 
					 | 
				
			||||||
		}
 | 
					 | 
				
			||||||
		ret = append(ret, group)
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return ret
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// TODO: Remove in 1.6. Returns if kubectl is older than v1.5.0
 | 
					 | 
				
			||||||
func isOldKubectl(userAgent string) bool {
 | 
					 | 
				
			||||||
	// example userAgent string: kubectl-1.3/v1.3.8 (linux/amd64) kubernetes/e328d5b
 | 
					 | 
				
			||||||
	if !strings.Contains(userAgent, "kubectl") {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	userAgent = strings.Split(userAgent, " ")[0]
 | 
					 | 
				
			||||||
	subs := strings.Split(userAgent, "/")
 | 
					 | 
				
			||||||
	if len(subs) != 2 {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	kubectlVersion, versionErr := utilversion.ParseSemantic(subs[1])
 | 
					 | 
				
			||||||
	if versionErr != nil {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return kubectlVersion.LessThan(utilversion.MustParseSemantic("v1.5.0"))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -37,7 +37,6 @@ go_library(
 | 
				
			|||||||
        "//pkg/storage/storagebackend/factory:go_default_library",
 | 
					        "//pkg/storage/storagebackend/factory:go_default_library",
 | 
				
			||||||
        "//pkg/util/runtime:go_default_library",
 | 
					        "//pkg/util/runtime:go_default_library",
 | 
				
			||||||
        "//pkg/util/validation/field:go_default_library",
 | 
					        "//pkg/util/validation/field:go_default_library",
 | 
				
			||||||
        "//pkg/util/version:go_default_library",
 | 
					 | 
				
			||||||
        "//pkg/watch:go_default_library",
 | 
					        "//pkg/watch:go_default_library",
 | 
				
			||||||
        "//vendor:github.com/golang/glog",
 | 
					        "//vendor:github.com/golang/glog",
 | 
				
			||||||
        "//vendor:golang.org/x/net/context",
 | 
					        "//vendor:golang.org/x/net/context",
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -39,7 +39,6 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/storage"
 | 
						"k8s.io/kubernetes/pkg/storage"
 | 
				
			||||||
	utilruntime "k8s.io/kubernetes/pkg/util/runtime"
 | 
						utilruntime "k8s.io/kubernetes/pkg/util/runtime"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/validation/field"
 | 
						"k8s.io/kubernetes/pkg/util/validation/field"
 | 
				
			||||||
	utilversion "k8s.io/kubernetes/pkg/util/version"
 | 
					 | 
				
			||||||
	"k8s.io/kubernetes/pkg/watch"
 | 
						"k8s.io/kubernetes/pkg/watch"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	"github.com/golang/glog"
 | 
						"github.com/golang/glog"
 | 
				
			||||||
@@ -223,25 +222,6 @@ func (e *Store) ListPredicate(ctx api.Context, p storage.SelectionPredicate, opt
 | 
				
			|||||||
	return list, storeerr.InterpretListError(err, e.QualifiedResource)
 | 
						return list, storeerr.InterpretListError(err, e.QualifiedResource)
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// TODO: remove this function after 1.6
 | 
					 | 
				
			||||||
// returns if the user agent is is kubectl older than v1.4.0
 | 
					 | 
				
			||||||
func isOldKubectl(userAgent string) bool {
 | 
					 | 
				
			||||||
	// example userAgent string: kubectl-1.3/v1.3.8 (linux/amd64) kubernetes/e328d5b
 | 
					 | 
				
			||||||
	if !strings.Contains(userAgent, "kubectl") {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	userAgent = strings.Split(userAgent, " ")[0]
 | 
					 | 
				
			||||||
	subs := strings.Split(userAgent, "/")
 | 
					 | 
				
			||||||
	if len(subs) != 2 {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	kubectlVersion, versionErr := utilversion.ParseSemantic(subs[1])
 | 
					 | 
				
			||||||
	if versionErr != nil {
 | 
					 | 
				
			||||||
		return false
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	return kubectlVersion.LessThan(utilversion.MustParseSemantic("v1.4.0"))
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
// Create inserts a new item according to the unique key from the object.
 | 
					// Create inserts a new item according to the unique key from the object.
 | 
				
			||||||
func (e *Store) Create(ctx api.Context, obj runtime.Object) (runtime.Object, error) {
 | 
					func (e *Store) Create(ctx api.Context, obj runtime.Object) (runtime.Object, error) {
 | 
				
			||||||
	if err := rest.BeforeCreate(e.CreateStrategy, ctx, obj); err != nil {
 | 
						if err := rest.BeforeCreate(e.CreateStrategy, ctx, obj); err != nil {
 | 
				
			||||||
@@ -276,15 +256,6 @@ func (e *Store) Create(ctx api.Context, obj runtime.Object) (runtime.Object, err
 | 
				
			|||||||
		if accessor.GetDeletionTimestamp() != nil {
 | 
							if accessor.GetDeletionTimestamp() != nil {
 | 
				
			||||||
			msg := &err.(*kubeerr.StatusError).ErrStatus.Message
 | 
								msg := &err.(*kubeerr.StatusError).ErrStatus.Message
 | 
				
			||||||
			*msg = fmt.Sprintf("object is being deleted: %s", *msg)
 | 
								*msg = fmt.Sprintf("object is being deleted: %s", *msg)
 | 
				
			||||||
			// TODO: remove this block after 1.6
 | 
					 | 
				
			||||||
			userAgent, _ := api.UserAgentFrom(ctx)
 | 
					 | 
				
			||||||
			if !isOldKubectl(userAgent) {
 | 
					 | 
				
			||||||
				return nil, err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			if e.QualifiedResource.Resource != "replicationcontrollers" {
 | 
					 | 
				
			||||||
				return nil, err
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
			*msg = fmt.Sprintf("%s: if you're using \"kubectl rolling-update\" with kubectl version older than v1.4.0, your rolling update has failed, though the pods are correctly updated. Please see https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG.md#kubectl-rolling-update for a workaround", *msg)
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		return nil, err
 | 
							return nil, err
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user