Select Git revision
vmStop.go 1.42 KiB
package cmdVM
import (
u "nexus-client/utils"
g "nexus-client/globals"
)
type Stop struct {
Name string
}
func (cmd *Stop)GetName() string {
return cmd.Name
}
func (cmd *Stop)GetDesc() []string {
return []string{
"Kills one or more VMs.",
"Requires VM_STOP VM access capability or VM_STOP_ANY user capability."}
}
func (cmd *Stop)PrintUsage() {
printRegexUsage(cmd)
printRegexUsageDetails()
}
func (cmd *Stop)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/stop", 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+"/stop")
if err != nil {
u.PrintlnErr("Failed stopping VM \""+vm.Name+"\": "+err.Error())
statusCode = 1
} else {
if resp.IsSuccess() {
u.Println("Stopped VM \""+vm.Name+"\"")
} else {
u.PrintlnErr("Failed stopping VM \""+vm.Name+"\": "+resp.Status()+": "+resp.String())
statusCode = 1
}
}
}
return statusCode
}