From 2abc8b28a5e46f273f712ddb1cf1544ca4f7d7c0 Mon Sep 17 00:00:00 2001
From: Florent Gluck <florent.gluck@hesge.ch>
Date: Fri, 29 Mar 2024 09:15:27 +0100
Subject: [PATCH] Cleaned-up vmedit code by avoiding serializing useless data

---
 src/client/cmdVM/vmEdit.go    | 12 +++++-------
 src/client/version/version.go |  4 ++--
 src/common/params/vms.go      |  2 --
 src/server/version/version.go |  4 ++--
 src/server/vms/vms.go         |  4 ++--
 5 files changed, 11 insertions(+), 15 deletions(-)

diff --git a/src/client/cmdVM/vmEdit.go b/src/client/cmdVM/vmEdit.go
index b57a51d..4710b2c 100644
--- a/src/client/cmdVM/vmEdit.go
+++ b/src/client/cmdVM/vmEdit.go
@@ -99,7 +99,7 @@ func (cmd *Edit)Run(args []string) int {
 }
 
 func (cmd *Edit)parseArgs(args []string) (*params.VMEdit, []string, error) {
-    vmParams := &params.VMEdit {}
+    vmParams := &params.VMEdit { Cpus: 0, Ram: 0 }
     var patterns []string
     atLeastOneArg := false
 
@@ -121,10 +121,9 @@ func (cmd *Edit)parseArgs(args []string) (*params.VMEdit, []string, error) {
         s = getStringVal(arg, "cpus=")
         if s != "" {
             cpus, err := strconv.Atoi(s)
-            if err != nil {
-                return nil, nil, errors.New("Invalid number of CPU(s)")
+            if err != nil || cpus < 1 {
+                return nil, nil, errors.New("Error: invalid number of CPU(s)!")
             }
-            vmParams.CpusUpdated = true
             vmParams.Cpus = cpus
             atLeastOneArg = true
             continue
@@ -132,10 +131,9 @@ func (cmd *Edit)parseArgs(args []string) (*params.VMEdit, []string, error) {
         s = getStringVal(arg, "ram=")
         if s != "" {
             ram, err := strconv.Atoi(s)
-            if err != nil {
-                return nil, nil, errors.New("Invalid amount of RAM")
+            if err != nil || ram < 1 {
+                return nil, nil, errors.New("Error: invalid amount of RAM!")
             }
-            vmParams.RamUpdated = true
             vmParams.Ram = ram
             atLeastOneArg = true
             continue
diff --git a/src/client/version/version.go b/src/client/version/version.go
index 9ca6a91..4877ef2 100644
--- a/src/client/version/version.go
+++ b/src/client/version/version.go
@@ -7,8 +7,8 @@ import (
 
 const (
     major  = 1
-    minor  = 8
-    bugfix = 10
+    minor  = 9
+    bugfix = 0
 )
 
 type Version struct {
diff --git a/src/common/params/vms.go b/src/common/params/vms.go
index bc5cabf..5af3ed7 100644
--- a/src/common/params/vms.go
+++ b/src/common/params/vms.go
@@ -26,8 +26,6 @@ type VMEdit struct {
 	Ram int               `json:"ram"        validate:"required,gte=256,lte=32768"`
 	Nic vm.NicType        `json:"nic"        validate:"required`
 	UsbDevs []string      `json:"usbDevs"    validate:"required`
-	CpusUpdated bool
-	RamUpdated bool
 }
 
 type VMAddAccess struct {
diff --git a/src/server/version/version.go b/src/server/version/version.go
index 66b06f8..a9c0dce 100644
--- a/src/server/version/version.go
+++ b/src/server/version/version.go
@@ -6,8 +6,8 @@ import (
 
 const (
     major  = 1
-    minor  = 8
-    bugfix = 8
+    minor  = 9
+    bugfix = 0
 )
 
 type Version struct {
diff --git a/src/server/vms/vms.go b/src/server/vms/vms.go
index 8ddf6c8..dbba5a5 100644
--- a/src/server/vms/vms.go
+++ b/src/server/vms/vms.go
@@ -555,10 +555,10 @@ func (vms *VMs)EditVM(vmID uuid.UUID, p *params.VMEdit) error {
     if p.Name != "" {
         vm.v.Name = p.Name
     }
-    if p.CpusUpdated {
+    if p.Cpus > 0 {
         vm.v.Cpus = p.Cpus
     }
-    if p.RamUpdated {
+    if p.Ram > 0 {
         vm.v.Ram = p.Ram
     }
     if p.Nic != "" {
-- 
GitLab