mirror of https://github.com/k3s-io/k3s
Port remaining code to pkg/util/version
parent
f369372dad
commit
c788793868
|
@ -36,8 +36,8 @@ go_library(
|
|||
"//pkg/util/runtime:go_default_library",
|
||||
"//pkg/util/sets:go_default_library",
|
||||
"//pkg/util/sysctl:go_default_library",
|
||||
"//pkg/util/version:go_default_library",
|
||||
"//pkg/util/wait:go_default_library",
|
||||
"//vendor:github.com/blang/semver",
|
||||
"//vendor:github.com/golang/glog",
|
||||
"//vendor:github.com/opencontainers/runc/libcontainer/cgroups",
|
||||
"//vendor:github.com/opencontainers/runc/libcontainer/cgroups/fs",
|
||||
|
|
|
@ -29,7 +29,6 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/blang/semver"
|
||||
"github.com/golang/glog"
|
||||
"github.com/opencontainers/runc/libcontainer/cgroups"
|
||||
"github.com/opencontainers/runc/libcontainer/cgroups/fs"
|
||||
|
@ -47,6 +46,7 @@ import (
|
|||
"k8s.io/kubernetes/pkg/util/runtime"
|
||||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
utilsysctl "k8s.io/kubernetes/pkg/util/sysctl"
|
||||
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||
"k8s.io/kubernetes/pkg/util/wait"
|
||||
)
|
||||
|
||||
|
@ -66,7 +66,7 @@ const (
|
|||
|
||||
var (
|
||||
// The docker version in which containerd was introduced.
|
||||
containerdVersion = semver.MustParse("1.11.0")
|
||||
containerdVersion = utilversion.MustParseSemantic("1.11.0")
|
||||
)
|
||||
|
||||
// A non-user container tracked by the Kubelet.
|
||||
|
@ -632,10 +632,10 @@ func getPidsForProcess(name, pidFile string) ([]int, error) {
|
|||
// Temporarily export the function to be used by dockershim.
|
||||
// TODO(yujuhong): Move this function to dockershim once kubelet migrates to
|
||||
// dockershim as the default.
|
||||
func EnsureDockerInContainer(dockerVersion semver.Version, oomScoreAdj int, manager *fs.Manager) error {
|
||||
func EnsureDockerInContainer(dockerVersion *utilversion.Version, oomScoreAdj int, manager *fs.Manager) error {
|
||||
type process struct{ name, file string }
|
||||
dockerProcs := []process{{dockerProcessName, dockerPidFile}}
|
||||
if dockerVersion.GTE(containerdVersion) {
|
||||
if dockerVersion.AtLeast(containerdVersion) {
|
||||
dockerProcs = append(dockerProcs, process{containerdProcessName, containerdPidFile})
|
||||
}
|
||||
var errs []error
|
||||
|
@ -797,17 +797,16 @@ func isKernelPid(pid int) bool {
|
|||
}
|
||||
|
||||
// Helper for getting the docker version.
|
||||
func getDockerVersion(cadvisor cadvisor.Interface) semver.Version {
|
||||
var fallback semver.Version // Fallback to zero-value by default.
|
||||
func getDockerVersion(cadvisor cadvisor.Interface) *utilversion.Version {
|
||||
versions, err := cadvisor.VersionInfo()
|
||||
if err != nil {
|
||||
glog.Errorf("Error requesting cAdvisor VersionInfo: %v", err)
|
||||
return fallback
|
||||
return utilversion.MustParseSemantic("0.0.0")
|
||||
}
|
||||
dockerVersion, err := semver.Parse(versions.DockerVersion)
|
||||
dockerVersion, err := utilversion.ParseSemantic(versions.DockerVersion)
|
||||
if err != nil {
|
||||
glog.Errorf("Error parsing docker version %q: %v", versions.DockerVersion, err)
|
||||
return fallback
|
||||
return utilversion.MustParseSemantic("0.0.0")
|
||||
}
|
||||
return dockerVersion
|
||||
}
|
||||
|
|
|
@ -18,8 +18,8 @@ go_library(
|
|||
"//pkg/kubelet/cm:go_default_library",
|
||||
"//pkg/kubelet/dockertools:go_default_library",
|
||||
"//pkg/kubelet/qos:go_default_library",
|
||||
"//pkg/util/version:go_default_library",
|
||||
"//pkg/util/wait:go_default_library",
|
||||
"//vendor:github.com/blang/semver",
|
||||
"//vendor:github.com/golang/glog",
|
||||
"//vendor:github.com/opencontainers/runc/libcontainer/cgroups/fs",
|
||||
"//vendor:github.com/opencontainers/runc/libcontainer/configs",
|
||||
|
|
|
@ -25,13 +25,13 @@ import (
|
|||
"strconv"
|
||||
"time"
|
||||
|
||||
"github.com/blang/semver"
|
||||
"github.com/golang/glog"
|
||||
"github.com/opencontainers/runc/libcontainer/cgroups/fs"
|
||||
"github.com/opencontainers/runc/libcontainer/configs"
|
||||
kubecm "k8s.io/kubernetes/pkg/kubelet/cm"
|
||||
"k8s.io/kubernetes/pkg/kubelet/dockertools"
|
||||
"k8s.io/kubernetes/pkg/kubelet/qos"
|
||||
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||
"k8s.io/kubernetes/pkg/util/wait"
|
||||
)
|
||||
|
||||
|
@ -85,7 +85,7 @@ func (m *containerManager) doWork() {
|
|||
glog.Errorf("Unable to get docker version: %v", err)
|
||||
return
|
||||
}
|
||||
version, err := semver.Parse(v.Version)
|
||||
version, err := utilversion.ParseSemantic(v.Version)
|
||||
if err != nil {
|
||||
glog.Errorf("Unable to parse docker version %q: %v", v.Version, err)
|
||||
return
|
||||
|
|
|
@ -62,7 +62,7 @@ go_library(
|
|||
"//pkg/util/sets:go_default_library",
|
||||
"//pkg/util/strings:go_default_library",
|
||||
"//pkg/util/term:go_default_library",
|
||||
"//vendor:github.com/coreos/go-semver/semver",
|
||||
"//pkg/util/version:go_default_library",
|
||||
"//vendor:github.com/docker/distribution/digest",
|
||||
"//vendor:github.com/docker/distribution/reference",
|
||||
"//vendor:github.com/docker/docker/pkg/jsonmessage",
|
||||
|
|
|
@ -34,7 +34,6 @@ import (
|
|||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/coreos/go-semver/semver"
|
||||
dockertypes "github.com/docker/engine-api/types"
|
||||
dockercontainer "github.com/docker/engine-api/types/container"
|
||||
dockerstrslice "github.com/docker/engine-api/types/strslice"
|
||||
|
@ -73,6 +72,7 @@ import (
|
|||
"k8s.io/kubernetes/pkg/util/sets"
|
||||
utilstrings "k8s.io/kubernetes/pkg/util/strings"
|
||||
"k8s.io/kubernetes/pkg/util/term"
|
||||
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -1033,37 +1033,9 @@ func getDockerNetworkMode(container *dockertypes.ContainerJSON) string {
|
|||
return ""
|
||||
}
|
||||
|
||||
// dockerVersion implements kubecontainer.Version interface by implementing
|
||||
// Compare() and String() (which is implemented by the underlying semver.Version)
|
||||
// TODO: this code is the same as rktVersion and may make sense to be moved to
|
||||
// somewhere shared.
|
||||
type dockerVersion struct {
|
||||
*semver.Version
|
||||
}
|
||||
|
||||
// newDockerVersion returns a semantically versioned docker version value
|
||||
func newDockerVersion(version string) (dockerVersion, error) {
|
||||
sem, err := semver.NewVersion(version)
|
||||
return dockerVersion{sem}, err
|
||||
}
|
||||
|
||||
func (r dockerVersion) String() string {
|
||||
return r.Version.String()
|
||||
}
|
||||
|
||||
func (r dockerVersion) Compare(other string) (int, error) {
|
||||
v, err := newDockerVersion(other)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
|
||||
if r.LessThan(*v.Version) {
|
||||
return -1, nil
|
||||
}
|
||||
if v.Version.LessThan(*r.Version) {
|
||||
return 1, nil
|
||||
}
|
||||
return 0, nil
|
||||
func newDockerVersion(version string) (*utilversion.Version, error) {
|
||||
return utilversion.ParseSemantic(version)
|
||||
}
|
||||
|
||||
// apiVersion implements kubecontainer.Version interface by implementing
|
||||
|
|
|
@ -2117,12 +2117,14 @@ func TestDockerVersionComparison(t *testing.T) {
|
|||
{version: "1.10.4-rc1", compare: -1},
|
||||
{version: "1.11.1", compare: -1},
|
||||
{version: "1.11.1-rc4", compare: -1},
|
||||
{version: "invalid", compare: -1, err: true},
|
||||
{version: "invalid", err: true},
|
||||
} {
|
||||
testCase := fmt.Sprintf("test case #%d test version %q", i, test.version)
|
||||
res, err := v.Compare(test.version)
|
||||
assert.Equal(t, test.compare, res, testCase)
|
||||
assert.Equal(t, test.err, err != nil, testCase)
|
||||
if !test.err {
|
||||
assert.Equal(t, test.compare, res, testCase)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ go_library(
|
|||
"//pkg/util/runtime:go_default_library",
|
||||
"//pkg/util/selinux:go_default_library",
|
||||
"//pkg/util/sets:go_default_library",
|
||||
"//vendor:github.com/coreos/go-semver/semver",
|
||||
"//pkg/util/version:go_default_library",
|
||||
"//vendor:github.com/docker/docker/pkg/jsonlog",
|
||||
"//vendor:github.com/fsnotify/fsnotify",
|
||||
"//vendor:github.com/golang/glog",
|
||||
|
|
|
@ -22,7 +22,6 @@ import (
|
|||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/coreos/go-semver/semver"
|
||||
"github.com/golang/glog"
|
||||
cadvisorapi "github.com/google/cadvisor/info/v1"
|
||||
|
||||
|
@ -43,6 +42,7 @@ import (
|
|||
kubetypes "k8s.io/kubernetes/pkg/types"
|
||||
"k8s.io/kubernetes/pkg/util/flowcontrol"
|
||||
utilruntime "k8s.io/kubernetes/pkg/util/runtime"
|
||||
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -202,33 +202,8 @@ func (m *kubeGenericRuntimeManager) Type() string {
|
|||
return m.runtimeName
|
||||
}
|
||||
|
||||
// runtimeVersion implements kubecontainer.Version interface by implementing
|
||||
// Compare() and String()
|
||||
type runtimeVersion struct {
|
||||
*semver.Version
|
||||
}
|
||||
|
||||
func newRuntimeVersion(version string) (runtimeVersion, error) {
|
||||
sem, err := semver.NewVersion(version)
|
||||
if err != nil {
|
||||
return runtimeVersion{}, err
|
||||
}
|
||||
return runtimeVersion{sem}, nil
|
||||
}
|
||||
|
||||
func (r runtimeVersion) Compare(other string) (int, error) {
|
||||
v, err := semver.NewVersion(other)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
|
||||
if r.LessThan(*v) {
|
||||
return -1, nil
|
||||
}
|
||||
if v.LessThan(*r.Version) {
|
||||
return 1, nil
|
||||
}
|
||||
return 0, nil
|
||||
func newRuntimeVersion(version string) (*utilversion.Version, error) {
|
||||
return utilversion.ParseSemantic(version)
|
||||
}
|
||||
|
||||
func (m *kubeGenericRuntimeManager) getTypedVersion() (*runtimeapi.VersionResponse, error) {
|
||||
|
|
|
@ -47,10 +47,10 @@ go_library(
|
|||
"//pkg/util/strings:go_default_library",
|
||||
"//pkg/util/term:go_default_library",
|
||||
"//pkg/util/uuid:go_default_library",
|
||||
"//pkg/util/version:go_default_library",
|
||||
"//pkg/util/wait:go_default_library",
|
||||
"//vendor:github.com/appc/spec/schema",
|
||||
"//vendor:github.com/appc/spec/schema/types",
|
||||
"//vendor:github.com/coreos/go-semver/semver",
|
||||
"//vendor:github.com/coreos/go-systemd/dbus",
|
||||
"//vendor:github.com/coreos/go-systemd/unit",
|
||||
"//vendor:github.com/coreos/rkt/api/v1alpha",
|
||||
|
|
|
@ -20,45 +20,21 @@ import (
|
|||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/coreos/go-semver/semver"
|
||||
rktapi "github.com/coreos/rkt/api/v1alpha"
|
||||
"golang.org/x/net/context"
|
||||
|
||||
utilversion "k8s.io/kubernetes/pkg/util/version"
|
||||
)
|
||||
|
||||
type versions struct {
|
||||
sync.RWMutex
|
||||
binVersion rktVersion
|
||||
apiVersion rktVersion
|
||||
binVersion *utilversion.Version
|
||||
apiVersion *utilversion.Version
|
||||
systemdVersion systemdVersion
|
||||
}
|
||||
|
||||
// rktVersion implementes kubecontainer.Version interface by implementing
|
||||
// Compare() and String() (which is implemented by the underlying semver.Version)
|
||||
type rktVersion struct {
|
||||
*semver.Version
|
||||
}
|
||||
|
||||
func newRktVersion(version string) (rktVersion, error) {
|
||||
sem, err := semver.NewVersion(version)
|
||||
if err != nil {
|
||||
return rktVersion{}, err
|
||||
}
|
||||
return rktVersion{sem}, nil
|
||||
}
|
||||
|
||||
func (r rktVersion) Compare(other string) (int, error) {
|
||||
v, err := semver.NewVersion(other)
|
||||
if err != nil {
|
||||
return -1, err
|
||||
}
|
||||
|
||||
if r.LessThan(*v) {
|
||||
return -1, nil
|
||||
}
|
||||
if v.LessThan(*r.Version) {
|
||||
return 1, nil
|
||||
}
|
||||
return 0, nil
|
||||
func newRktVersion(version string) (*utilversion.Version, error) {
|
||||
return utilversion.ParseSemantic(version)
|
||||
}
|
||||
|
||||
func (r *Runtime) getVersions() error {
|
||||
|
|
Loading…
Reference in New Issue