From 60a998cb09821fa0d9273eb34558f622e199bb85 Mon Sep 17 00:00:00 2001 From: Dan Petersen Date: Tue, 31 Dec 2019 01:40:51 +0100 Subject: [PATCH] Change state comparison and default values --- README.md | 2 +- .../data_source_virtual_environment_group.go | 2 +- .../data_source_virtual_environment_role.go | 2 +- .../data_source_virtual_environment_roles.go | 2 +- .../data_source_virtual_environment_user.go | 2 +- .../resource_virtual_environment_group.go | 4 +- .../resource_virtual_environment_role.go | 2 +- .../resource_virtual_environment_user.go | 6 +- proxmoxtf/resource_virtual_environment_vm.go | 56 +++++++++---------- proxmoxtf/utils.go | 16 +----- 10 files changed, 40 insertions(+), 54 deletions(-) diff --git a/README.md b/README.md index 56d578b0..aac8026f 100644 --- a/README.md +++ b/README.md @@ -435,7 +435,7 @@ This resource doesn't expose any additional attributes. * `started` - (Optional) Whether to start the virtual machine (defaults to `true`) * `vga` - (Optional) The VGA configuration * `enabled` - (Optional) Whether to enable the VGA device (defaults to `true`) - * `memory` - (Optional) The VGA memory in megabytes (4-512 MB) + * `memory` - (Optional) The VGA memory in megabytes (defaults to `16`) * `type` - (Optional) The VGA type (defaults to `std`) * `cirrus` - Cirrus (deprecated since QEMU 2.2) * `qxl` - SPICE diff --git a/proxmoxtf/data_source_virtual_environment_group.go b/proxmoxtf/data_source_virtual_environment_group.go index 1dac356a..ddd3e903 100644 --- a/proxmoxtf/data_source_virtual_environment_group.go +++ b/proxmoxtf/data_source_virtual_environment_group.go @@ -89,7 +89,7 @@ func dataSourceVirtualEnvironmentGroupRead(d *schema.ResourceData, m interface{} d.SetId(groupID) - aclParsed := make([]interface{}, 0) + aclParsed := []interface{}{} for _, v := range acl { if v.Type == "group" && v.UserOrGroupID == groupID { diff --git a/proxmoxtf/data_source_virtual_environment_role.go b/proxmoxtf/data_source_virtual_environment_role.go index 22f43272..67886022 100644 --- a/proxmoxtf/data_source_virtual_environment_role.go +++ b/proxmoxtf/data_source_virtual_environment_role.go @@ -47,7 +47,7 @@ func dataSourceVirtualEnvironmentRoleRead(d *schema.ResourceData, m interface{}) return err } - privileges := schema.NewSet(schema.HashString, make([]interface{}, 0)) + privileges := schema.NewSet(schema.HashString, []interface{}{}) if *accessRole != nil { for _, v := range *accessRole { diff --git a/proxmoxtf/data_source_virtual_environment_roles.go b/proxmoxtf/data_source_virtual_environment_roles.go index 12ab9d8c..6bef56ca 100644 --- a/proxmoxtf/data_source_virtual_environment_roles.go +++ b/proxmoxtf/data_source_virtual_environment_roles.go @@ -63,7 +63,7 @@ func dataSourceVirtualEnvironmentRolesRead(d *schema.ResourceData, m interface{} for i, v := range list { if v.Privileges != nil { - p := schema.NewSet(schema.HashString, make([]interface{}, 0)) + p := schema.NewSet(schema.HashString, []interface{}{}) for _, v := range *v.Privileges { p.Add(v) diff --git a/proxmoxtf/data_source_virtual_environment_user.go b/proxmoxtf/data_source_virtual_environment_user.go index c3464b8e..6f586599 100644 --- a/proxmoxtf/data_source_virtual_environment_user.go +++ b/proxmoxtf/data_source_virtual_environment_user.go @@ -127,7 +127,7 @@ func dataSourceVirtualEnvironmentUserRead(d *schema.ResourceData, m interface{}) d.SetId(userID) - aclParsed := make([]interface{}, 0) + aclParsed := []interface{}{} for _, v := range acl { if v.Type == "user" && v.UserOrGroupID == userID { diff --git a/proxmoxtf/resource_virtual_environment_group.go b/proxmoxtf/resource_virtual_environment_group.go index 03bb9442..b91ad136 100644 --- a/proxmoxtf/resource_virtual_environment_group.go +++ b/proxmoxtf/resource_virtual_environment_group.go @@ -31,7 +31,7 @@ func resourceVirtualEnvironmentGroup() *schema.Resource { Description: "The access control list", Optional: true, DefaultFunc: func() (interface{}, error) { - return make([]interface{}, 0), nil + return []interface{}{}, nil }, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -158,7 +158,7 @@ func resourceVirtualEnvironmentGroupRead(d *schema.ResourceData, m interface{}) d.SetId(groupID) - aclParsed := make([]interface{}, 0) + aclParsed := []interface{}{} for _, v := range acl { if v.Type == "group" && v.UserOrGroupID == groupID { diff --git a/proxmoxtf/resource_virtual_environment_role.go b/proxmoxtf/resource_virtual_environment_role.go index 2e7b9bb1..e9b6eb24 100644 --- a/proxmoxtf/resource_virtual_environment_role.go +++ b/proxmoxtf/resource_virtual_environment_role.go @@ -92,7 +92,7 @@ func resourceVirtualEnvironmentRoleRead(d *schema.ResourceData, m interface{}) e return err } - privileges := schema.NewSet(schema.HashString, make([]interface{}, 0)) + privileges := schema.NewSet(schema.HashString, []interface{}{}) if *role != nil { for _, v := range *role { diff --git a/proxmoxtf/resource_virtual_environment_user.go b/proxmoxtf/resource_virtual_environment_user.go index a90c3b3b..1bfd1fa5 100644 --- a/proxmoxtf/resource_virtual_environment_user.go +++ b/proxmoxtf/resource_virtual_environment_user.go @@ -45,7 +45,7 @@ func resourceVirtualEnvironmentUser() *schema.Resource { Description: "The access control list", Optional: true, DefaultFunc: func() (interface{}, error) { - return make([]interface{}, 0), nil + return []interface{}{}, nil }, Elem: &schema.Resource{ Schema: map[string]*schema.Schema{ @@ -243,7 +243,7 @@ func resourceVirtualEnvironmentUserRead(d *schema.ResourceData, m interface{}) e return err } - aclParsed := make([]interface{}, 0) + aclParsed := []interface{}{} for _, v := range acl { if v.Type == "user" && v.UserOrGroupID == userID { @@ -295,7 +295,7 @@ func resourceVirtualEnvironmentUserRead(d *schema.ResourceData, m interface{}) e d.Set(mkResourceVirtualEnvironmentUserFirstName, "") } - groups := schema.NewSet(schema.HashString, make([]interface{}, 0)) + groups := schema.NewSet(schema.HashString, []interface{}{}) if user.Groups != nil { for _, v := range *user.Groups { diff --git a/proxmoxtf/resource_virtual_environment_vm.go b/proxmoxtf/resource_virtual_environment_vm.go index 2e73f0b2..b929a821 100644 --- a/proxmoxtf/resource_virtual_environment_vm.go +++ b/proxmoxtf/resource_virtual_environment_vm.go @@ -52,7 +52,7 @@ const ( dvResourceVirtualEnvironmentVMPoolID = "" dvResourceVirtualEnvironmentVMStarted = true dvResourceVirtualEnvironmentVMVGAEnabled = true - dvResourceVirtualEnvironmentVMVGAMemory = 0 + dvResourceVirtualEnvironmentVMVGAMemory = 16 dvResourceVirtualEnvironmentVMVGAType = "std" dvResourceVirtualEnvironmentVMVMID = -1 @@ -1353,19 +1353,19 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.Agent.Enabled != nil { agent[mkResourceVirtualEnvironmentVMAgentEnabled] = bool(*vmConfig.Agent.Enabled) } else { - agent[mkResourceVirtualEnvironmentVMAgentEnabled] = dvResourceVirtualEnvironmentVMAgentEnabled + agent[mkResourceVirtualEnvironmentVMAgentEnabled] = false } if vmConfig.Agent.TrimClonedDisks != nil { agent[mkResourceVirtualEnvironmentVMAgentTrim] = bool(*vmConfig.Agent.TrimClonedDisks) } else { - agent[mkResourceVirtualEnvironmentVMAgentTrim] = dvResourceVirtualEnvironmentVMAgentTrim + agent[mkResourceVirtualEnvironmentVMAgentTrim] = false } if vmConfig.Agent.Type != nil { agent[mkResourceVirtualEnvironmentVMAgentType] = *vmConfig.Agent.Type } else { - agent[mkResourceVirtualEnvironmentVMAgentType] = dvResourceVirtualEnvironmentVMAgentType + agent[mkResourceVirtualEnvironmentVMAgentType] = "" } currentAgent := d.Get(mkResourceVirtualEnvironmentVMAgent).([]interface{}) @@ -1377,16 +1377,16 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err d.Set(mkResourceVirtualEnvironmentVMAgent, []interface{}{agent}) } } else { - d.Set(mkResourceVirtualEnvironmentVMAgent, make([]interface{}, 0)) + d.Set(mkResourceVirtualEnvironmentVMAgent, []interface{}{}) } // Compare the IDE devices to the CDROM and cloud-init configurations stored in the state. if vmConfig.IDEDevice2 != nil { if *vmConfig.IDEDevice2.Media == "cdrom" { if strings.Contains(vmConfig.IDEDevice2.FileVolume, fmt.Sprintf("vm-%d-cloudinit", vmID)) { - d.Set(mkResourceVirtualEnvironmentVMCDROM, make([]interface{}, 0)) + d.Set(mkResourceVirtualEnvironmentVMCDROM, []interface{}{}) } else { - d.Set(mkResourceVirtualEnvironmentVMCloudInit, make([]interface{}, 0)) + d.Set(mkResourceVirtualEnvironmentVMCloudInit, []interface{}{}) cdrom := make([]interface{}, 1) cdromBlock := map[string]interface{}{} @@ -1399,12 +1399,12 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err d.Set(mkResourceVirtualEnvironmentVMCDROM, cdrom) } } else { - d.Set(mkResourceVirtualEnvironmentVMCDROM, make([]interface{}, 0)) - d.Set(mkResourceVirtualEnvironmentVMCloudInit, make([]interface{}, 0)) + d.Set(mkResourceVirtualEnvironmentVMCDROM, []interface{}{}) + d.Set(mkResourceVirtualEnvironmentVMCloudInit, []interface{}{}) } } else { - d.Set(mkResourceVirtualEnvironmentVMCDROM, make([]interface{}, 0)) - d.Set(mkResourceVirtualEnvironmentVMCloudInit, make([]interface{}, 0)) + d.Set(mkResourceVirtualEnvironmentVMCDROM, []interface{}{}) + d.Set(mkResourceVirtualEnvironmentVMCloudInit, []interface{}{}) } // Compare the cloud-init configuration to the one stored in the state. @@ -1416,13 +1416,13 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.CloudInitDNSDomain != nil { cloudInitDNS[mkResourceVirtualEnvironmentVMCloudInitDNSDomain] = *vmConfig.CloudInitDNSDomain } else { - cloudInitDNS[mkResourceVirtualEnvironmentVMCloudInitDNSDomain] = dvResourceVirtualEnvironmentVMCloudInitDNSDomain + cloudInitDNS[mkResourceVirtualEnvironmentVMCloudInitDNSDomain] = "" } if vmConfig.CloudInitDNSServer != nil { cloudInitDNS[mkResourceVirtualEnvironmentVMCloudInitDNSServer] = *vmConfig.CloudInitDNSServer } else { - cloudInitDNS[mkResourceVirtualEnvironmentVMCloudInitDNSServer] = dvResourceVirtualEnvironmentVMCloudInitDNSServer + cloudInitDNS[mkResourceVirtualEnvironmentVMCloudInitDNSServer] = "" } cloudInit[mkResourceVirtualEnvironmentVMCloudInitDNS] = []interface{}{cloudInitDNS} @@ -1508,7 +1508,7 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.CloudInitPassword != nil { cloudInitUserAccount[mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword] = *vmConfig.CloudInitPassword } else { - cloudInitUserAccount[mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword] = dvResourceVirtualEnvironmentVMCloudInitUserAccountPassword + cloudInitUserAccount[mkResourceVirtualEnvironmentVMCloudInitUserAccountPassword] = "" } if vmConfig.CloudInitUsername != nil { @@ -1524,10 +1524,10 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.CloudInitFiles.UserVolume != nil { cloudInit[mkResourceVirtualEnvironmentVMCloudInitUserDataFileID] = *vmConfig.CloudInitFiles.UserVolume } else { - cloudInit[mkResourceVirtualEnvironmentVMCloudInitUserDataFileID] = dvResourceVirtualEnvironmentVMCloudInitUserDataFileID + cloudInit[mkResourceVirtualEnvironmentVMCloudInitUserDataFileID] = "" } } else { - cloudInit[mkResourceVirtualEnvironmentVMCloudInitUserDataFileID] = dvResourceVirtualEnvironmentVMCloudInitUserDataFileID + cloudInit[mkResourceVirtualEnvironmentVMCloudInitUserDataFileID] = "" } if len(cloudInit) > 0 { @@ -1542,19 +1542,19 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.CPUCores != nil { cpu[mkResourceVirtualEnvironmentVMCPUCores] = *vmConfig.CPUCores } else { - cpu[mkResourceVirtualEnvironmentVMCPUCores] = dvResourceVirtualEnvironmentVMCPUCores + cpu[mkResourceVirtualEnvironmentVMCPUCores] = 0 } if vmConfig.VirtualCPUCount != nil { cpu[mkResourceVirtualEnvironmentVMCPUHotplugged] = *vmConfig.VirtualCPUCount } else { - cpu[mkResourceVirtualEnvironmentVMCPUHotplugged] = dvResourceVirtualEnvironmentVMCPUHotplugged + cpu[mkResourceVirtualEnvironmentVMCPUHotplugged] = 0 } if vmConfig.CPUSockets != nil { cpu[mkResourceVirtualEnvironmentVMCPUSockets] = *vmConfig.CPUSockets } else { - cpu[mkResourceVirtualEnvironmentVMCPUSockets] = dvResourceVirtualEnvironmentVMCPUSockets + cpu[mkResourceVirtualEnvironmentVMCPUSockets] = 0 } currentCPU := d.Get(mkResourceVirtualEnvironmentVMCPU).([]interface{}) @@ -1582,7 +1582,7 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err // Compare the disks to those stored in the state. currentDiskList := d.Get(mkResourceVirtualEnvironmentVMDisk).([]interface{}) - diskList := make([]interface{}, 0) + diskList := []interface{}{} diskObjects := []*proxmox.CustomStorageDevice{ vmConfig.SCSIDevice0, vmConfig.SCSIDevice1, @@ -1698,19 +1698,19 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.DedicatedMemory != nil { memory[mkResourceVirtualEnvironmentVMMemoryDedicated] = *vmConfig.DedicatedMemory } else { - memory[mkResourceVirtualEnvironmentVMMemoryDedicated] = dvResourceVirtualEnvironmentVMMemoryDedicated + memory[mkResourceVirtualEnvironmentVMMemoryDedicated] = 0 } if vmConfig.FloatingMemory != nil { memory[mkResourceVirtualEnvironmentVMMemoryFloating] = *vmConfig.FloatingMemory } else { - memory[mkResourceVirtualEnvironmentVMMemoryFloating] = dvResourceVirtualEnvironmentVMMemoryFloating + memory[mkResourceVirtualEnvironmentVMMemoryFloating] = 0 } if vmConfig.SharedMemory != nil { memory[mkResourceVirtualEnvironmentVMMemoryShared] = vmConfig.SharedMemory.Size } else { - memory[mkResourceVirtualEnvironmentVMMemoryShared] = dvResourceVirtualEnvironmentVMMemoryShared + memory[mkResourceVirtualEnvironmentVMMemoryShared] = 0 } currentMemory := d.Get(mkResourceVirtualEnvironmentVMMemory).([]interface{}) @@ -1820,20 +1820,20 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err if vmConfig.VGADevice.Memory != nil { vga[mkResourceVirtualEnvironmentVMVGAMemory] = *vmConfig.VGADevice.Memory } else { - vga[mkResourceVirtualEnvironmentVMVGAMemory] = dvResourceVirtualEnvironmentVMVGAMemory + vga[mkResourceVirtualEnvironmentVMVGAMemory] = 0 } if vgaEnabled { if vmConfig.VGADevice.Type != nil { vga[mkResourceVirtualEnvironmentVMVGAType] = *vmConfig.VGADevice.Type } else { - vga[mkResourceVirtualEnvironmentVMVGAType] = dvResourceVirtualEnvironmentVMVGAType + vga[mkResourceVirtualEnvironmentVMVGAType] = "" } } } else { vga[mkResourceVirtualEnvironmentVMVGAEnabled] = true - vga[mkResourceVirtualEnvironmentVMVGAMemory] = dvResourceVirtualEnvironmentVMVGAMemory - vga[mkResourceVirtualEnvironmentVMVGAType] = dvResourceVirtualEnvironmentVMVGAType + vga[mkResourceVirtualEnvironmentVMVGAMemory] = 0 + vga[mkResourceVirtualEnvironmentVMVGAType] = "" } currentVGA := d.Get(mkResourceVirtualEnvironmentVMVGA).([]interface{}) @@ -1844,7 +1844,7 @@ func resourceVirtualEnvironmentVMRead(d *schema.ResourceData, m interface{}) err vga[mkResourceVirtualEnvironmentVMVGAType] != dvResourceVirtualEnvironmentVMVGAType { d.Set(mkResourceVirtualEnvironmentVMVGA, []interface{}{vga}) } else { - d.Set(mkResourceVirtualEnvironmentVMVGA, make([]interface{}, 0)) + d.Set(mkResourceVirtualEnvironmentVMVGA, []interface{}{}) } // Determine the state of the virtual machine in order to update the "started" argument. diff --git a/proxmoxtf/utils.go b/proxmoxtf/utils.go index 086309d5..8bdb21f3 100644 --- a/proxmoxtf/utils.go +++ b/proxmoxtf/utils.go @@ -176,21 +176,7 @@ func getSchemaBlock(r *schema.Resource, d *schema.ResourceData, m interface{}, k } func getVGAMemoryValidator() schema.SchemaValidateFunc { - return func(i interface{}, k string) ([]string, []error) { - v, ok := i.(int) - - if !ok { - return []string{}, []error{fmt.Errorf("expected type of %s to be []interface{}", k)} - } - - if v == 0 { - return []string{}, []error{} - } - - validator := validation.IntBetween(4, 512) - - return validator(i, k) - } + return validation.IntBetween(4, 512) } func getVGATypeValidator() schema.SchemaValidateFunc {