Skip to content

Commit

Permalink
Fix integration test failure to parse eksctl version (#2742)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelbeaumont committed Oct 15, 2020
1 parent e3b9a35 commit 3ad9e4b
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 43 deletions.
8 changes: 3 additions & 5 deletions pkg/cfn/manager/nodegroup.go
Expand Up @@ -307,13 +307,11 @@ func GetNodeGroupType(tags []*cfn.Tag) (api.NodeGroupType, error) {
return nodeGroupType, nil
}

// GetEksctlVersion returns the eksctl version used to create or update the stack
func GetEksctlVersion(tags []*cfn.Tag) (semver.Version, bool, error) {
// GetEksctlVersionFromTags returns the eksctl version used to create or update the stack
func GetEksctlVersionFromTags(tags []*cfn.Tag) (semver.Version, bool, error) {
for _, tag := range tags {
if *tag.Key == api.EksctlVersionTag {
// We don't want any extra info from the version
semverVersion := strings.Split(*tag.Value, version.ExtraSep)[0]
v, err := semver.ParseTolerant(semverVersion)
v, err := version.ParseEksctlVersion(*tag.Value)
if err != nil {
return v, false, errors.Wrapf(err, "unexpected error parsing eksctl version %q", *tag.Value)
}
Expand Down
36 changes: 0 additions & 36 deletions pkg/cfn/manager/nodegroup_test.go
Expand Up @@ -5,7 +5,6 @@ import (

"github.com/aws/aws-sdk-go/aws"
cfn "github.com/aws/aws-sdk-go/service/cloudformation"
"github.com/blang/semver"
. "github.com/onsi/ginkgo"
. "github.com/onsi/ginkgo/extensions/table"
. "github.com/onsi/gomega"
Expand Down Expand Up @@ -369,38 +368,3 @@ var _ = Describe("StackCollection NodeGroup", func() {
)
})
})

var _ = Describe("GetEksctlVersion", func() {
It("handles versions with metadata", func() {
gitVersion := "0.27.0-dev+001eeced.2020-08-27T03:03:31Z"
versionTag := api.EksctlVersionTag

v, found, err := GetEksctlVersion([]*cfn.Tag{{Key: &versionTag, Value: &gitVersion}})

Expect(err).NotTo(HaveOccurred())
Expect(found).To(BeTrue())
Expect(v).To(Equal(
semver.Version{
Major: 0,
Minor: 27,
Patch: 0,
},
))
})
It("handles versions without metadata", func() {
gitVersion := "0.27.0"
versionTag := api.EksctlVersionTag

v, found, err := GetEksctlVersion([]*cfn.Tag{{Key: &versionTag, Value: &gitVersion}})

Expect(err).NotTo(HaveOccurred())
Expect(found).To(BeTrue())
Expect(v).To(Equal(
semver.Version{
Major: 0,
Minor: 27,
Patch: 0,
},
))
})
})
4 changes: 2 additions & 2 deletions pkg/managed/service.go
Expand Up @@ -255,15 +255,15 @@ func (m *Service) requiresStackUpdate(nodeGroupName string) (bool, error) {
return false, err
}

ver, found, err := manager.GetEksctlVersion(ngStack.Tags)
ver, found, err := manager.GetEksctlVersionFromTags(ngStack.Tags)
if err != nil {
return false, err
}
if !found {
return true, nil
}

curVer, err := semver.ParseTolerant(version.GetVersion())
curVer, err := version.ParseEksctlVersion(version.GetVersion())
if err != nil {
return false, errors.Wrap(err, "unexpected error parsing current eksctl version")
}
Expand Down
20 changes: 20 additions & 0 deletions pkg/version/parse.go
@@ -0,0 +1,20 @@
package version

import (
"strings"

"github.com/blang/semver"
"github.com/pkg/errors"
)

// ParseEksctlVersion parses the an eksctl version as semver while ignoring
// extra build metadata
func ParseEksctlVersion(raw string) (semver.Version, error) {
// We don't want any extra info from the version
semverVersion := strings.Split(raw, ExtraSep)[0]
v, err := semver.ParseTolerant(semverVersion)
if err != nil {
return v, errors.Wrapf(err, "unexpected error parsing eksctl version %q", raw)
}
return v, nil
}
38 changes: 38 additions & 0 deletions pkg/version/parse_test.go
@@ -0,0 +1,38 @@
package version

import (
"github.com/blang/semver"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)

var _ = Describe("ParseEksctlVersion", func() {
It("handles versions with metadata", func() {
gitVersion := "0.27.0-dev+001eeced.2020-08-27T03:03:31Z"

v, err := ParseEksctlVersion(gitVersion)

Expect(err).NotTo(HaveOccurred())
Expect(v).To(Equal(
semver.Version{
Major: 0,
Minor: 27,
Patch: 0,
},
))
})
It("handles versions without metadata", func() {
gitVersion := "0.27.0"

v, err := ParseEksctlVersion(gitVersion)

Expect(err).NotTo(HaveOccurred())
Expect(v).To(Equal(
semver.Version{
Major: 0,
Minor: 27,
Patch: 0,
},
))
})
})

0 comments on commit 3ad9e4b

Please sign in to comment.