cmd

package
v0.0.0-...-f4e3210 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 10, 2017 License: GPL-3.0 Imports: 11 Imported by: 0

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.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL