func runConfig(config *cloudinit.CloudConfig) error { f, err := ioutil.TempFile("", "rackspace-cloudinit-") if err != nil { return err } log.Println("writing to:", f.Name()) _, err = f.WriteString(config.String()) if err != nil { return err } // systemd-run coreos-cloudinit --file f.Name() props := []dbus.Property{ dbus.PropDescription("Unit generated and executed by coreos-cloudinit on behalf of user"), dbus.PropExecStart([]string{"/usr/bin/coreos-cloudinit", "--from-file", f.Name()}, false), } tmp_file := filepath.Base(f.Name()) name := fmt.Sprintf("%s.service", tmp_file) log.Printf("Creating transient systemd unit '%s'", name) conn, err := dbus.New() if err != nil { return err } _, err = conn.StartTransientUnit(name, "replace", props...) return err }
func StartUnitByName(name string) error { conn, err := dbus.New() if err != nil { return err } _, err = conn.StartUnit(name, "replace") return err }
func DaemonReload() error { conn, err := dbus.New() if err != nil { return err } _, err = conn.Reload() return err }
func EnableUnitFile(file string, runtime bool) error { conn, err := dbus.New() if err != nil { return err } files := []string{file} _, _, err = conn.EnableUnitFiles(files, runtime, true) return err }
func RestartUnitByName(name string) error { log.Printf("Restarting unit %s", name) conn, err := dbus.New() if err != nil { return err } output, err := conn.RestartUnit(name, "replace") log.Printf("Restart completed with '%s'", output) 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 }