Skip to content

Commit

Permalink
Issue argoproj#2645 - /api/version should not fail if unable to load …
Browse files Browse the repository at this point in the history
…tool version (argoproj#2654)
  • Loading branch information
Alexander Matyushentsev authored Nov 7, 2019
1 parent 4ccb023 commit cb6d7ea
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 26 deletions.
29 changes: 17 additions & 12 deletions server/version/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,31 +25,36 @@ func (s *Server) Version(context.Context, *empty.Empty) (*version.VersionMessage
vers := common.GetVersion()
if s.ksonnetVersion == "" {
ksonnetVersion, err := ksutil.Version()
if err != nil {
return nil, err
if err == nil {
s.ksonnetVersion = ksonnetVersion
} else {
s.ksonnetVersion = err.Error()
}
s.ksonnetVersion = ksonnetVersion
}
if s.kustomizeVersion == "" {
kustomizeVersion, err := kustomize.Version()
if err != nil {
return nil, err
if err == nil {
s.kustomizeVersion = kustomizeVersion
} else {
s.kustomizeVersion = err.Error()
}
s.kustomizeVersion = kustomizeVersion

}
if s.helmVersion == "" {
helmVersion, err := helm.Version()
if err != nil {
return nil, err
if err == nil {
s.helmVersion = helmVersion
} else {
s.helmVersion = err.Error()
}
s.helmVersion = helmVersion
}
if s.kubectlVersion == "" {
kubectlVersion, err := kube.Version()
if err != nil {
return nil, err
if err == nil {
s.kubectlVersion = kubectlVersion
} else {
s.kubectlVersion = err.Error()
}
s.kubectlVersion = kubectlVersion
}
return &version.VersionMessage{
Version: vers.Version,
Expand Down
14 changes: 2 additions & 12 deletions util/kustomize/kustomize.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"os"
"os/exec"
"path/filepath"
"regexp"
"sort"
"strings"

Expand Down Expand Up @@ -181,21 +180,12 @@ func IsKustomization(path string) bool {
}

func Version() (string, error) {
cmd := exec.Command("kustomize", "version")
cmd := exec.Command("kustomize", "version", "--short")
out, err := argoexec.RunCommandExt(cmd, config.CmdOpts())
if err != nil {
return "", fmt.Errorf("could not get kustomize version: %s", err)
}
re := regexp.MustCompile(`Version:kustomize/([a-zA-Z0-9\.]+)`)
matches := re.FindStringSubmatch(out)
if len(matches) != 2 {
return "", errors.New("could not get kustomize version")
}
version := matches[1]
if version[0] != 'v' {
version = "v" + version
}
return strings.TrimSpace(version), nil
return strings.TrimSpace("v" + out), nil
}

func getImageParameters(objs []*unstructured.Unstructured) []Image {
Expand Down
6 changes: 4 additions & 2 deletions util/kustomize/kustomize_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ import (
"regexp"
"testing"

"github.com/Masterminds/semver"

"github.com/argoproj/pkg/exec"
"github.com/stretchr/testify/assert"

Expand Down Expand Up @@ -104,7 +106,7 @@ func TestParseKustomizeBuildOptions(t *testing.T) {
func TestVersion(t *testing.T) {
ver, err := Version()
assert.NoError(t, err)
SemverRegexValidation := `^v(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(-(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*)(\.(0|[1-9]\d*|\d*[a-zA-Z-][0-9a-zA-Z-]*))*)?(\+[0-9a-zA-Z-]+(\.[0-9a-zA-Z-]+)*)?$`
re := regexp.MustCompile(SemverRegexValidation)

re := regexp.MustCompile(semver.SemVerRegex)
assert.True(t, re.MatchString(ver))
}

0 comments on commit cb6d7ea

Please sign in to comment.