Skip to content

Commit

Permalink
Merge pull request #77 from banzaicloud/fix-redhat
Browse files Browse the repository at this point in the history
Fix Red Hat os detection
  • Loading branch information
Ecsy authored Oct 15, 2019
2 parents 8e5b13a + 59cd61d commit 383687e
Show file tree
Hide file tree
Showing 3 changed files with 32 additions and 6 deletions.
20 changes: 15 additions & 5 deletions cmd/pke/app/util/linux/autodetect.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,21 @@ package linux
import (
"io"

"github.com/Masterminds/semver"
"github.com/banzaicloud/pke/cmd/pke/app/constants"
)

func KubernetesPackagesImpl(out io.Writer) (KubernetesPackages, error) {
if ver, err := CentOSVersion(out); err == nil {
if ver == "7" {
ver, err := CentOSVersion(out)
if err != nil {
ver, err = RedHatVersion(out)
}
if err == nil {
v, _ := semver.NewVersion(ver)
c, _ := semver.NewConstraint("7.x-0 || 8.x-0")
if c.Check(v) {
return NewYumInstaller(), nil
}
return nil, constants.ErrUnsupportedOS
}

if distro, err := LSBReleaseDistributorID(out); err == nil {
Expand All @@ -48,8 +54,12 @@ func ContainerdPackagesImpl(out io.Writer) (ContainerdPackages, error) {
if err != nil {
ver, err = RedHatVersion(out)
}
if err == nil && (ver == "7" || ver == "8.0") {
return NewYumInstaller(), nil
if err == nil {
v, _ := semver.NewVersion(ver)
c, _ := semver.NewConstraint("7.x-0 || 8.x-0")
if c.Check(v) {
return NewYumInstaller(), nil
}
}

if distro, err := LSBReleaseDistributorID(out); err == nil {
Expand Down
2 changes: 2 additions & 0 deletions cmd/pke/app/util/linux/kernel.go
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ func KernelVersionConstraint(out io.Writer, constraint string) error {
if err != nil {
return err
}
// Red Hat Linux uses underscore: 3.10.0-327.el7.x86_64
version = bytes.ReplaceAll(version, []byte("_"), []byte(""))
v := string(bytes.TrimSpace(version))
ver, err := semver.NewVersion(v)
if err != nil {
Expand Down
16 changes: 15 additions & 1 deletion cmd/pke/app/util/linux/os_version_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ package linux

import (
"bytes"
"fmt"
"io"
"io/ioutil"
"regexp"
"strings"

"emperror.dev/errors"
Expand Down Expand Up @@ -51,7 +54,18 @@ func CentOSVersion(w io.Writer) (string, error) {
func RedHatVersion(w io.Writer) (string, error) {
o, err := runner.Cmd(w, "rpm", "--query", "redhat-release").Output()
if err != nil {
return "", err
// /etc/redhat-release
b, err := ioutil.ReadFile("/etc/redhat-release")
_, _ = fmt.Fprintf(w, "/etc/redhat-release: %q, err: %v\n", b, err)
if err != nil {
return "", err
}
re := regexp.MustCompile(`\d+(\.\d+)?`)
ver := re.Find(b)
if len(ver) == 0 {
return "", errors.New("failed to parse version")
}
return string(ver), nil
}

s := bytes.SplitN(o, dash, 4)
Expand Down

0 comments on commit 383687e

Please sign in to comment.