diff --git a/test/e2e/framework/gpu_util.go b/test/e2e/framework/gpu_util.go index 2cd9f33ee77..54aa0c50d7f 100644 --- a/test/e2e/framework/gpu_util.go +++ b/test/e2e/framework/gpu_util.go @@ -21,6 +21,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/uuid" + "fmt" . "github.com/onsi/gomega" ) @@ -67,10 +68,16 @@ func NVIDIADevicePlugin(ns string) *v1.Pod { return p } -func GetGPUDevicePluginImage() string { +func GetGPUDevicePluginImage() (string, error) { ds, err := DsFromManifest(GPUDevicePluginDSYAML) - if err != nil || ds == nil || len(ds.Spec.Template.Spec.Containers) < 1 { - return "" + if err != nil { + return "", err } - return ds.Spec.Template.Spec.Containers[0].Image + if ds == nil { + return "", fmt.Errorf("empty DaemonSet from DSYAML") + } + if len(ds.Spec.Template.Spec.Containers) < 1 { + return "", fmt.Errorf("no container specified in the DSYAML") + } + return ds.Spec.Template.Spec.Containers[0].Image, nil } diff --git a/test/e2e_node/image_list.go b/test/e2e_node/image_list.go index b857700c14c..2143af779a7 100644 --- a/test/e2e_node/image_list.go +++ b/test/e2e_node/image_list.go @@ -52,12 +52,18 @@ var NodeImageWhiteList = sets.NewString( imageutils.GetE2EImage(imageutils.Netexec), imageutils.GetE2EImage(imageutils.Nonewprivs), imageutils.GetPauseImageNameForHostArch(), - framework.GetGPUDevicePluginImage(), ) func init() { // Union NodeImageWhiteList and CommonImageWhiteList into the framework image white list. framework.ImageWhiteList = NodeImageWhiteList.Union(commontest.CommonImageWhiteList) + + // parse the device plugin image from url + if image, err := framework.GetGPUDevicePluginImage(); err != nil { + glog.Errorf("Failed to parse the device plugin image: %v", err) + } else { + framework.ImageWhiteList.Insert(image) + } } // puller represents a generic image puller