From 2740cdf393be5b5d8360431c7d31b18a3b466f97 Mon Sep 17 00:00:00 2001 From: Florent Gluck <florent.gluck@hesge.ch> Date: Mon, 11 Jul 2022 20:34:15 +0200 Subject: [PATCH] Ooops forgot to add vmEdit.go --- src/client_cli/vmEdit.go | 93 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 src/client_cli/vmEdit.go diff --git a/src/client_cli/vmEdit.go b/src/client_cli/vmEdit.go new file mode 100644 index 0000000..712199e --- /dev/null +++ b/src/client_cli/vmEdit.go @@ -0,0 +1,93 @@ +package main + +import ( + "strconv" + "strings" +) + +type CmdVMEdit struct{ + name string +} + +func (cmd *CmdVMEdit)Name() string { + return cmd.name +} + +func (cmd *CmdVMEdit)Desc() string { + return "Create a VM" +} + +func (cmd *CmdVMEdit)PrintUsage() { + printlnErr("Usage: "+cmd.name+" vmID [name=\"new name\"] [cpus=n] [ram=n] [nic=none/user]") + printlnErr("Parameters between [] are optional, but at least one must be defined.") +} + +func getStringVal(s string, prefix string) string { + if strings.HasPrefix(s, prefix) { + parts := strings.Split(s, prefix) + return parts[1] + } + return "" +} + +func (cmd *CmdVMEdit)Run(args []string) int { + argc := len(args) + if argc < 2 || argc > 5 { + cmd.PrintUsage() + return 1 + } + + type VMArgs struct { + Name string + Cpus int + Ram int + Nic string + } + + vmArgs := &VMArgs {} + + id := args[0] + + for _, arg := range args { + s := getStringVal(arg, "name=") + if s != "" { + vmArgs.Name = s + } + s = getStringVal(arg, "cpus=") + if s != "" { + cpus, err := strconv.Atoi(s) + if err != nil { + printlnErr("Invalid number of CPU(s)") + return 1 + } + vmArgs.Cpus = cpus + } + s = getStringVal(arg, "ram=") + if s != "" { + ram, err := strconv.Atoi(s) + if err != nil { + printlnErr("Invalid amount of RAM") + return 1 + } + vmArgs.Ram = ram + } + s = getStringVal(arg, "nic=") + if s != "" { + vmArgs.Nic = s + } + } + + resp, err := client.R().SetBody(vmArgs).Put(host+"/vms/"+id) + if err != nil { + printlnErr("Error: "+err.Error()) + return 1 + } + + if resp.IsSuccess() { + println(resp) + return 0 + } else { + printlnErr("Error: "+resp.Status()+": "+resp.String()) + return 1 + } +} -- GitLab