From 10dc1ca0846695808ae9fe79204be68f5de9dc3f Mon Sep 17 00:00:00 2001 From: Davanum Srinivas Date: Fri, 7 Jul 2023 14:08:28 -0400 Subject: [PATCH] Skip GracefulNodeShutdown on older systemd versions Signed-off-by: Davanum Srinivas --- test/e2e_node/node_shutdown_linux_test.go | 26 +++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/test/e2e_node/node_shutdown_linux_test.go b/test/e2e_node/node_shutdown_linux_test.go index ed556f94767..5e01b06581e 100644 --- a/test/e2e_node/node_shutdown_linux_test.go +++ b/test/e2e_node/node_shutdown_linux_test.go @@ -23,7 +23,10 @@ import ( "context" "fmt" "os" + "os/exec" "path/filepath" + "regexp" + "strconv" "time" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -40,6 +43,7 @@ import ( "k8s.io/kubernetes/pkg/apis/scheduling" "k8s.io/kubernetes/test/e2e/framework" e2epod "k8s.io/kubernetes/test/e2e/framework/pod" + e2eskipper "k8s.io/kubernetes/test/e2e/framework/skipper" "github.com/godbus/dbus/v5" v1 "k8s.io/api/core/v1" @@ -57,6 +61,28 @@ var _ = SIGDescribe("GracefulNodeShutdown [Serial] [NodeFeature:GracefulNodeShut f := framework.NewDefaultFramework("graceful-node-shutdown") f.NamespacePodSecurityLevel = admissionapi.LevelPrivileged + ginkgo.BeforeEach(func() { + if _, err := exec.LookPath("systemd-run"); err == nil { + if version, verr := exec.Command("systemd-run", "--version").Output(); verr == nil { + // sample output from $ systemd-run --version + // systemd 245 (245.4-4ubuntu3.13) + re := regexp.MustCompile(`systemd (\d+)`) + if match := re.FindSubmatch(version); len(match) > 1 { + systemdVersion, err := strconv.Atoi(string(match[1])) + if err != nil { + framework.Logf("failed to parse systemd version with error %v, 'systemd-run --version' output was [%s]", err, version) + } else { + // See comments in issue 107043, this is a known problem for a long time that this feature does not work on older systemd + // https://github.com/kubernetes/kubernetes/issues/107043#issuecomment-997546598 + if systemdVersion < 245 { + e2eskipper.Skipf("skipping GracefulNodeShutdown tests as we are running on an old version of systemd : %d", systemdVersion) + } + } + } + } + } + }) + ginkgo.Context("graceful node shutdown when PodDisruptionConditions are enabled [NodeFeature:PodDisruptionConditions]", func() { const (