1
0
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:
Evan Hazlett
2015-07-17 12:13:21 -04:00
parent 01bf2ea2d7
commit b43a76deec
7 changed files with 116 additions and 4 deletions

View File

@@ -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

View 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")
}
}

View 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")
}
}

View File

@@ -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

View File

@@ -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

View File

@@ -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

View 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")
}
}