Port remaining code to pkg/util/version

pull/6/head
Dan Winship 2016-10-22 13:28:17 -04:00
parent f369372dad
commit c788793868
11 changed files with 31 additions and 107 deletions

View File

@ -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",

View File

@ -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
}

View File

@ -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",

View File

@ -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

View File

@ -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",

View File

@ -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

View File

@ -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)
}
}
}

View File

@ -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",

View File

@ -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) {

View File

@ -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",

View File

@ -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 {