const logindService … const logindObject … const logindInterface … type dBusConnector … type DBusCon … func NewDBusCon() (*DBusCon, error) { … } type InhibitLock … // CurrentInhibitDelay returns the current delay inhibitor timeout value as configured in logind.conf(5). // see https://www.freedesktop.org/software/systemd/man/logind.conf.html for more details. func (bus *DBusCon) CurrentInhibitDelay() (time.Duration, error) { … } // InhibitShutdown creates an systemd inhibitor by calling logind's Inhibt() and returns the inhibitor lock // see https://www.freedesktop.org/wiki/Software/systemd/inhibit/ for more details. func (bus *DBusCon) InhibitShutdown() (InhibitLock, error) { … } // ReleaseInhibitLock will release the underlying inhibit lock which will cause the shutdown to start. func (bus *DBusCon) ReleaseInhibitLock(lock InhibitLock) error { … } // ReloadLogindConf uses dbus to send a SIGHUP to the systemd-logind service causing logind to reload it's configuration. func (bus *DBusCon) ReloadLogindConf() error { … } // MonitorShutdown detects the node shutdown by watching for "PrepareForShutdown" logind events. // see https://www.freedesktop.org/wiki/Software/systemd/inhibit/ for more details. func (bus *DBusCon) MonitorShutdown() (<-chan bool, error) { … } const logindConfigDirectory … const kubeletLogindConf … // OverrideInhibitDelay writes a config file to logind overriding InhibitDelayMaxSec to the value desired. func (bus *DBusCon) OverrideInhibitDelay(inhibitDelayMax time.Duration) error { … }