mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-01 19:12:59 +00:00
fix(vm): fix panic when a config block is empty (#1033)
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
d444202ab8
commit
027cf1e81a
@ -1997,7 +1997,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
|
|||||||
updateBody.ACPI = &acpi
|
updateBody.ACPI = &acpi
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(agent) > 0 {
|
if len(agent) > 0 && agent[0] != nil {
|
||||||
agentBlock := agent[0].(map[string]interface{})
|
agentBlock := agent[0].(map[string]interface{})
|
||||||
|
|
||||||
agentEnabled := types.CustomBool(
|
agentEnabled := types.CustomBool(
|
||||||
@ -2042,7 +2042,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(cdrom) > 0 {
|
if len(cdrom) > 0 && cdrom[0] != nil {
|
||||||
cdromBlock := cdrom[0].(map[string]interface{})
|
cdromBlock := cdrom[0].(map[string]interface{})
|
||||||
|
|
||||||
cdromEnabled := cdromBlock[mkResourceVirtualEnvironmentVMCDROMEnabled].(bool)
|
cdromEnabled := cdromBlock[mkResourceVirtualEnvironmentVMCDROMEnabled].(bool)
|
||||||
@ -2062,7 +2062,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(cpu) > 0 {
|
if len(cpu) > 0 && cpu[0] != nil {
|
||||||
cpuBlock := cpu[0].(map[string]interface{})
|
cpuBlock := cpu[0].(map[string]interface{})
|
||||||
|
|
||||||
cpuArchitecture := cpuBlock[mkResourceVirtualEnvironmentVMCPUArchitecture].(string)
|
cpuArchitecture := cpuBlock[mkResourceVirtualEnvironmentVMCPUArchitecture].(string)
|
||||||
@ -2110,7 +2110,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
|
|||||||
return diag.FromErr(err)
|
return diag.FromErr(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(initialization) > 0 {
|
if len(initialization) > 0 && initialization[0] != nil {
|
||||||
tflog.Trace(ctx, "Preparing the CloudInit configuration")
|
tflog.Trace(ctx, "Preparing the CloudInit configuration")
|
||||||
|
|
||||||
initializationBlock := initialization[0].(map[string]interface{})
|
initializationBlock := initialization[0].(map[string]interface{})
|
||||||
@ -2157,7 +2157,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
|
|||||||
updateBody.KeyboardLayout = &keyboardLayout
|
updateBody.KeyboardLayout = &keyboardLayout
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(memory) > 0 {
|
if len(memory) > 0 && memory[0] != nil {
|
||||||
memoryBlock := memory[0].(map[string]interface{})
|
memoryBlock := memory[0].(map[string]interface{})
|
||||||
|
|
||||||
memoryDedicated := memoryBlock[mkResourceVirtualEnvironmentVMMemoryDedicated].(int)
|
memoryDedicated := memoryBlock[mkResourceVirtualEnvironmentVMMemoryDedicated].(int)
|
||||||
@ -2191,7 +2191,7 @@ func vmCreateClone(ctx context.Context, d *schema.ResourceData, m interface{}) d
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(operatingSystem) > 0 {
|
if len(operatingSystem) > 0 && operatingSystem[0] != nil {
|
||||||
operatingSystemBlock := operatingSystem[0].(map[string]interface{})
|
operatingSystemBlock := operatingSystem[0].(map[string]interface{})
|
||||||
operatingSystemType := operatingSystemBlock[mkResourceVirtualEnvironmentVMOperatingSystemType].(string)
|
operatingSystemType := operatingSystemBlock[mkResourceVirtualEnvironmentVMOperatingSystemType].(string)
|
||||||
|
|
||||||
@ -2567,7 +2567,7 @@ func vmCreateCustom(ctx context.Context, d *schema.ResourceData, m interface{})
|
|||||||
var efiDisk *vms.CustomEFIDisk
|
var efiDisk *vms.CustomEFIDisk
|
||||||
|
|
||||||
efiDiskBlock := d.Get(mkResourceVirtualEnvironmentVMEFIDisk).([]interface{})
|
efiDiskBlock := d.Get(mkResourceVirtualEnvironmentVMEFIDisk).([]interface{})
|
||||||
if len(efiDiskBlock) > 0 {
|
if len(efiDiskBlock) > 0 && efiDiskBlock[0] != nil {
|
||||||
block := efiDiskBlock[0].(map[string]interface{})
|
block := efiDiskBlock[0].(map[string]interface{})
|
||||||
|
|
||||||
datastoreID, _ := block[mkResourceVirtualEnvironmentVMEFIDiskDatastoreID].(string)
|
datastoreID, _ := block[mkResourceVirtualEnvironmentVMEFIDiskDatastoreID].(string)
|
||||||
@ -2590,7 +2590,7 @@ func vmCreateCustom(ctx context.Context, d *schema.ResourceData, m interface{})
|
|||||||
var tpmState *vms.CustomTPMState
|
var tpmState *vms.CustomTPMState
|
||||||
|
|
||||||
tpmStateBlock := d.Get(mkResourceVirtualEnvironmentVMTPMState).([]interface{})
|
tpmStateBlock := d.Get(mkResourceVirtualEnvironmentVMTPMState).([]interface{})
|
||||||
if len(tpmStateBlock) > 0 {
|
if len(tpmStateBlock) > 0 && tpmStateBlock[0] != nil {
|
||||||
block := tpmStateBlock[0].(map[string]interface{})
|
block := tpmStateBlock[0].(map[string]interface{})
|
||||||
|
|
||||||
datastoreID, _ := block[mkResourceVirtualEnvironmentVMTPMStateDatastoreID].(string)
|
datastoreID, _ := block[mkResourceVirtualEnvironmentVMTPMStateDatastoreID].(string)
|
||||||
@ -3148,16 +3148,13 @@ func vmGetCloudInitConfig(d *schema.ResourceData) *vms.CustomCloudInitConfig {
|
|||||||
}
|
}
|
||||||
|
|
||||||
initializationIPConfig := initializationBlock[mkResourceVirtualEnvironmentVMInitializationIPConfig].([]interface{})
|
initializationIPConfig := initializationBlock[mkResourceVirtualEnvironmentVMInitializationIPConfig].([]interface{})
|
||||||
initializationConfig.IPConfig = make(
|
initializationConfig.IPConfig = make([]vms.CustomCloudInitIPConfig, len(initializationIPConfig))
|
||||||
[]vms.CustomCloudInitIPConfig,
|
|
||||||
len(initializationIPConfig),
|
|
||||||
)
|
|
||||||
|
|
||||||
for i, c := range initializationIPConfig {
|
for i, c := range initializationIPConfig {
|
||||||
configBlock := c.(map[string]interface{})
|
configBlock := c.(map[string]interface{})
|
||||||
ipv4 := configBlock[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4].([]interface{})
|
ipv4 := configBlock[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4].([]interface{})
|
||||||
|
|
||||||
if len(ipv4) > 0 {
|
if len(ipv4) > 0 && ipv4[0] != nil {
|
||||||
ipv4Block := ipv4[0].(map[string]interface{})
|
ipv4Block := ipv4[0].(map[string]interface{})
|
||||||
ipv4Address := ipv4Block[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4Address].(string)
|
ipv4Address := ipv4Block[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv4Address].(string)
|
||||||
|
|
||||||
@ -3174,7 +3171,7 @@ func vmGetCloudInitConfig(d *schema.ResourceData) *vms.CustomCloudInitConfig {
|
|||||||
|
|
||||||
ipv6 := configBlock[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6].([]interface{})
|
ipv6 := configBlock[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6].([]interface{})
|
||||||
|
|
||||||
if len(ipv6) > 0 {
|
if len(ipv6) > 0 && ipv6[0] != nil {
|
||||||
ipv6Block := ipv6[0].(map[string]interface{})
|
ipv6Block := ipv6[0].(map[string]interface{})
|
||||||
ipv6Address := ipv6Block[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Address].(string)
|
ipv6Address := ipv6Block[mkResourceVirtualEnvironmentVMInitializationIPConfigIPv6Address].(string)
|
||||||
|
|
||||||
@ -3192,7 +3189,7 @@ func vmGetCloudInitConfig(d *schema.ResourceData) *vms.CustomCloudInitConfig {
|
|||||||
|
|
||||||
initializationUserAccount := initializationBlock[mkResourceVirtualEnvironmentVMInitializationUserAccount].([]interface{})
|
initializationUserAccount := initializationBlock[mkResourceVirtualEnvironmentVMInitializationUserAccount].([]interface{})
|
||||||
|
|
||||||
if len(initializationUserAccount) > 0 {
|
if len(initializationUserAccount) > 0 && initializationUserAccount[0] != nil {
|
||||||
initializationUserAccountBlock := initializationUserAccount[0].(map[string]interface{})
|
initializationUserAccountBlock := initializationUserAccount[0].(map[string]interface{})
|
||||||
keys := initializationUserAccountBlock[mkResourceVirtualEnvironmentVMInitializationUserAccountKeys].([]interface{})
|
keys := initializationUserAccountBlock[mkResourceVirtualEnvironmentVMInitializationUserAccountKeys].([]interface{})
|
||||||
|
|
||||||
@ -3407,7 +3404,7 @@ func vmGetEfiDisk(d *schema.ResourceData, disk []interface{}) *vms.CustomEFIDisk
|
|||||||
|
|
||||||
var efiDiskConfig *vms.CustomEFIDisk
|
var efiDiskConfig *vms.CustomEFIDisk
|
||||||
|
|
||||||
if len(efiDisk) > 0 {
|
if len(efiDisk) > 0 && efiDisk[0] != nil {
|
||||||
efiDiskConfig = &vms.CustomEFIDisk{}
|
efiDiskConfig = &vms.CustomEFIDisk{}
|
||||||
|
|
||||||
block := efiDisk[0].(map[string]interface{})
|
block := efiDisk[0].(map[string]interface{})
|
||||||
@ -3469,7 +3466,7 @@ func vmGetTPMState(d *schema.ResourceData, disk []interface{}) *vms.CustomTPMSta
|
|||||||
|
|
||||||
var tpmStateConfig *vms.CustomTPMState
|
var tpmStateConfig *vms.CustomTPMState
|
||||||
|
|
||||||
if len(tpmState) > 0 {
|
if len(tpmState) > 0 && tpmState[0] != nil {
|
||||||
tpmStateConfig = &vms.CustomTPMState{}
|
tpmStateConfig = &vms.CustomTPMState{}
|
||||||
|
|
||||||
block := tpmState[0].(map[string]interface{})
|
block := tpmState[0].(map[string]interface{})
|
||||||
@ -3665,7 +3662,7 @@ func vmGetSerialDeviceList(d *schema.ResourceData) vms.CustomSerialDevices {
|
|||||||
func vmGetSMBIOS(d *schema.ResourceData) *vms.CustomSMBIOS {
|
func vmGetSMBIOS(d *schema.ResourceData) *vms.CustomSMBIOS {
|
||||||
smbiosSections := d.Get(mkResourceVirtualEnvironmentVMSMBIOS).([]interface{})
|
smbiosSections := d.Get(mkResourceVirtualEnvironmentVMSMBIOS).([]interface{})
|
||||||
//nolint:nestif
|
//nolint:nestif
|
||||||
if len(smbiosSections) > 0 {
|
if len(smbiosSections) > 0 && smbiosSections[0] != nil {
|
||||||
smbiosBlock := smbiosSections[0].(map[string]interface{})
|
smbiosBlock := smbiosSections[0].(map[string]interface{})
|
||||||
b64 := types.CustomBool(true)
|
b64 := types.CustomBool(true)
|
||||||
family, _ := smbiosBlock[mkResourceVirtualEnvironmentVMSMBIOSFamily].(string)
|
family, _ := smbiosBlock[mkResourceVirtualEnvironmentVMSMBIOSFamily].(string)
|
||||||
@ -3726,7 +3723,8 @@ func vmGetSMBIOS(d *schema.ResourceData) *vms.CustomSMBIOS {
|
|||||||
|
|
||||||
func vmGetStartupOrder(d *schema.ResourceData) *vms.CustomStartupOrder {
|
func vmGetStartupOrder(d *schema.ResourceData) *vms.CustomStartupOrder {
|
||||||
startup := d.Get(mkResourceVirtualEnvironmentVMStartup).([]interface{})
|
startup := d.Get(mkResourceVirtualEnvironmentVMStartup).([]interface{})
|
||||||
if len(startup) > 0 {
|
|
||||||
|
if len(startup) > 0 && startup[0] != nil {
|
||||||
startupBlock := startup[0].(map[string]interface{})
|
startupBlock := startup[0].(map[string]interface{})
|
||||||
startupOrder := startupBlock[mkResourceVirtualEnvironmentVMStartupOrder].(int)
|
startupOrder := startupBlock[mkResourceVirtualEnvironmentVMStartupOrder].(int)
|
||||||
startupUpDelay := startupBlock[mkResourceVirtualEnvironmentVMStartupUpDelay].(int)
|
startupUpDelay := startupBlock[mkResourceVirtualEnvironmentVMStartupUpDelay].(int)
|
||||||
@ -3957,7 +3955,7 @@ func vmReadCustom(
|
|||||||
agent[mkResourceVirtualEnvironmentVMAgentTrim] = false
|
agent[mkResourceVirtualEnvironmentVMAgentTrim] = false
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(currentAgent) > 0 {
|
if len(currentAgent) > 0 && currentAgent[0] != nil {
|
||||||
currentAgentBlock := currentAgent[0].(map[string]interface{})
|
currentAgentBlock := currentAgent[0].(map[string]interface{})
|
||||||
currentAgentTimeout := currentAgentBlock[mkResourceVirtualEnvironmentVMAgentTimeout].(string)
|
currentAgentTimeout := currentAgentBlock[mkResourceVirtualEnvironmentVMAgentTimeout].(string)
|
||||||
|
|
||||||
@ -4042,7 +4040,7 @@ func vmReadCustom(
|
|||||||
currentInterface := dvResourceVirtualEnvironmentVMCDROMInterface
|
currentInterface := dvResourceVirtualEnvironmentVMCDROMInterface
|
||||||
|
|
||||||
currentCDROM := d.Get(mkResourceVirtualEnvironmentVMCDROM).([]interface{})
|
currentCDROM := d.Get(mkResourceVirtualEnvironmentVMCDROM).([]interface{})
|
||||||
if len(currentCDROM) > 0 {
|
if len(currentCDROM) > 0 && currentCDROM[0] != nil {
|
||||||
currentBlock := currentCDROM[0].(map[string]interface{})
|
currentBlock := currentCDROM[0].(map[string]interface{})
|
||||||
currentInterface = currentBlock[mkResourceVirtualEnvironmentVMCDROMInterface].(string)
|
currentInterface = currentBlock[mkResourceVirtualEnvironmentVMCDROMInterface].(string)
|
||||||
}
|
}
|
||||||
@ -4059,7 +4057,7 @@ func vmReadCustom(
|
|||||||
cdromBlock[mkResourceVirtualEnvironmentVMCDROMFileID] = cdromIDEDevice.FileVolume
|
cdromBlock[mkResourceVirtualEnvironmentVMCDROMFileID] = cdromIDEDevice.FileVolume
|
||||||
cdromBlock[mkResourceVirtualEnvironmentVMCDROMInterface] = currentInterface
|
cdromBlock[mkResourceVirtualEnvironmentVMCDROMInterface] = currentInterface
|
||||||
|
|
||||||
if len(currentCDROM) > 0 {
|
if len(currentCDROM) > 0 && currentCDROM[0] != nil {
|
||||||
currentBlock := currentCDROM[0].(map[string]interface{})
|
currentBlock := currentCDROM[0].(map[string]interface{})
|
||||||
|
|
||||||
if currentBlock[mkResourceVirtualEnvironmentVMCDROMFileID] == "" {
|
if currentBlock[mkResourceVirtualEnvironmentVMCDROMFileID] == "" {
|
||||||
@ -4498,11 +4496,11 @@ func vmReadCustom(
|
|||||||
currentInitializationDNSBlock := map[string]interface{}{}
|
currentInitializationDNSBlock := map[string]interface{}{}
|
||||||
currentInitialization := d.Get(mkResourceVirtualEnvironmentVMInitialization).([]interface{})
|
currentInitialization := d.Get(mkResourceVirtualEnvironmentVMInitialization).([]interface{})
|
||||||
|
|
||||||
if len(currentInitialization) > 0 {
|
if len(currentInitialization) > 0 && currentInitialization[0] != nil {
|
||||||
currentInitializationBlock := currentInitialization[0].(map[string]interface{})
|
currentInitializationBlock := currentInitialization[0].(map[string]interface{})
|
||||||
//nolint:lll
|
//nolint:lll
|
||||||
currentInitializationDNS := currentInitializationBlock[mkResourceVirtualEnvironmentVMInitializationDNS].([]interface{})
|
currentInitializationDNS := currentInitializationBlock[mkResourceVirtualEnvironmentVMInitializationDNS].([]interface{})
|
||||||
if len(currentInitializationDNS) > 0 {
|
if len(currentInitializationDNS) > 0 && currentInitializationDNS[0] != nil {
|
||||||
currentInitializationDNSBlock = currentInitializationDNS[0].(map[string]interface{})
|
currentInitializationDNSBlock = currentInitializationDNS[0].(map[string]interface{})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user