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