diff --git a/src/client_cli/vmEdit.go b/src/client_cli/vmEdit.go index 7909bb0ade6cedefe5719c4abec14707dd685654..c7afdab98c96eb25b4e96bc0003747ebdb40ac7b 100644 --- a/src/client_cli/vmEdit.go +++ b/src/client_cli/vmEdit.go @@ -3,12 +3,20 @@ package main import ( "strconv" "strings" + "errors" ) type CmdVMEdit struct{ name string } +type vmArgsParameters struct { + Name string + Cpus int + Ram int + Nic string +} + func (cmd *CmdVMEdit)Name() string { return cmd.name } @@ -25,7 +33,7 @@ func (cmd *CmdVMEdit)PrintUsage() { printlnErr("nic must be either \"none\" or \"user\"") } -func getStringVal(s string, prefix string) string { +func (cmd *CmdVMEdit)getStringVal(s string, prefix string) string { if strings.HasPrefix(s, prefix) { parts := strings.Split(s, prefix) return parts[1] @@ -33,58 +41,63 @@ func getStringVal(s string, prefix string) string { return "" } -func (cmd *CmdVMEdit)Run(args []string) int { - argc := len(args) - if argc < 2 || argc > 5 { - cmd.PrintUsage() - return 1 - } +func (cmd *CmdVMEdit)parseArgs(args []string) (*vmArgsParameters, error) { + vmArgs := &vmArgsParameters {} + atLeastOneArg := false - type VMArgs struct { - Name string - Cpus int - Ram int - Nic string - } - - vmArgs := &VMArgs {} - argsValid := false - id := args[0] - for _, arg := range args { - s := getStringVal(arg, "name=") + s := cmd.getStringVal(arg, "name=") if s != "" { vmArgs.Name = s - argsValid = true + atLeastOneArg = true } - s = getStringVal(arg, "cpus=") + s = cmd.getStringVal(arg, "cpus=") if s != "" { cpus, err := strconv.Atoi(s) if err != nil { - printlnErr("Invalid number of CPU(s)") - return 1 + return nil, errors.New("Invalid number of CPU(s)") } vmArgs.Cpus = cpus - argsValid = true + atLeastOneArg = true } - s = getStringVal(arg, "ram=") + s = cmd.getStringVal(arg, "ram=") if s != "" { ram, err := strconv.Atoi(s) if err != nil { - printlnErr("Invalid amount of RAM") - return 1 + return nil, errors.New("Invalid amount of RAM") } vmArgs.Ram = ram - argsValid = true + atLeastOneArg = true } - s = getStringVal(arg, "nic=") + s = cmd.getStringVal(arg, "nic=") if s != "" { vmArgs.Nic = s - argsValid = true + atLeastOneArg = true } } - if !argsValid { + if atLeastOneArg { + return vmArgs, nil + } else { + return nil, nil + } +} + +func (cmd *CmdVMEdit)Run(args []string) int { + argc := len(args) + if argc < 2 || argc > 5 { + cmd.PrintUsage() + return 1 + } + + id := args[0] + vmArgs, err := cmd.parseArgs(args[1:]) + if err != nil { + printlnErr(err.Error()) + return 1 + } + + if vmArgs == nil { cmd.PrintUsage() return 1 }