mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-04 18:00:08 +00:00
Drop version-parsing from pkg/version
pkg/version is now just version constants, etc, not version parsing
This commit is contained in:
parent
d95181fa1e
commit
f369372dad
@ -52,8 +52,8 @@ go_library(
|
|||||||
"//pkg/util/sets:go_default_library",
|
"//pkg/util/sets:go_default_library",
|
||||||
"//pkg/util/strategicpatch:go_default_library",
|
"//pkg/util/strategicpatch:go_default_library",
|
||||||
"//pkg/util/strings:go_default_library",
|
"//pkg/util/strings:go_default_library",
|
||||||
|
"//pkg/util/version:go_default_library",
|
||||||
"//pkg/util/wsstream:go_default_library",
|
"//pkg/util/wsstream:go_default_library",
|
||||||
"//pkg/version: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",
|
||||||
"//vendor:bitbucket.org/ww/goautoneg",
|
"//vendor:bitbucket.org/ww/goautoneg",
|
||||||
|
@ -43,8 +43,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/util/flushwriter"
|
"k8s.io/kubernetes/pkg/util/flushwriter"
|
||||||
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
"k8s.io/kubernetes/pkg/util/wsstream"
|
"k8s.io/kubernetes/pkg/util/wsstream"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
|
|
||||||
"github.com/emicklei/go-restful"
|
"github.com/emicklei/go-restful"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
@ -358,11 +358,11 @@ func isOldKubectl(userAgent string) bool {
|
|||||||
if len(subs) != 2 {
|
if len(subs) != 2 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
kubectlVersion, versionErr := version.Parse(subs[1])
|
kubectlVersion, versionErr := utilversion.ParseSemantic(subs[1])
|
||||||
if versionErr != nil {
|
if versionErr != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return kubectlVersion.LT(version.MustParse("v1.5.0"))
|
return kubectlVersion.LessThan(utilversion.MustParseSemantic("v1.5.0"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Remove in 1.6. This is for backward compatibility with 1.4 kubectl.
|
// TODO: Remove in 1.6. This is for backward compatibility with 1.4 kubectl.
|
||||||
|
@ -42,8 +42,8 @@ go_library(
|
|||||||
"//pkg/util/runtime:go_default_library",
|
"//pkg/util/runtime:go_default_library",
|
||||||
"//pkg/util/sets:go_default_library",
|
"//pkg/util/sets:go_default_library",
|
||||||
"//pkg/util/system:go_default_library",
|
"//pkg/util/system:go_default_library",
|
||||||
|
"//pkg/util/version:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
"//pkg/version:go_default_library",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:github.com/prometheus/client_golang/prometheus",
|
"//vendor:github.com/prometheus/client_golang/prometheus",
|
||||||
],
|
],
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
utilerrors "k8s.io/kubernetes/pkg/util/errors"
|
||||||
"k8s.io/kubernetes/pkg/util/node"
|
"k8s.io/kubernetes/pkg/util/node"
|
||||||
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
@ -178,13 +178,13 @@ func (nc *NodeController) maybeDeleteTerminatingPod(obj interface{}) {
|
|||||||
// guarantee backwards compatibility of master API to kubelets with
|
// guarantee backwards compatibility of master API to kubelets with
|
||||||
// versions less than 1.1.0
|
// versions less than 1.1.0
|
||||||
node := nodeObj.(*v1.Node)
|
node := nodeObj.(*v1.Node)
|
||||||
v, err := version.Parse(node.Status.NodeInfo.KubeletVersion)
|
v, err := utilversion.ParseSemantic(node.Status.NodeInfo.KubeletVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.V(0).Infof("couldn't parse verions %q of minion: %v", node.Status.NodeInfo.KubeletVersion, err)
|
glog.V(0).Infof("couldn't parse verions %q of minion: %v", node.Status.NodeInfo.KubeletVersion, err)
|
||||||
utilruntime.HandleError(nc.forcefullyDeletePod(pod))
|
utilruntime.HandleError(nc.forcefullyDeletePod(pod))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if gracefulDeletionVersion.GT(v) {
|
if v.LessThan(gracefulDeletionVersion) {
|
||||||
utilruntime.HandleError(nc.forcefullyDeletePod(pod))
|
utilruntime.HandleError(nc.forcefullyDeletePod(pod))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -239,12 +239,12 @@ func markAllPodsNotReady(kubeClient clientset.Interface, node *v1.Node) error {
|
|||||||
// Older versions were inflexible and modifying pod.Status directly through
|
// Older versions were inflexible and modifying pod.Status directly through
|
||||||
// the apiserver would result in unexpected outcomes.
|
// the apiserver would result in unexpected outcomes.
|
||||||
func nodeRunningOutdatedKubelet(node *v1.Node) bool {
|
func nodeRunningOutdatedKubelet(node *v1.Node) bool {
|
||||||
v, err := version.Parse(node.Status.NodeInfo.KubeletVersion)
|
v, err := utilversion.ParseSemantic(node.Status.NodeInfo.KubeletVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("couldn't parse version %q of node %v", node.Status.NodeInfo.KubeletVersion, err)
|
glog.Errorf("couldn't parse version %q of node %v", node.Status.NodeInfo.KubeletVersion, err)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
if podStatusReconciliationVersion.GT(v) {
|
if v.LessThan(podStatusReconciliationVersion) {
|
||||||
glog.Infof("Node %v running kubelet at (%v) which is less than the minimum version that allows nodecontroller to mark pods NotReady (%v).", node.Name, v, podStatusReconciliationVersion)
|
glog.Infof("Node %v running kubelet at (%v) which is less than the minimum version that allows nodecontroller to mark pods NotReady (%v).", node.Name, v, podStatusReconciliationVersion)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
@ -41,8 +41,8 @@ import (
|
|||||||
utilnode "k8s.io/kubernetes/pkg/util/node"
|
utilnode "k8s.io/kubernetes/pkg/util/node"
|
||||||
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
||||||
"k8s.io/kubernetes/pkg/util/system"
|
"k8s.io/kubernetes/pkg/util/system"
|
||||||
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
@ -52,11 +52,11 @@ func init() {
|
|||||||
|
|
||||||
var (
|
var (
|
||||||
ErrCloudInstance = errors.New("cloud provider doesn't support instances.")
|
ErrCloudInstance = errors.New("cloud provider doesn't support instances.")
|
||||||
gracefulDeletionVersion = version.MustParse("v1.1.0")
|
gracefulDeletionVersion = utilversion.MustParseSemantic("v1.1.0")
|
||||||
|
|
||||||
// The minimum kubelet version for which the nodecontroller
|
// The minimum kubelet version for which the nodecontroller
|
||||||
// can safely flip pod.Status to NotReady.
|
// can safely flip pod.Status to NotReady.
|
||||||
podStatusReconciliationVersion = version.MustParse("v1.2.0")
|
podStatusReconciliationVersion = utilversion.MustParseSemantic("v1.2.0")
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
@ -37,7 +37,7 @@ 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/version: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,7 @@ 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"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
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"
|
||||||
@ -235,11 +235,11 @@ func isOldKubectl(userAgent string) bool {
|
|||||||
if len(subs) != 2 {
|
if len(subs) != 2 {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
kubectlVersion, versionErr := version.Parse(subs[1])
|
kubectlVersion, versionErr := utilversion.ParseSemantic(subs[1])
|
||||||
if versionErr != nil {
|
if versionErr != nil {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
return kubectlVersion.LT(version.MustParse("v1.4.0"))
|
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.
|
||||||
|
@ -5,7 +5,6 @@ licenses(["notice"])
|
|||||||
load(
|
load(
|
||||||
"@io_bazel_rules_go//go:def.bzl",
|
"@io_bazel_rules_go//go:def.bzl",
|
||||||
"go_library",
|
"go_library",
|
||||||
"go_test",
|
|
||||||
)
|
)
|
||||||
|
|
||||||
go_library(
|
go_library(
|
||||||
@ -13,20 +12,7 @@ go_library(
|
|||||||
srcs = [
|
srcs = [
|
||||||
"base.go",
|
"base.go",
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"semver.go",
|
|
||||||
"version.go",
|
"version.go",
|
||||||
],
|
],
|
||||||
tags = ["automanaged"],
|
tags = ["automanaged"],
|
||||||
deps = [
|
|
||||||
"//vendor:github.com/blang/semver",
|
|
||||||
"//vendor:github.com/golang/glog",
|
|
||||||
],
|
|
||||||
)
|
|
||||||
|
|
||||||
go_test(
|
|
||||||
name = "go_default_test",
|
|
||||||
srcs = ["semver_test.go"],
|
|
||||||
library = "go_default_library",
|
|
||||||
tags = ["automanaged"],
|
|
||||||
deps = [],
|
|
||||||
)
|
)
|
||||||
|
@ -1,50 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 The Kubernetes Authors.
|
|
||||||
|
|
||||||
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 version
|
|
||||||
|
|
||||||
import (
|
|
||||||
"strings"
|
|
||||||
"unicode"
|
|
||||||
|
|
||||||
"github.com/blang/semver"
|
|
||||||
"github.com/golang/glog"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Parse(gitversion string) (semver.Version, error) {
|
|
||||||
// optionally trim leading spaces then one v
|
|
||||||
var seen bool
|
|
||||||
gitversion = strings.TrimLeftFunc(gitversion, func(ch rune) bool {
|
|
||||||
if seen {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
if ch == 'v' {
|
|
||||||
seen = true
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return unicode.IsSpace(ch)
|
|
||||||
})
|
|
||||||
|
|
||||||
return semver.Make(gitversion)
|
|
||||||
}
|
|
||||||
|
|
||||||
func MustParse(gitversion string) semver.Version {
|
|
||||||
v, err := Parse(gitversion)
|
|
||||||
if err != nil {
|
|
||||||
glog.Fatalf("failed to parse semver from gitversion %q: %v", gitversion, err)
|
|
||||||
}
|
|
||||||
return v
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
/*
|
|
||||||
Copyright 2015 The Kubernetes Authors.
|
|
||||||
|
|
||||||
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 version
|
|
||||||
|
|
||||||
import "testing"
|
|
||||||
|
|
||||||
func TestParseVersion(t *testing.T) {
|
|
||||||
cases := []struct {
|
|
||||||
version string
|
|
||||||
expectErr bool
|
|
||||||
}{
|
|
||||||
{version: "v1.0.1-alpha"},
|
|
||||||
{version: "v0.19.3"},
|
|
||||||
{version: "0.19.3"},
|
|
||||||
{version: "v1.2.0-alpha.3.1264+0655e65b435106-dirty"},
|
|
||||||
{version: "1.2.0-alpha.3.1264+0655e65b435106-dirty"},
|
|
||||||
{version: "1.2.0-alpha.3.1264+0655e65b435106-dirty"},
|
|
||||||
{version: "1.0.0"},
|
|
||||||
{version: "\t v1.0.0"},
|
|
||||||
{version: "vv1.0.0", expectErr: true},
|
|
||||||
{version: "blah1.0.0", expectErr: true},
|
|
||||||
}
|
|
||||||
|
|
||||||
for i, c := range cases {
|
|
||||||
_, err := Parse(c.version)
|
|
||||||
if err != nil && !c.expectErr {
|
|
||||||
t.Errorf("[%v]unexpected error: %v", i, err)
|
|
||||||
}
|
|
||||||
if err == nil && c.expectErr {
|
|
||||||
t.Errorf("[%v]expected error for %s", i, c.version)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -175,10 +175,10 @@ go_library(
|
|||||||
"//pkg/util/sets:go_default_library",
|
"//pkg/util/sets:go_default_library",
|
||||||
"//pkg/util/system:go_default_library",
|
"//pkg/util/system:go_default_library",
|
||||||
"//pkg/util/uuid:go_default_library",
|
"//pkg/util/uuid:go_default_library",
|
||||||
|
"//pkg/util/version:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
"//pkg/util/workqueue:go_default_library",
|
"//pkg/util/workqueue:go_default_library",
|
||||||
"//pkg/util/yaml:go_default_library",
|
"//pkg/util/yaml:go_default_library",
|
||||||
"//pkg/version:go_default_library",
|
|
||||||
"//pkg/volume/util/volumehelper:go_default_library",
|
"//pkg/volume/util/volumehelper:go_default_library",
|
||||||
"//pkg/watch:go_default_library",
|
"//pkg/watch:go_default_library",
|
||||||
"//plugin/pkg/admission/serviceaccount:go_default_library",
|
"//plugin/pkg/admission/serviceaccount:go_default_library",
|
||||||
|
@ -79,14 +79,13 @@ go_library(
|
|||||||
"//pkg/util/system:go_default_library",
|
"//pkg/util/system:go_default_library",
|
||||||
"//pkg/util/uuid:go_default_library",
|
"//pkg/util/uuid:go_default_library",
|
||||||
"//pkg/util/validation:go_default_library",
|
"//pkg/util/validation:go_default_library",
|
||||||
|
"//pkg/util/version:go_default_library",
|
||||||
"//pkg/util/wait:go_default_library",
|
"//pkg/util/wait:go_default_library",
|
||||||
"//pkg/version:go_default_library",
|
|
||||||
"//pkg/watch:go_default_library",
|
"//pkg/watch:go_default_library",
|
||||||
"//plugin/pkg/scheduler/algorithm/predicates:go_default_library",
|
"//plugin/pkg/scheduler/algorithm/predicates:go_default_library",
|
||||||
"//plugin/pkg/scheduler/schedulercache:go_default_library",
|
"//plugin/pkg/scheduler/schedulercache:go_default_library",
|
||||||
"//test/e2e/perftype:go_default_library",
|
"//test/e2e/perftype:go_default_library",
|
||||||
"//test/utils:go_default_library",
|
"//test/utils:go_default_library",
|
||||||
"//vendor:github.com/blang/semver",
|
|
||||||
"//vendor:github.com/golang/glog",
|
"//vendor:github.com/golang/glog",
|
||||||
"//vendor:github.com/google/cadvisor/info/v1",
|
"//vendor:github.com/google/cadvisor/info/v1",
|
||||||
"//vendor:github.com/onsi/ginkgo",
|
"//vendor:github.com/onsi/ginkgo",
|
||||||
|
@ -40,7 +40,6 @@ import (
|
|||||||
"text/tabwriter"
|
"text/tabwriter"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/blang/semver"
|
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
"golang.org/x/crypto/ssh"
|
"golang.org/x/crypto/ssh"
|
||||||
"golang.org/x/net/websocket"
|
"golang.org/x/net/websocket"
|
||||||
@ -86,8 +85,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/util/sets"
|
"k8s.io/kubernetes/pkg/util/sets"
|
||||||
"k8s.io/kubernetes/pkg/util/system"
|
"k8s.io/kubernetes/pkg/util/system"
|
||||||
"k8s.io/kubernetes/pkg/util/uuid"
|
"k8s.io/kubernetes/pkg/util/uuid"
|
||||||
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
"k8s.io/kubernetes/pkg/watch"
|
"k8s.io/kubernetes/pkg/watch"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates"
|
||||||
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
|
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
|
||||||
@ -233,8 +232,8 @@ func GetPauseImageNameForHostArch() string {
|
|||||||
//
|
//
|
||||||
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively
|
||||||
// in v1.3).
|
// in v1.3).
|
||||||
var SubResourcePodProxyVersion = version.MustParse("v1.1.0")
|
var SubResourcePodProxyVersion = utilversion.MustParseSemantic("v1.1.0")
|
||||||
var subResourceServiceAndNodeProxyVersion = version.MustParse("v1.2.0")
|
var subResourceServiceAndNodeProxyVersion = utilversion.MustParseSemantic("v1.2.0")
|
||||||
|
|
||||||
func GetServicesProxyRequest(c clientset.Interface, request *restclient.Request) (*restclient.Request, error) {
|
func GetServicesProxyRequest(c clientset.Interface, request *restclient.Request) (*restclient.Request, error) {
|
||||||
subResourceProxyAvailable, err := ServerVersionGTE(subResourceServiceAndNodeProxyVersion, c.Discovery())
|
subResourceProxyAvailable, err := ServerVersionGTE(subResourceServiceAndNodeProxyVersion, c.Discovery())
|
||||||
@ -349,7 +348,7 @@ func NodeOSDistroIs(supportedNodeOsDistros ...string) bool {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func SkipUnlessServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface) {
|
func SkipUnlessServerVersionGTE(v *utilversion.Version, c discovery.ServerVersionInterface) {
|
||||||
gte, err := ServerVersionGTE(v, c)
|
gte, err := ServerVersionGTE(v, c)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Failf("Failed to get server version: %v", err)
|
Failf("Failed to get server version: %v", err)
|
||||||
@ -500,7 +499,7 @@ func WaitForPodsSuccess(c clientset.Interface, ns string, successPodLabels map[s
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var ReadyReplicaVersion = version.MustParse("v1.4.0")
|
var ReadyReplicaVersion = utilversion.MustParseSemantic("v1.4.0")
|
||||||
|
|
||||||
// WaitForPodsRunningReady waits up to timeout to ensure that all pods in
|
// WaitForPodsRunningReady waits up to timeout to ensure that all pods in
|
||||||
// namespace ns are either running and ready, or failed but controlled by a
|
// namespace ns are either running and ready, or failed but controlled by a
|
||||||
@ -1623,19 +1622,19 @@ func (r podProxyResponseChecker) CheckAllResponses() (done bool, err error) {
|
|||||||
// version.
|
// version.
|
||||||
//
|
//
|
||||||
// TODO(18726): This should be incorporated into client.VersionInterface.
|
// TODO(18726): This should be incorporated into client.VersionInterface.
|
||||||
func ServerVersionGTE(v semver.Version, c discovery.ServerVersionInterface) (bool, error) {
|
func ServerVersionGTE(v *utilversion.Version, c discovery.ServerVersionInterface) (bool, error) {
|
||||||
serverVersion, err := c.ServerVersion()
|
serverVersion, err := c.ServerVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Unable to get server version: %v", err)
|
return false, fmt.Errorf("Unable to get server version: %v", err)
|
||||||
}
|
}
|
||||||
sv, err := version.Parse(serverVersion.GitVersion)
|
sv, err := utilversion.ParseSemantic(serverVersion.GitVersion)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, fmt.Errorf("Unable to parse server version %q: %v", serverVersion.GitVersion, err)
|
return false, fmt.Errorf("Unable to parse server version %q: %v", serverVersion.GitVersion, err)
|
||||||
}
|
}
|
||||||
return sv.GTE(v), nil
|
return sv.AtLeast(v), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func SkipUnlessKubectlVersionGTE(v semver.Version) {
|
func SkipUnlessKubectlVersionGTE(v *utilversion.Version) {
|
||||||
gte, err := KubectlVersionGTE(v)
|
gte, err := KubectlVersionGTE(v)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
Failf("Failed to get kubectl version: %v", err)
|
Failf("Failed to get kubectl version: %v", err)
|
||||||
@ -1647,25 +1646,25 @@ func SkipUnlessKubectlVersionGTE(v semver.Version) {
|
|||||||
|
|
||||||
// KubectlVersionGTE returns true if the kubectl version is greater than or
|
// KubectlVersionGTE returns true if the kubectl version is greater than or
|
||||||
// equal to v.
|
// equal to v.
|
||||||
func KubectlVersionGTE(v semver.Version) (bool, error) {
|
func KubectlVersionGTE(v *utilversion.Version) (bool, error) {
|
||||||
kv, err := KubectlVersion()
|
kv, err := KubectlVersion()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false, err
|
return false, err
|
||||||
}
|
}
|
||||||
return kv.GTE(v), nil
|
return kv.AtLeast(v), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// KubectlVersion gets the version of kubectl that's currently being used (see
|
// KubectlVersion gets the version of kubectl that's currently being used (see
|
||||||
// --kubectl-path in e2e.go to use an alternate kubectl).
|
// --kubectl-path in e2e.go to use an alternate kubectl).
|
||||||
func KubectlVersion() (semver.Version, error) {
|
func KubectlVersion() (*utilversion.Version, error) {
|
||||||
output := RunKubectlOrDie("version", "--client")
|
output := RunKubectlOrDie("version", "--client")
|
||||||
matches := gitVersionRegexp.FindStringSubmatch(output)
|
matches := gitVersionRegexp.FindStringSubmatch(output)
|
||||||
if len(matches) != 2 {
|
if len(matches) != 2 {
|
||||||
return semver.Version{}, fmt.Errorf("Could not find kubectl version in output %v", output)
|
return nil, fmt.Errorf("Could not find kubectl version in output %v", output)
|
||||||
}
|
}
|
||||||
// Don't use the full match, as it contains "GitVersion:\"" and a
|
// Don't use the full match, as it contains "GitVersion:\"" and a
|
||||||
// trailing "\"". Just use the submatch.
|
// trailing "\"". Just use the submatch.
|
||||||
return version.Parse(matches[1])
|
return utilversion.ParseSemantic(matches[1])
|
||||||
}
|
}
|
||||||
|
|
||||||
func PodsResponding(c clientset.Interface, ns, name string, wantName bool, pods *v1.PodList) error {
|
func PodsResponding(c clientset.Interface, ns, name string, wantName bool, pods *v1.PodList) error {
|
||||||
|
@ -54,8 +54,8 @@ import (
|
|||||||
uexec "k8s.io/kubernetes/pkg/util/exec"
|
uexec "k8s.io/kubernetes/pkg/util/exec"
|
||||||
utilnet "k8s.io/kubernetes/pkg/util/net"
|
utilnet "k8s.io/kubernetes/pkg/util/net"
|
||||||
"k8s.io/kubernetes/pkg/util/uuid"
|
"k8s.io/kubernetes/pkg/util/uuid"
|
||||||
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
"k8s.io/kubernetes/test/e2e/generated"
|
"k8s.io/kubernetes/test/e2e/generated"
|
||||||
testutils "k8s.io/kubernetes/test/utils"
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
@ -101,39 +101,39 @@ var (
|
|||||||
// that rely on extended pod logging options to work on clusters before that.
|
// that rely on extended pod logging options to work on clusters before that.
|
||||||
//
|
//
|
||||||
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
||||||
extendedPodLogFilterVersion = version.MustParse("v1.1.0")
|
extendedPodLogFilterVersion = utilversion.MustParseSemantic("v1.1.0")
|
||||||
|
|
||||||
// NodePorts were made optional in #12831 (v1.1.0) so we don't expect tests that used to
|
// NodePorts were made optional in #12831 (v1.1.0) so we don't expect tests that used to
|
||||||
// require NodePorts but no longer include them to work on clusters before that.
|
// require NodePorts but no longer include them to work on clusters before that.
|
||||||
//
|
//
|
||||||
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
||||||
nodePortsOptionalVersion = version.MustParse("v1.1.0")
|
nodePortsOptionalVersion = utilversion.MustParseSemantic("v1.1.0")
|
||||||
|
|
||||||
// Jobs were introduced in v1.1, so we don't expect tests that rely on jobs to work on
|
// Jobs were introduced in v1.1, so we don't expect tests that rely on jobs to work on
|
||||||
// clusters before that.
|
// clusters before that.
|
||||||
//
|
//
|
||||||
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
// TODO(ihmccreery): remove once we don't care about v1.0 anymore, (tentatively in v1.3).
|
||||||
jobsVersion = version.MustParse("v1.1.0")
|
jobsVersion = utilversion.MustParseSemantic("v1.1.0")
|
||||||
|
|
||||||
// Deployments were introduced by default in v1.2, so we don't expect tests that rely on
|
// Deployments were introduced by default in v1.2, so we don't expect tests that rely on
|
||||||
// deployments to work on clusters before that.
|
// deployments to work on clusters before that.
|
||||||
//
|
//
|
||||||
// TODO(ihmccreery): remove once we don't care about v1.1 anymore, (tentatively in v1.4).
|
// TODO(ihmccreery): remove once we don't care about v1.1 anymore, (tentatively in v1.4).
|
||||||
deploymentsVersion = version.MustParse("v1.2.0-alpha.7.726")
|
deploymentsVersion = utilversion.MustParseSemantic("v1.2.0-alpha.7.726")
|
||||||
|
|
||||||
// Pod probe parameters were introduced in #15967 (v1.2) so we don't expect tests that use
|
// Pod probe parameters were introduced in #15967 (v1.2) so we don't expect tests that use
|
||||||
// these probe parameters to work on clusters before that.
|
// these probe parameters to work on clusters before that.
|
||||||
//
|
//
|
||||||
// TODO(ihmccreery): remove once we don't care about v1.1 anymore, (tentatively in v1.4).
|
// TODO(ihmccreery): remove once we don't care about v1.1 anymore, (tentatively in v1.4).
|
||||||
podProbeParametersVersion = version.MustParse("v1.2.0-alpha.4")
|
podProbeParametersVersion = utilversion.MustParseSemantic("v1.2.0-alpha.4")
|
||||||
|
|
||||||
// 'kubectl create quota' was introduced in #28351 (v1.4) so we don't expect tests that use
|
// 'kubectl create quota' was introduced in #28351 (v1.4) so we don't expect tests that use
|
||||||
// 'kubectl create quota' to work on kubectl clients before that.
|
// 'kubectl create quota' to work on kubectl clients before that.
|
||||||
kubectlCreateQuotaVersion = version.MustParse("v1.4.0-alpha.2")
|
kubectlCreateQuotaVersion = utilversion.MustParseSemantic("v1.4.0-alpha.2")
|
||||||
|
|
||||||
// Returning container command exit codes in kubectl run/exec was introduced in #26541 (v1.4)
|
// Returning container command exit codes in kubectl run/exec was introduced in #26541 (v1.4)
|
||||||
// so we don't expect tests that verifies return code to work on kubectl clients before that.
|
// so we don't expect tests that verifies return code to work on kubectl clients before that.
|
||||||
kubectlContainerExitCodeVersion = version.MustParse("v1.4.0-alpha.3")
|
kubectlContainerExitCodeVersion = utilversion.MustParseSemantic("v1.4.0-alpha.3")
|
||||||
)
|
)
|
||||||
|
|
||||||
// Stops everything from filePath from namespace ns and checks if everything matching selectors from the given namespace is correctly stopped.
|
// Stops everything from filePath from namespace ns and checks if everything matching selectors from the given namespace is correctly stopped.
|
||||||
|
@ -29,8 +29,8 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
testutils "k8s.io/kubernetes/test/utils"
|
testutils "k8s.io/kubernetes/test/utils"
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ const (
|
|||||||
// TODO support other ports besides 80
|
// TODO support other ports besides 80
|
||||||
var (
|
var (
|
||||||
portForwardRegexp = regexp.MustCompile("Forwarding from 127.0.0.1:([0-9]+) -> 80")
|
portForwardRegexp = regexp.MustCompile("Forwarding from 127.0.0.1:([0-9]+) -> 80")
|
||||||
portForwardPortToStdOutV = version.MustParse("v1.3.0-alpha.4")
|
portForwardPortToStdOutV = utilversion.MustParseSemantic("v1.3.0-alpha.4")
|
||||||
)
|
)
|
||||||
|
|
||||||
func pfPod(expectedClientData, chunks, chunkSize, chunkIntervalMillis string) *v1.Pod {
|
func pfPod(expectedClientData, chunks, chunkSize, chunkIntervalMillis string) *v1.Pod {
|
||||||
|
@ -24,8 +24,8 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/api/v1"
|
"k8s.io/kubernetes/pkg/api/v1"
|
||||||
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
metav1 "k8s.io/kubernetes/pkg/apis/meta/v1"
|
||||||
"k8s.io/kubernetes/pkg/util/uuid"
|
"k8s.io/kubernetes/pkg/util/uuid"
|
||||||
|
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||||
"k8s.io/kubernetes/pkg/util/wait"
|
"k8s.io/kubernetes/pkg/util/wait"
|
||||||
"k8s.io/kubernetes/pkg/version"
|
|
||||||
"k8s.io/kubernetes/plugin/pkg/admission/serviceaccount"
|
"k8s.io/kubernetes/plugin/pkg/admission/serviceaccount"
|
||||||
"k8s.io/kubernetes/test/e2e/framework"
|
"k8s.io/kubernetes/test/e2e/framework"
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ import (
|
|||||||
. "github.com/onsi/gomega"
|
. "github.com/onsi/gomega"
|
||||||
)
|
)
|
||||||
|
|
||||||
var serviceAccountTokenNamespaceVersion = version.MustParse("v1.2.0")
|
var serviceAccountTokenNamespaceVersion = utilversion.MustParseSemantic("v1.2.0")
|
||||||
|
|
||||||
var _ = framework.KubeDescribe("ServiceAccounts", func() {
|
var _ = framework.KubeDescribe("ServiceAccounts", func() {
|
||||||
f := framework.NewDefaultFramework("svcaccounts")
|
f := framework.NewDefaultFramework("svcaccounts")
|
||||||
|
@ -877,7 +877,6 @@ k8s.io/kubernetes/pkg/util/wait,Q-Lee,1
|
|||||||
k8s.io/kubernetes/pkg/util/workqueue,mtaufen,1
|
k8s.io/kubernetes/pkg/util/workqueue,mtaufen,1
|
||||||
k8s.io/kubernetes/pkg/util/wsstream,timothysc,1
|
k8s.io/kubernetes/pkg/util/wsstream,timothysc,1
|
||||||
k8s.io/kubernetes/pkg/util/yaml,rmmh,1
|
k8s.io/kubernetes/pkg/util/yaml,rmmh,1
|
||||||
k8s.io/kubernetes/pkg/version,spxtr,1
|
|
||||||
k8s.io/kubernetes/pkg/volume,saad-ali,0
|
k8s.io/kubernetes/pkg/volume,saad-ali,0
|
||||||
k8s.io/kubernetes/pkg/volume/aws_ebs,caesarxuchao,1
|
k8s.io/kubernetes/pkg/volume/aws_ebs,caesarxuchao,1
|
||||||
k8s.io/kubernetes/pkg/volume/azure_dd,bgrant0607,1
|
k8s.io/kubernetes/pkg/volume/azure_dd,bgrant0607,1
|
||||||
|
|
Loading…
Reference in New Issue
Block a user