From 253a59ece6c8f505362d7cd40f62a076b7caa590 Mon Sep 17 00:00:00 2001 From: Pavel Boldyrev <627562+bpg@users.noreply.github.com> Date: Sun, 2 Jul 2023 20:48:38 -0400 Subject: [PATCH] fix(vm): do not error on `read` at state refresh if VM is missing (#398) --- proxmox/cluster/cluster.go | 5 ++++- proxmoxtf/resource/vm.go | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/proxmox/cluster/cluster.go b/proxmox/cluster/cluster.go index 00193fe3..13b69db7 100644 --- a/proxmox/cluster/cluster.go +++ b/proxmox/cluster/cluster.go @@ -22,6 +22,9 @@ const ( getVMIDStep = 1 ) +// ErrVMDoesNotExist is returned when the VM identifier cannot be found on any cluster node. +var ErrVMDoesNotExist = errors.New("unable to find VM identifier on any cluster node") + var ( //nolint:gochecknoglobals getVMIDCounter = -1 @@ -136,5 +139,5 @@ func (c *Client) GetVMNodeName(ctx context.Context, vmID int) (*string, error) { } } - return nil, errors.New("unable to determine node name for VM identifier") + return nil, ErrVMDoesNotExist } diff --git a/proxmoxtf/resource/vm.go b/proxmoxtf/resource/vm.go index d4114d99..6e471d9e 100644 --- a/proxmoxtf/resource/vm.go +++ b/proxmoxtf/resource/vm.go @@ -21,6 +21,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" types2 "github.com/bpg/terraform-provider-proxmox/internal/types" + "github.com/bpg/terraform-provider-proxmox/proxmox/cluster" "github.com/bpg/terraform-provider-proxmox/proxmox/nodes/vms" "github.com/bpg/terraform-provider-proxmox/proxmox/types" "github.com/bpg/terraform-provider-proxmox/proxmoxtf" @@ -3042,6 +3043,12 @@ func vmRead(ctx context.Context, d *schema.ResourceData, m interface{}) diag.Dia vmNodeName, err := api.Cluster().GetVMNodeName(ctx, vmID) if err != nil { + if errors.Is(err, cluster.ErrVMDoesNotExist) { + d.SetId("") + + return nil + } + return diag.FromErr(err) }