mirror of
https://github.com/docker/docs.git
synced 2026-11-05 00:14:17 +03:00
add GetOsReleaseInfo to provisioner to assist in testing; add tests for rpm repo
Signed-off-by: Evan Hazlett <ejhazlett@gmail.com>
This commit is contained in:
@@ -172,6 +172,10 @@ func (provisioner *Boot2DockerProvisioner) SetOsReleaseInfo(info *OsRelease) {
|
||||
provisioner.OsReleaseInfo = info
|
||||
}
|
||||
|
||||
func (provisioner *Boot2DockerProvisioner) GetOsReleaseInfo() (*OsRelease, error) {
|
||||
return provisioner.OsReleaseInfo, nil
|
||||
}
|
||||
|
||||
func (provisioner *Boot2DockerProvisioner) Provision(swarmOptions swarm.SwarmOptions, authOptions auth.AuthOptions, engineOptions engine.EngineOptions) error {
|
||||
provisioner.SwarmOptions = swarmOptions
|
||||
provisioner.AuthOptions = authOptions
|
||||
|
||||
28
libmachine/provision/centos_test.go
Normal file
28
libmachine/provision/centos_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package provision
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestCentosGenerateYumRepoList(t *testing.T) {
|
||||
info := &OsRelease{
|
||||
Id: "centos",
|
||||
}
|
||||
p := NewCentosProvisioner(nil)
|
||||
p.SetOsReleaseInfo(info)
|
||||
|
||||
buf, err := generateYumRepoList(p)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
m, err := regexp.MatchString(".*centos/7.*", buf.String())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !m {
|
||||
t.Fatalf("expected match for centos/7")
|
||||
}
|
||||
}
|
||||
28
libmachine/provision/fedora_test.go
Normal file
28
libmachine/provision/fedora_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package provision
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestFedoraGenerateYumRepoList(t *testing.T) {
|
||||
info := &OsRelease{
|
||||
Id: "fedora",
|
||||
}
|
||||
p := NewCentosProvisioner(nil)
|
||||
p.SetOsReleaseInfo(info)
|
||||
|
||||
buf, err := generateYumRepoList(p)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
m, err := regexp.MatchString(".*fedora/22.*", buf.String())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !m {
|
||||
t.Fatalf("expected match for fedora/22")
|
||||
}
|
||||
}
|
||||
@@ -68,6 +68,10 @@ func (provisioner *GenericProvisioner) SetOsReleaseInfo(info *OsRelease) {
|
||||
provisioner.OsReleaseInfo = info
|
||||
}
|
||||
|
||||
func (provisioner *GenericProvisioner) GetOsReleaseInfo() (*OsRelease, error) {
|
||||
return provisioner.OsReleaseInfo, nil
|
||||
}
|
||||
|
||||
func (provisioner *GenericProvisioner) GenerateDockerOptions(dockerPort int) (*DockerOptions, error) {
|
||||
var (
|
||||
engineCfg bytes.Buffer
|
||||
|
||||
@@ -56,6 +56,9 @@ type Provisioner interface {
|
||||
// Set the OS Release info depending on how it's represented
|
||||
// internally
|
||||
SetOsReleaseInfo(info *OsRelease)
|
||||
|
||||
// Get the OS Release info for the current provisioner
|
||||
GetOsReleaseInfo() (*OsRelease, error)
|
||||
}
|
||||
|
||||
// Detection
|
||||
|
||||
@@ -277,9 +277,15 @@ func (provisioner *RedHatProvisioner) GenerateDockerOptions(dockerPort int) (*Do
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (provisioner *RedHatProvisioner) ConfigurePackageList() error {
|
||||
func generateYumRepoList(provisioner Provisioner) (*bytes.Buffer, error) {
|
||||
packageListInfo := &PackageListInfo{}
|
||||
switch provisioner.OsReleaseId {
|
||||
|
||||
releaseInfo, err := provisioner.GetOsReleaseInfo()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
switch releaseInfo.Id {
|
||||
case "rhel", "centos":
|
||||
// rhel and centos both use the "centos" repo
|
||||
packageListInfo.OsRelease = "centos"
|
||||
@@ -288,20 +294,31 @@ func (provisioner *RedHatProvisioner) ConfigurePackageList() error {
|
||||
packageListInfo.OsRelease = "fedora"
|
||||
packageListInfo.OsReleaseVersion = "22"
|
||||
default:
|
||||
return ErrUnknownYumOsRelease
|
||||
return nil, ErrUnknownYumOsRelease
|
||||
}
|
||||
|
||||
t, err := template.New("packageList").Parse(packageListTemplate)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var buf bytes.Buffer
|
||||
|
||||
if err := t.Execute(&buf, packageListInfo); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return &buf, nil
|
||||
}
|
||||
|
||||
func (provisioner *RedHatProvisioner) ConfigurePackageList() error {
|
||||
buf, err := generateYumRepoList(provisioner)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// we cannot use %q here as it combines the newlines in the formatting
|
||||
// on transport causing yum to not use the repo
|
||||
packageCmd := fmt.Sprintf("echo \"%s\" | sudo tee /etc/yum.repos.d/docker.repo", buf.String())
|
||||
if _, err := provisioner.SSHCommand(packageCmd); err != nil {
|
||||
return err
|
||||
|
||||
28
libmachine/provision/redhat_test.go
Normal file
28
libmachine/provision/redhat_test.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package provision
|
||||
|
||||
import (
|
||||
"regexp"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestRedHatGenerateYumRepoList(t *testing.T) {
|
||||
info := &OsRelease{
|
||||
Id: "rhel",
|
||||
}
|
||||
p := NewRedHatProvisioner(nil)
|
||||
p.SetOsReleaseInfo(info)
|
||||
|
||||
buf, err := generateYumRepoList(p)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
m, err := regexp.MatchString(".*centos/7.*", buf.String())
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if !m {
|
||||
t.Fatalf("expected match for centos/7")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user