InitSystem is the interface that describe behaviors of an init system
type InitSystem interface { // EnableCommand returns a string describing how to enable a service EnableCommand(service string) string // ServiceStart tries to start a specific service ServiceStart(service string) error // ServiceStop tries to stop a specific service ServiceStop(service string) error // ServiceRestart tries to reload the environment and restart the specific service ServiceRestart(service string) error // ServiceExists ensures the service is defined for this init system. ServiceExists(service string) bool // ServiceIsEnabled ensures the service is enabled to start on each boot. ServiceIsEnabled(service string) bool // ServiceIsActive ensures the service is running, or attempting to run. (crash looping in the case of kubelet) ServiceIsActive(service string) bool }
func GetInitSystem() (InitSystem, error)
GetInitSystem returns an InitSystem for the current system, or nil if we cannot detect a supported init system. This indicates we will skip init system checks, not an error.
OpenRCInitSystem defines openrc
type OpenRCInitSystem struct{}
func (openrc OpenRCInitSystem) EnableCommand(service string) string
EnableCommand return a string describing how to enable a service
func (openrc OpenRCInitSystem) ServiceExists(service string) bool
ServiceExists ensures the service is defined for this init system. openrc writes to stderr if a service is not found or not enabled this is in contrast to systemd which only writes to stdout. Hence, we use the Combinedoutput, and ignore the error.
func (openrc OpenRCInitSystem) ServiceIsActive(service string) bool
ServiceIsActive ensures the service is running, or attempting to run. (crash looping in the case of kubelet)
func (openrc OpenRCInitSystem) ServiceIsEnabled(service string) bool
ServiceIsEnabled ensures the service is enabled to start on each boot.
func (openrc OpenRCInitSystem) ServiceRestart(service string) error
ServiceRestart tries to reload the environment and restart the specific service
func (openrc OpenRCInitSystem) ServiceStart(service string) error
ServiceStart tries to start a specific service
func (openrc OpenRCInitSystem) ServiceStop(service string) error
ServiceStop tries to stop a specific service
SystemdInitSystem defines systemd
type SystemdInitSystem struct{}
func (sysd SystemdInitSystem) EnableCommand(service string) string
EnableCommand return a string describing how to enable a service
func (sysd SystemdInitSystem) ServiceExists(service string) bool
ServiceExists ensures the service is defined for this init system.
func (sysd SystemdInitSystem) ServiceIsActive(service string) bool
ServiceIsActive will check is the service is "active". In the case of crash looping services (kubelet in our case) status will return as "activating", so we will consider this active as well.
func (sysd SystemdInitSystem) ServiceIsEnabled(service string) bool
ServiceIsEnabled ensures the service is enabled to start on each boot.
func (sysd SystemdInitSystem) ServiceRestart(service string) error
ServiceRestart tries to reload the environment and restart the specific service
func (sysd SystemdInitSystem) ServiceStart(service string) error
ServiceStart tries to start a specific service
func (sysd SystemdInitSystem) ServiceStop(service string) error
ServiceStop tries to stop a specific service