Add mask and unmask to the disable and enable

pull/11232/head
Anders F Björklund 2021-04-29 23:10:29 +02:00
parent fe0a1774a6
commit bec9f23e29
4 changed files with 44 additions and 1 deletions

View File

@ -120,6 +120,14 @@ func (r *Docker) Enable(disOthers, forceSystemd bool) error {
return err
}
if err := r.Init.Unmask("docker.service"); err != nil {
return err
}
if err := r.Init.Enable("docker.socket"); err != nil {
klog.ErrorS(err, "Failed to enable", "service", "docker.socket")
}
if forceSystemd {
if err := r.forceSystemd(); err != nil {
return err
@ -146,7 +154,14 @@ func (r *Docker) Disable() error {
if err := r.Init.ForceStop("docker.socket"); err != nil {
klog.ErrorS(err, "Failed to stop", "service", "docker.socket")
}
return r.Init.ForceStop("docker")
if err := r.Init.ForceStop("docker.service"); err != nil {
klog.ErrorS(err, "Failed to stop", "service", "docker.service")
return err
}
if err := r.Init.Disable("docker.socket"); err != nil {
klog.ErrorS(err, "Failed to disable", "service", "docker.socket")
}
return r.Init.Mask("docker.service")
}
// ImageExists checks if an image exists

View File

@ -122,6 +122,11 @@ func (s *OpenRC) DisableNow(svc string) error {
return fmt.Errorf("disable now is not implemented for OpenRC! PRs to fix are welcomed")
}
// Mask does nothing
func (s *OpenRC) Mask(svc string) error {
return nil
}
// Enable does nothing
func (s *OpenRC) Enable(svc string) error {
return nil
@ -132,6 +137,11 @@ func (s *OpenRC) EnableNow(svc string) error {
return fmt.Errorf("enable now is not implemented for OpenRC! PRs to fix are welcomed")
}
// Unmask does nothing
func (s *OpenRC) Unmask(svc string) error {
return nil
}
// Restart restarts a service
func (s *OpenRC) Restart(svc string) error {
rr, err := s.r.RunCmd(exec.Command("sudo", "service", svc, "restart"))

View File

@ -44,12 +44,18 @@ type Manager interface {
// Disable disables a service and stops it right after.
DisableNow(string) error
// Mask prevents a service from being started
Mask(string) error
// Enable enables a service
Enable(string) error
// EnableNow enables a service and starts it right after.
EnableNow(string) error
// Unmask allows a service to be started
Unmask(string) error
// Start starts a service idempotently
Start(string) error

View File

@ -58,6 +58,12 @@ func (s *Systemd) DisableNow(svc string) error {
return err
}
// Mask prevents a service from being started
func (s *Systemd) Mask(svc string) error {
_, err := s.r.RunCmd(exec.Command("sudo", "systemctl", "mask", svc))
return err
}
// Enable enables a service
func (s *Systemd) Enable(svc string) error {
if svc == "kubelet" {
@ -76,6 +82,12 @@ func (s *Systemd) EnableNow(svc string) error {
return err
}
// Unmask allows a service to be started
func (s *Systemd) Unmask(svc string) error {
_, err := s.r.RunCmd(exec.Command("sudo", "systemctl", "unmask", svc))
return err
}
// Start starts a service
func (s *Systemd) Start(svc string) error {
if err := s.daemonReload(); err != nil {