mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-24 20:24:09 +00:00
e2e: topomgr: add option to specify the SRIOV conf
We cannot anticipate all the possible configurations needed by the SRIOV device plugin: there is too much variety. Hence, we need to allow the test environment to supply a host-specific ConfigMap to properly configure the device plugin and avoid false negatives. We still provide a the default config map as fallback and reference. Signed-off-by: Francesco Romani <fromani@redhat.com>
This commit is contained in:
parent
6687fcc78c
commit
1b5801a086
@ -167,6 +167,9 @@ type TestContextType struct {
|
|||||||
|
|
||||||
// ProgressReportURL is the URL which progress updates will be posted to as tests complete. If empty, no updates are sent.
|
// ProgressReportURL is the URL which progress updates will be posted to as tests complete. If empty, no updates are sent.
|
||||||
ProgressReportURL string
|
ProgressReportURL string
|
||||||
|
|
||||||
|
// SriovdpConfigMapFile is the path to the ConfigMap to configure the SRIOV device plugin on this host.
|
||||||
|
SriovdpConfigMapFile string
|
||||||
}
|
}
|
||||||
|
|
||||||
// NodeKillerConfig describes configuration of NodeKiller -- a utility to
|
// NodeKillerConfig describes configuration of NodeKiller -- a utility to
|
||||||
|
@ -80,6 +80,7 @@ func registerNodeFlags(flags *flag.FlagSet) {
|
|||||||
flags.StringVar(&framework.TestContext.ImageDescription, "image-description", "", "The description of the image which the test will be running on.")
|
flags.StringVar(&framework.TestContext.ImageDescription, "image-description", "", "The description of the image which the test will be running on.")
|
||||||
flags.StringVar(&framework.TestContext.SystemSpecName, "system-spec-name", "", "The name of the system spec (e.g., gke) that's used in the node e2e test. The system specs are in test/e2e_node/system/specs/. This is used by the test framework to determine which tests to run for validating the system requirements.")
|
flags.StringVar(&framework.TestContext.SystemSpecName, "system-spec-name", "", "The name of the system spec (e.g., gke) that's used in the node e2e test. The system specs are in test/e2e_node/system/specs/. This is used by the test framework to determine which tests to run for validating the system requirements.")
|
||||||
flags.Var(cliflag.NewMapStringString(&framework.TestContext.ExtraEnvs), "extra-envs", "The extra environment variables needed for node e2e tests. Format: a list of key=value pairs, e.g., env1=val1,env2=val2")
|
flags.Var(cliflag.NewMapStringString(&framework.TestContext.ExtraEnvs), "extra-envs", "The extra environment variables needed for node e2e tests. Format: a list of key=value pairs, e.g., env1=val1,env2=val2")
|
||||||
|
flags.StringVar(&framework.TestContext.SriovdpConfigMapFile, "sriovdp-configmap-file", "", "The name of the SRIOV device plugin Config Map to load.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
|
@ -10,8 +10,8 @@ data:
|
|||||||
"resourceName": "intel_sriov_netdevice",
|
"resourceName": "intel_sriov_netdevice",
|
||||||
"selectors": {
|
"selectors": {
|
||||||
"vendors": ["8086"],
|
"vendors": ["8086"],
|
||||||
"devices": ["154c", "10ed", "1521"],
|
"devices": ["154c", "10ed"],
|
||||||
"drivers": ["i40evf", "ixgbevf", "igb"]
|
"drivers": ["i40evf", "ixgbevf"]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@ -19,6 +19,7 @@ package e2enode
|
|||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"regexp"
|
"regexp"
|
||||||
"strconv"
|
"strconv"
|
||||||
@ -491,9 +492,21 @@ func runTopologyManagerNodeAlignmentSinglePodTest(f *framework.Framework, sriovR
|
|||||||
}
|
}
|
||||||
|
|
||||||
func runTopologyManagerNodeAlignmentSuiteTests(f *framework.Framework, numaNodes int) {
|
func runTopologyManagerNodeAlignmentSuiteTests(f *framework.Framework, numaNodes int) {
|
||||||
|
cmData := testfiles.ReadOrDie(SRIOVDevicePluginCMYAML)
|
||||||
var err error
|
var err error
|
||||||
|
|
||||||
configMap := readConfigMapV1OrDie(testfiles.ReadOrDie(SRIOVDevicePluginCMYAML))
|
// the SRIOVDP configuration is hw-dependent, so we allow per-test-host customization.
|
||||||
|
framework.Logf("host-local SRIOV Device Plugin Config Map %q", framework.TestContext.SriovdpConfigMapFile)
|
||||||
|
if framework.TestContext.SriovdpConfigMapFile != "" {
|
||||||
|
cmData, err = ioutil.ReadFile(framework.TestContext.SriovdpConfigMapFile)
|
||||||
|
if err != nil {
|
||||||
|
framework.Failf("unable to load the SRIOV Device Plugin ConfigMap: %v", err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
framework.Logf("Using built-in SRIOV Device Plugin Config Map")
|
||||||
|
}
|
||||||
|
|
||||||
|
configMap := readConfigMapV1OrDie(cmData)
|
||||||
ginkgo.By(fmt.Sprintf("Creating configMap %v/%v", metav1.NamespaceSystem, configMap.Name))
|
ginkgo.By(fmt.Sprintf("Creating configMap %v/%v", metav1.NamespaceSystem, configMap.Name))
|
||||||
if _, err = f.ClientSet.CoreV1().ConfigMaps(metav1.NamespaceSystem).Create(context.TODO(), configMap, metav1.CreateOptions{}); err != nil {
|
if _, err = f.ClientSet.CoreV1().ConfigMaps(metav1.NamespaceSystem).Create(context.TODO(), configMap, metav1.CreateOptions{}); err != nil {
|
||||||
framework.Failf("unable to create test configMap %s: %v", configMap.Name, err)
|
framework.Failf("unable to create test configMap %s: %v", configMap.Name, err)
|
||||||
|
Loading…
Reference in New Issue
Block a user