From 106bcd2ff9c92edaf0b33c12f209bddfc84a28c8 Mon Sep 17 00:00:00 2001 From: Pavel Boldyrev <627562+bpg@users.noreply.github.com> Date: Wed, 27 Nov 2024 21:23:27 -0500 Subject: [PATCH] fix(vm): add validation for `node_name` values (#1659) * fix(vm): add validation for `node_name` values Also, fix acceptance tests that now fail on PVE 8.3 --------- Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> --- fwprovider/test/datasource_version_test.go | 6 +++--- fwprovider/test/resource_vm_disks_test.go | 6 +++--- fwprovider/test/resource_vm_test.go | 11 +++++++++++ proxmoxtf/resource/vm/vm.go | 7 ++++--- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/fwprovider/test/datasource_version_test.go b/fwprovider/test/datasource_version_test.go index c52d3f4a..fb253f0a 100644 --- a/fwprovider/test/datasource_version_test.go +++ b/fwprovider/test/datasource_version_test.go @@ -28,13 +28,13 @@ func TestAccDatasourceVersion(t *testing.T) { { Config: `data "proxmox_virtual_environment_version" "test" {}`, Check: resource.ComposeAggregateTestCheckFunc( - resource.TestCheckResourceAttr(datasourceName, "release", "8.2"), + resource.TestCheckResourceAttr(datasourceName, "release", "8.3"), resource.TestCheckResourceAttrSet(datasourceName, "repository_id"), resource.TestCheckResourceAttrWith(datasourceName, "version", func(value string) error { - if strings.HasPrefix(value, "8.2") { + if strings.HasPrefix(value, "8.3") { return nil } - return fmt.Errorf("version %s does not start with 8.2", value) + return fmt.Errorf("version %s does not start with 8.3", value) }), resource.TestCheckResourceAttrSet(datasourceName, "id"), ), diff --git a/fwprovider/test/resource_vm_disks_test.go b/fwprovider/test/resource_vm_disks_test.go index 62981d43..a2c64fa9 100644 --- a/fwprovider/test/resource_vm_disks_test.go +++ b/fwprovider/test/resource_vm_disks_test.go @@ -204,9 +204,9 @@ func TestAccResourceVMDisks(t *testing.T) { }`), Check: ResourceAttributes("proxmox_virtual_environment_vm.test_disk", map[string]string{ "disk.0.interface": "virtio0", - "disk.0.path_in_datastore": `vm-\d+-disk-1`, + "disk.0.path_in_datastore": `base-\d+-disk-1`, "disk.1.interface": "scsi0", - "disk.1.path_in_datastore": `vm-\d+-disk-0`, + "disk.1.path_in_datastore": `base-\d+-disk-0`, }), }, { @@ -431,7 +431,7 @@ func TestAccResourceVMDisks(t *testing.T) { "disk.0.file_format": "raw", "disk.0.interface": "scsi0", "disk.0.iothread": "true", - "disk.0.path_in_datastore": `vm-\d+-disk-\d+`, + "disk.0.path_in_datastore": `base-\d+-disk-\d+`, "disk.0.size": "8", "disk.0.ssd": "true", }), diff --git a/fwprovider/test/resource_vm_test.go b/fwprovider/test/resource_vm_test.go index 3e4bf2da..ed99b0d5 100644 --- a/fwprovider/test/resource_vm_test.go +++ b/fwprovider/test/resource_vm_test.go @@ -9,6 +9,7 @@ package test import ( + "regexp" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/resource" @@ -69,6 +70,16 @@ func TestAccResourceVM(t *testing.T) { }), ), }}}, + { + "empty node_name", []resource.TestStep{{ + Config: te.RenderConfig(` + resource "proxmox_virtual_environment_vm" "test_empty_node_name" { + node_name = "" + started = false + }`), + ExpectError: regexp.MustCompile(`expected "node_name" to not be an empty string, got `), + }}, + }, { "protection", []resource.TestStep{{ Config: te.RenderConfig(` diff --git a/proxmoxtf/resource/vm/vm.go b/proxmoxtf/resource/vm/vm.go index ddc9ed65..051a3ba6 100644 --- a/proxmoxtf/resource/vm/vm.go +++ b/proxmoxtf/resource/vm/vm.go @@ -1093,9 +1093,10 @@ func VM() *schema.Resource { Default: dvName, }, mkNodeName: { - Type: schema.TypeString, - Description: "The node name", - Required: true, + Type: schema.TypeString, + Description: "The node name", + Required: true, + ValidateFunc: validation.StringIsNotEmpty, }, mkNUMA: { Type: schema.TypeList,