Adding Oracle Enterprise Linux provisioner

Fixes #1361
Fixes #3164
Corrected copy/paste typo in libmachine/provision/fedora_test.go
Preserve environment when performing yum update for proxy settings.

Signed-off-by: Eric A. Zarko <eric.zarko@oracle.com>
This commit is contained in:
Eric A. Zarko 2016-04-05 11:54:51 -07:00
parent 5b4159d0d8
commit 6c47f4d8e2
4 changed files with 66 additions and 2 deletions

View File

@ -9,7 +9,7 @@ func TestFedoraGenerateYumRepoList(t *testing.T) {
info := &OsRelease{
ID: "fedora",
}
p := NewCentosProvisioner(nil)
p := NewFedoraProvisioner(nil)
p.SetOsReleaseInfo(info)
buf, err := generateYumRepoList(p)

View File

@ -0,0 +1,25 @@
package provision
import (
"github.com/docker/machine/libmachine/drivers"
)
func init() {
Register("OracleLinux", &RegisteredProvisioner{
New: NewOracleLinuxProvisioner,
})
}
func NewOracleLinuxProvisioner(d drivers.Driver) Provisioner {
return &OracleLinuxProvisioner{
NewRedHatProvisioner("ol", d),
}
}
type OracleLinuxProvisioner struct {
*RedHatProvisioner
}
func (provisioner *OracleLinuxProvisioner) String() string {
return "ol"
}

View File

@ -0,0 +1,29 @@
package provision
import (
"regexp"
"testing"
)
func TestOracleLinuxGenerateYumRepoList(t *testing.T) {
info := &OsRelease{
ID: "ol",
Version: "7.2",
}
p := NewOracleLinuxProvisioner(nil)
p.SetOsReleaseInfo(info)
buf, err := generateYumRepoList(p)
if err != nil {
t.Fatal(err)
}
m, err := regexp.MatchString(".*oraclelinux/7.*", buf.String())
if err != nil {
t.Fatal(err)
}
if !m {
t.Fatalf("expected match for oraclelinux/7")
}
}

View File

@ -4,6 +4,7 @@ import (
"bytes"
"errors"
"fmt"
"regexp"
"text/template"
"github.com/docker/machine/libmachine/auth"
@ -39,6 +40,8 @@ LimitNPROC=1048576
LimitCORE=infinity
Environment={{range .EngineOptions.Env}}{{ printf "%q" . }} {{end}}
`
majorVersionRE = regexp.MustCompile(`^(\d+)(\..*)?`)
)
type PackageListInfo struct {
@ -168,7 +171,7 @@ func (provisioner *RedHatProvisioner) Provision(swarmOptions swarm.Options, auth
}
// update OS -- this is needed for libdevicemapper and the docker install
if _, err := provisioner.SSHCommand("sudo yum -y update"); err != nil {
if _, err := provisioner.SSHCommand("sudo -E yum -y update"); err != nil {
return err
}
@ -246,6 +249,13 @@ func generateYumRepoList(provisioner Provisioner) (*bytes.Buffer, error) {
case "fedora":
packageListInfo.OsRelease = "fedora"
packageListInfo.OsReleaseVersion = "22"
case "ol":
packageListInfo.OsRelease = "oraclelinux"
v := majorVersionRE.FindStringSubmatch(releaseInfo.Version)
if v == nil {
return nil, fmt.Errorf("unable to determine major version of %s", releaseInfo.Version)
}
packageListInfo.OsReleaseVersion = v[1]
default:
return nil, ErrUnknownYumOsRelease
}