diff --git a/src/client/cmdVM/vmListSingle.go b/src/client/cmdVM/vmListSingle.go new file mode 100644 index 0000000000000000000000000000000000000000..6a2b266796c4b4b2ffee981f16307445abde40ed --- /dev/null +++ b/src/client/cmdVM/vmListSingle.go @@ -0,0 +1,66 @@ +package cmdVM + +import ( + u "nexus-client/utils" + g "nexus-client/globals" +) + +type ListSingle struct { + Name string +} + +func (cmd *ListSingle)GetName() string { + return cmd.Name +} + +func (cmd *ListSingle)GetDesc() []string { + return []string{ + "Lists details about a VM.", + "Requires VM_LIST VM access capability or VM_LIST_ANY user capability."} +} + +func (cmd *ListSingle)PrintUsage() { + for _, desc := range cmd.GetDesc() { + u.PrintlnErr(desc) + } + u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――") + u.PrintlnErr("USAGE: ",cmd.GetName(), " ID") + u.PrintlnErr("―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――") +} + +func (cmd *ListSingle)Run(args []string) int { + client := g.GetInstance().Client + host := g.GetInstance().Host + + argc := len(args) + if argc < 1 { + cmd.PrintUsage() + return 1 + } + + uuid := args[0] + resp, err := client.R().Get(host+"/vms/"+uuid) + if err != nil { + u.PrintlnErr("Failed retrieving VM \""+uuid+"\": "+err.Error()) + return 1 + } else { + if resp.IsSuccess() { + vm, err := getVM(resp) + if err != nil { + u.PrintlnErr("Failed retrieving server's response: "+err.Error()) + return 1 + } + str, err := vm.String() + if err != nil { + u.PrintlnErr("Failed decoding VM "+vm.ID.String()+" to string. Skipped.") + } else { + u.Println(str) + } + } else { + u.PrintlnErr("Failed retrieving VM \""+uuid+"\": "+resp.Status()+": "+resp.String()) + return 1 + } + } + + return 0 +}