From 613be842bee37eec4d0f74ddfa91a3a0bf8db43a Mon Sep 17 00:00:00 2001 From: CppBunny Date: Sun, 7 Jan 2024 14:31:30 +0100 Subject: [PATCH] fix(vm): optimize retrieval of VM volume attributes from a datastore (#862) * Use GetDatastoreFile instead of ListDatastoreFiles Signed-off-by: CppBunny * make linter happy Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> --------- Signed-off-by: CppBunny Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> --- proxmox/nodes/storage/content.go | 7 +------ proxmoxtf/resource/vm.go | 19 ++++--------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/proxmox/nodes/storage/content.go b/proxmox/nodes/storage/content.go index bb45a4df..fed4ddd5 100644 --- a/proxmox/nodes/storage/content.go +++ b/proxmox/nodes/storage/content.go @@ -72,12 +72,7 @@ func (c *Client) ListDatastoreFiles( func (c *Client) GetDatastoreFile( ctx context.Context, volumeID string, - nodeName string, ) (*DatastoreFileGetResponseData, error) { - reqBody := &DatastoreFileGetRequestData{ - Node: nodeName, - VolumeID: volumeID, - } resBody := &DatastoreFileGetResponseBody{} err := c.DoRequest( @@ -89,7 +84,7 @@ func (c *Client) GetDatastoreFile( url.PathEscape(volumeID), ), ), - reqBody, + nil, resBody, ) if err != nil { diff --git a/proxmoxtf/resource/vm.go b/proxmoxtf/resource/vm.go index 0cfd7004..fe442cb6 100644 --- a/proxmoxtf/resource/vm.go +++ b/proxmoxtf/resource/vm.go @@ -4187,18 +4187,13 @@ func vmReadCustom( if datastoreID != "" { // disk format may not be returned by config API if it is default for the storage, and that may be different // from the default qcow2, so we need to read it from the storage API to make sure we have the correct value - files, err := api.Node(nodeName).Storage(datastoreID).ListDatastoreFiles(ctx) + volume, err := api.Node(nodeName).Storage(datastoreID).GetDatastoreFile(ctx, dd.FileVolume) if err != nil { diags = append(diags, diag.FromErr(err)...) continue } - for _, v := range files { - if v.VolumeID == dd.FileVolume { - disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = v.FileFormat - break - } - } + disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = volume.FileFormat } } else { disk[mkResourceVirtualEnvironmentVMDiskFileFormat] = dd.Format @@ -4292,17 +4287,11 @@ func vmReadCustom( } else { // disk format may not be returned by config API if it is default for the storage, and that may be different // from the default qcow2, so we need to read it from the storage API to make sure we have the correct value - files, err := api.Node(nodeName).Storage(fileIDParts[0]).ListDatastoreFiles(ctx) + volume, err := api.Node(nodeName).Storage(fileIDParts[0]).GetDatastoreFile(ctx, vmConfig.EFIDisk.FileVolume) if err != nil { diags = append(diags, diag.FromErr(err)...) } else { - efiDisk[mkResourceVirtualEnvironmentVMEFIDiskFileFormat] = "" - for _, v := range files { - if v.VolumeID == vmConfig.EFIDisk.FileVolume { - efiDisk[mkResourceVirtualEnvironmentVMEFIDiskFileFormat] = v.FileFormat - break - } - } + efiDisk[mkResourceVirtualEnvironmentVMEFIDiskFileFormat] = volume.FileFormat } }