Allows manual restart of dbus to work in Ubuntu.

This commit is contained in:
Shiming Zhang 2021-06-22 15:13:02 +08:00
parent f4e7828674
commit 3daef0a534

View File

@ -21,6 +21,8 @@ package e2enode
import ( import (
"context" "context"
"fmt" "fmt"
"os"
"path/filepath"
"strconv" "strconv"
"time" "time"
@ -180,8 +182,16 @@ var _ = SIGDescribe("GracefulNodeShutdown [Serial] [NodeAlphaFeature:GracefulNod
}) })
ginkgo.It("after restart dbus, should be able to gracefully shutdown", func() { ginkgo.It("after restart dbus, should be able to gracefully shutdown", func() {
// allows manual restart of dbus to work in Ubuntu.
err := overlayDbusConfig()
framework.ExpectNoError(err)
defer func() {
err := restoreDbusConfig()
framework.ExpectNoError(err)
}()
ginkgo.By("Restart Dbus") ginkgo.By("Restart Dbus")
err := restartDbus() err = restartDbus()
framework.ExpectNoError(err) framework.ExpectNoError(err)
ginkgo.By("Emitting Shutdown signal") ginkgo.By("Emitting Shutdown signal")
@ -261,3 +271,41 @@ func restartDbus() error {
_, err := runCommand("sh", "-c", cmd) _, err := runCommand("sh", "-c", cmd)
return err return err
} }
func systemctlDaemonReload() error {
cmd := "systemctl daemon-reload"
_, err := runCommand("sh", "-c", cmd)
return err
}
var (
dbusConfPath = "/etc/systemd/system/dbus.service.d/k8s-graceful-node-shutdown-e2e.conf"
dbusConf = `
[Unit]
RefuseManualStart=no
RefuseManualStop=no
[Service]
KillMode=control-group
ExecStop=
`
)
func overlayDbusConfig() error {
err := os.MkdirAll(filepath.Dir(dbusConf), 0755)
if err != nil {
return err
}
err = os.WriteFile(dbusConfPath, []byte(dbusConf), 0644)
if err != nil {
return err
}
return systemctlDaemonReload()
}
func restoreDbusConfig() error {
err := os.Remove(dbusConf)
if err != nil {
return err
}
return systemctlDaemonReload()
}