Support different image during GCE node upgrade

This commit is contained in:
Kris 2016-12-16 11:41:56 -08:00
parent 853fcc393e
commit 3b5bf39cfa
2 changed files with 16 additions and 3 deletions

View File

@ -18,6 +18,7 @@ package framework
import ( import (
"fmt" "fmt"
"os"
"path" "path"
"strings" "strings"
"time" "time"
@ -66,8 +67,7 @@ var NodeUpgrade = func(f *Framework, v string, img string) error {
var err error var err error
switch TestContext.Provider { switch TestContext.Provider {
case "gce": case "gce":
// TODO(maisem): add GCE support for upgrading to different images. err = nodeUpgradeGCE(v, img)
err = nodeUpgradeGCE(v)
case "gke": case "gke":
err = nodeUpgradeGKE(v, img) err = nodeUpgradeGKE(v, img)
default: default:
@ -88,8 +88,13 @@ var NodeUpgrade = func(f *Framework, v string, img string) error {
return nil return nil
} }
func nodeUpgradeGCE(rawV string) error { func nodeUpgradeGCE(rawV, img string) error {
v := "v" + rawV v := "v" + rawV
if img != "" {
env := append(os.Environ(), "KUBE_NODE_OS_DISTRIBUTION="+img)
_, _, err := RunCmdEnv(env, path.Join(TestContext.RepoRoot, "cluster/gce/upgrade.sh"), "-N", "-o", v)
return err
}
_, _, err := RunCmd(path.Join(TestContext.RepoRoot, "cluster/gce/upgrade.sh"), "-N", v) _, _, err := RunCmd(path.Join(TestContext.RepoRoot, "cluster/gce/upgrade.sh"), "-N", v)
return err return err
} }

View File

@ -4846,6 +4846,13 @@ func GetPodsInNamespace(c clientset.Interface, ns string, ignoreLabels map[strin
// RunCmd runs cmd using args and returns its stdout and stderr. It also outputs // RunCmd runs cmd using args and returns its stdout and stderr. It also outputs
// cmd's stdout and stderr to their respective OS streams. // cmd's stdout and stderr to their respective OS streams.
func RunCmd(command string, args ...string) (string, string, error) { func RunCmd(command string, args ...string) (string, string, error) {
return RunCmdEnv(nil, command, args...)
}
// RunCmdEnv runs cmd with the provided environment and args and
// returns its stdout and stderr. It also outputs cmd's stdout and
// stderr to their respective OS streams.
func RunCmdEnv(env []string, command string, args ...string) (string, string, error) {
Logf("Running %s %v", command, args) Logf("Running %s %v", command, args)
var bout, berr bytes.Buffer var bout, berr bytes.Buffer
cmd := exec.Command(command, args...) cmd := exec.Command(command, args...)
@ -4856,6 +4863,7 @@ func RunCmd(command string, args ...string) (string, string, error) {
// newlines. // newlines.
cmd.Stdout = io.MultiWriter(os.Stdout, &bout) cmd.Stdout = io.MultiWriter(os.Stdout, &bout)
cmd.Stderr = io.MultiWriter(os.Stderr, &berr) cmd.Stderr = io.MultiWriter(os.Stderr, &berr)
cmd.Env = env
err := cmd.Run() err := cmd.Run()
stdout, stderr := bout.String(), berr.String() stdout, stderr := bout.String(), berr.String()
if err != nil { if err != nil {