diff --git a/test/e2e/framework/nodes_util.go b/test/e2e/framework/nodes_util.go index e4ec834ce37..b4058a89bb9 100644 --- a/test/e2e/framework/nodes_util.go +++ b/test/e2e/framework/nodes_util.go @@ -18,6 +18,7 @@ package framework import ( "fmt" + "os" "path" "strings" "time" @@ -66,8 +67,7 @@ var NodeUpgrade = func(f *Framework, v string, img string) error { var err error switch TestContext.Provider { case "gce": - // TODO(maisem): add GCE support for upgrading to different images. - err = nodeUpgradeGCE(v) + err = nodeUpgradeGCE(v, img) case "gke": err = nodeUpgradeGKE(v, img) default: @@ -88,8 +88,13 @@ var NodeUpgrade = func(f *Framework, v string, img string) error { return nil } -func nodeUpgradeGCE(rawV string) error { +func nodeUpgradeGCE(rawV, img string) error { 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) return err } diff --git a/test/e2e/framework/util.go b/test/e2e/framework/util.go index 6a10ee91b5b..66e99768083 100644 --- a/test/e2e/framework/util.go +++ b/test/e2e/framework/util.go @@ -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 // cmd's stdout and stderr to their respective OS streams. 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) var bout, berr bytes.Buffer cmd := exec.Command(command, args...) @@ -4856,6 +4863,7 @@ func RunCmd(command string, args ...string) (string, string, error) { // newlines. cmd.Stdout = io.MultiWriter(os.Stdout, &bout) cmd.Stderr = io.MultiWriter(os.Stderr, &berr) + cmd.Env = env err := cmd.Run() stdout, stderr := bout.String(), berr.String() if err != nil {