Newer versions of docker do not follow Semantic Versioning

This commit is contained in:
Rodrigo Menezes 2017-10-07 17:04:32 -07:00
parent 319ebabd05
commit 3b3453d7c5
1 changed files with 20 additions and 7 deletions

View File

@ -18,6 +18,7 @@ package model
import ( import (
"fmt" "fmt"
"strconv"
"strings" "strings"
"k8s.io/kops/nodeup/pkg/distros" "k8s.io/kops/nodeup/pkg/distros"
@ -27,7 +28,6 @@ import (
"k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi"
"k8s.io/kops/upup/pkg/fi/nodeup/nodetasks" "k8s.io/kops/upup/pkg/fi/nodeup/nodetasks"
"github.com/blang/semver"
"github.com/golang/glog" "github.com/golang/glog"
) )
@ -503,12 +503,25 @@ func (b *DockerBuilder) Build(c *fi.ModelBuilderContext) error {
} }
} }
dockerSemver, err := semver.ParseTolerant(dockerVersion) // Split into major.minor.(patch+pr+meta)
if err != nil { parts := strings.SplitN(dockerVersion, ".", 3)
return fmt.Errorf("error parsing docker version %q as semver: %v", dockerVersion, err) if len(parts) != 3 {
return fmt.Errorf("error parsing docker version %q, no Major.Minor.Patch elements found", dockerVersion)
} }
c.AddTask(b.buildSystemdService(dockerSemver)) // Validate major
dockerVersionMajor, err := strconv.ParseInt(parts[0], 10, 64)
if err != nil {
return fmt.Errorf("error parsing major docker version %q: %v", parts[0], err)
}
// Validate minor
dockerVersionMinor, err := strconv.ParseInt(parts[1], 10, 64)
if err != nil {
return fmt.Errorf("error parsing minor docker version %q: %v", parts[1], err)
}
c.AddTask(b.buildSystemdService(dockerVersionMajor, dockerVersionMinor))
if err := b.buildSysconfig(c); err != nil { if err := b.buildSysconfig(c); err != nil {
return err return err
@ -517,8 +530,8 @@ func (b *DockerBuilder) Build(c *fi.ModelBuilderContext) error {
return nil return nil
} }
func (b *DockerBuilder) buildSystemdService(dockerVersion semver.Version) *nodetasks.Service { func (b *DockerBuilder) buildSystemdService(dockerVersionMajor int64, dockerVersionMinor int64) *nodetasks.Service {
oldDocker := dockerVersion.Major <= 1 && dockerVersion.Minor <= 11 oldDocker := dockerVersionMajor <= 1 && dockerVersionMinor <= 11
usesDockerSocket := true usesDockerSocket := true
hasDockerBabysitter := false hasDockerBabysitter := false