Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var RootCmd = &cobra.Command{ Use: "vlaunch", Run: func(cmd *cobra.Command, args []string) { dataPath := config.GetConfig().GetString("data_path") logWriters := []io.Writer{} if logFile, err := os.OpenFile(path.Join(dataPath, "vlaunch.log"), os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666); err == nil { logWriters = append(logWriters, logFile) defer logFile.Close() } else if logFile, err := os.Create("/tmp/vlaunch.log"); err == nil { logWriters = append(logWriters, logFile) defer logFile.Close() } logWriters = append(logWriters, os.Stdout) logWriters = append(logWriters, os.Stderr) multiLogger := io.MultiWriter(logWriters...) log.SetOutput(multiLogger) if !backend.IsAdmin() { log.Println("Elevating privileges") executable, err := os.Executable() if err != nil { log.Panic(fmt.Sprintf("Failed to determine executable: %s", err.Error())) } if err := backend.RunAsRoot(executable); err != nil { log.Panic(fmt.Sprintf("Failed to run as root: %s", err.Error())) } return } vm, err := vm.NewVM() useGui := config.GetConfig().GetBool("gui") app := widgets.NewQApplication(len(os.Args), os.Args) if useGui == true { balloon, err := gui.NewBalloon(app, "The machine is starting", "Please wait...", true) if err != nil { log.Panic(err) } vm.RegisterEventHandler(balloon) } if err != nil { log.Panic(fmt.Sprintf("Failed to create vm: %s", err.Error())) } defer func() { if !keepVM { if err := vm.Release(); err != nil { log.Panic(fmt.Sprintf("Failed to release vm: %s", err.Error())) } } }() go func() { log.Println("Creating VM") if err := vm.Create(); err != nil { log.Panic(fmt.Sprintf("Failed to create vm: %s", err.Error())) } log.Println("Starting VM") if err := vm.Start(); err != nil { log.Panic(fmt.Sprintf("Failed to start vm: %s", err.Error())) } log.Println("Running VM") if err := vm.Run(); err != nil { log.Panic(fmt.Sprintf("Error during vm execution: %s", err.Error())) } app.QuitDefault() }() widgets.QApplication_Exec() }, }
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.