From 1896ea08f09ec4e684a886d11a5915c6e573eac1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Emmanuel=20Beno=C3=AEt?= Date: Sat, 19 Aug 2023 03:07:09 +0200 Subject: [PATCH] chore(vm): fix linter errors (#506) fix: linter error in ambush * This commit fixes a linter error that somehow doesn't manifest unless some other, unrelated changes trigger it (see #501 and #505). * In addition it fixes a similar issue that had so far gone undetected by the linter. * Refactored the code in question into a function, since it was mostly duplicated. * Simplified a pair of conditionals that had the same code in both branches. --- proxmoxtf/resource/vm.go | 61 ++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 36 deletions(-) diff --git a/proxmoxtf/resource/vm.go b/proxmoxtf/resource/vm.go index 4affc067..25c8fc9c 100644 --- a/proxmoxtf/resource/vm.go +++ b/proxmoxtf/resource/vm.go @@ -3433,6 +3433,27 @@ func vmRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Dia return vmReadCustom(ctx, d, m, vmID, vmConfig, vmStatus) } +// orderedListFromMap generates a list from a map's values. The values are sorted based on the map's keys. +func orderedListFromMap(inputMap map[string]interface{}) []interface{} { + itemCount := len(inputMap) + keyList := make([]string, itemCount) + i := 0 + + for key := range inputMap { + keyList[i] = key + i++ + } + + sort.Strings(keyList) + + orderedList := make([]interface{}, itemCount) + for i, k := range keyList { + orderedList[i] = inputMap[k] + } + + return orderedList +} + func vmReadCustom( ctx context.Context, d *schema.ResourceData, @@ -3705,7 +3726,6 @@ func vmReadCustom( currentDiskList := d.Get(mkResourceVirtualEnvironmentVMDisk).([]interface{}) diskMap := map[string]interface{}{} diskObjects := getDiskInfo(vmConfig, d) - var orderedDiskList []interface{} for di, dd := range diskObjects { disk := map[string]interface{}{} @@ -3807,24 +3827,8 @@ func vmReadCustom( diskMap[di] = disk } - var keyList []string - - for key := range diskMap { - keyList = append(keyList, key) - } - - sort.Strings(keyList) - - for _, k := range keyList { - orderedDiskList = append(orderedDiskList, diskMap[k]) - } - - if len(clone) > 0 { - if len(currentDiskList) > 0 { - err := d.Set(mkResourceVirtualEnvironmentVMDisk, orderedDiskList) - diags = append(diags, diag.FromErr(err)...) - } - } else if len(currentDiskList) > 0 { + if len(currentDiskList) > 0 { + orderedDiskList := orderedListFromMap(diskMap) err := d.Set(mkResourceVirtualEnvironmentVMDisk, orderedDiskList) diags = append(diags, diag.FromErr(err)...) } @@ -3887,7 +3891,6 @@ func vmReadCustom( currentPCIList := d.Get(mkResourceVirtualEnvironmentVMHostPCI).([]interface{}) pciMap := map[string]interface{}{} - var orderedPCIList []interface{} pciDevices := getPCIInfo(vmConfig, d) for pi, pp := range pciDevices { @@ -3933,23 +3936,9 @@ func vmReadCustom( pciMap[pi] = pci } - keyList = []string{} - for key := range pciMap { - keyList = append(keyList, key) - } - sort.Strings(keyList) - - for _, k := range keyList { - orderedPCIList = append(orderedPCIList, pciMap[k]) - } - - if len(clone) > 0 { - if len(currentPCIList) > 0 { - err := d.Set(mkResourceVirtualEnvironmentVMHostPCI, orderedPCIList) - diags = append(diags, diag.FromErr(err)...) - } - } else if len(currentPCIList) > 0 { + if len(currentPCIList) > 0 { // todo: reordering of devices by PVE may cause an issue here + orderedPCIList := orderedListFromMap(pciMap) err := d.Set(mkResourceVirtualEnvironmentVMHostPCI, orderedPCIList) diags = append(diags, diag.FromErr(err)...) }