func (s *systemd) RunUnitCommand(u Unit, c string) (string, error) { conn, err := dbus.New() if err != nil { return "", err } var fn func(string, string) (string, error) switch c { case "start": fn = conn.StartUnit case "stop": fn = conn.StopUnit case "restart": fn = conn.RestartUnit case "reload": fn = conn.ReloadUnit case "try-restart": fn = conn.TryRestartUnit case "reload-or-restart": fn = conn.ReloadOrRestartUnit case "reload-or-try-restart": fn = conn.ReloadOrTryRestartUnit default: return "", fmt.Errorf("Unsupported systemd command %q", c) } return fn(u.Name, "replace") }
func (s *systemd) DaemonReload() error { conn, err := dbus.New() if err != nil { return err } return conn.Reload() }
func (s *systemd) EnableUnitFile(u Unit) error { conn, err := dbus.New() if err != nil { return err } units := []string{u.Name} _, _, err = conn.EnableUnitFiles(units, u.Runtime, true) return err }
func ExecuteScript(scriptPath string) (string, error) { props := []dbus.Property{ dbus.PropDescription("Unit generated and executed by coreos-cloudinit on behalf of user"), dbus.PropExecStart([]string{"/bin/bash", scriptPath}, false), } base := path.Base(scriptPath) name := fmt.Sprintf("coreos-cloudinit-%s.service", base) log.Printf("Creating transient systemd unit '%s'", name) conn, err := dbus.New() if err != nil { return "", err } _, err = conn.StartTransientUnit(name, "replace", props...) return name, err }