Skip to content
Snippets Groups Projects
Select Git revision
  • a929f5769b6be4a386fa404b2c545470ac32f24d
  • live_exam_os_ubuntu default protected
2 results

vmStart.go

Blame
  • vmStart.go 1.43 KiB
    package cmdVM
    
    import (
        u "nexus-client/utils"
        g "nexus-client/globals"
    )
    
    type Start struct {
        Name string
    }
    
    func (cmd *Start)GetName() string {
        return cmd.Name
    }
    
    func (cmd *Start)GetDesc() []string {
        return []string{
            "Starts one or more VMs.",
            "Requires VM_START VM access capability or VM_START_ANY user capability."}
    }
    
    func (cmd *Start)PrintUsage() {
        printRegexUsage(cmd)
        printRegexUsageDetails()
    }
    
    func (cmd *Start)Run(args []string) int {
        client := g.GetInstance().Client
        host := g.GetInstance().Host
    
        argc := len(args)
        if argc < 1 {
            cmd.PrintUsage()
            return 1
        }
    
        vms, err := getFilteredVMs("/vms/start", args)
        if err != nil {
            u.PrintlnErr(err.Error())
            return 1
        }
    
        if len(vms) == 0 {
            u.PrintlnErr("Error: VM(s) not found.")
            return 1
        }
    
        statusCode := 0
    
        for _, vm := range(vms) {
            uuid := vm.ID.String()
            resp, err := client.R().Put(host+"/vms/"+uuid+"/start")
            if err != nil {
                u.PrintlnErr("Failed starting VM \""+vm.Name+"\": "+err.Error())
                statusCode = 1
            } else {
                if resp.IsSuccess() {
                    u.Println("Started VM \""+vm.Name+"\"")
                } else {
                    u.PrintlnErr("Failed starting VM \""+vm.Name+"\": "+resp.Status()+": "+resp.String())
                    statusCode = 1
                }
            }
    
        }
    
        return statusCode
    }