0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-07-05 21:43:59 +00:00

fix(vm,lxc): unexpected state drift when using initialization.dns.servers (#844)

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
Pavel Boldyrev 2023-12-28 23:07:53 -05:00 committed by GitHub
parent 86b2e6f41c
commit ac923cd1b4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 43 additions and 8 deletions

View File

@ -2011,11 +2011,28 @@ func containerRead(ctx context.Context, d *schema.ResourceData, m interface{}) d
initializationDNS[mkResourceVirtualEnvironmentContainerInitializationDNSDomain] = ""
}
if containerConfig.DNSServer != nil {
initializationDNS[mkResourceVirtualEnvironmentContainerInitializationDNSServer] = *containerConfig.DNSServer
// check what we have in the plan
currentInitializationDNSBlock := map[string]interface{}{}
currentInitialization := d.Get(mkResourceVirtualEnvironmentContainerInitialization).([]interface{})
if len(currentInitialization) > 0 {
currentInitializationBlock := currentInitialization[0].(map[string]interface{})
//nolint:lll
currentInitializationDNS := currentInitializationBlock[mkResourceVirtualEnvironmentContainerInitializationDNS].([]interface{})
if len(currentInitializationDNS) > 0 {
currentInitializationDNSBlock = currentInitializationDNS[0].(map[string]interface{})
}
}
//nolint:lll
currentInitializationDNSServer, ok := currentInitializationDNSBlock[mkResourceVirtualEnvironmentContainerInitializationDNSServer]
if containerConfig.DNSServer != nil {
if ok && currentInitializationDNSServer != "" {
initializationDNS[mkResourceVirtualEnvironmentContainerInitializationDNSServer] = *containerConfig.DNSServer
} else {
dnsServer := strings.Split(*containerConfig.DNSServer, " ")
initializationDNS[mkResourceVirtualEnvironmentContainerInitializationDNSServers] = dnsServer
}
} else {
initializationDNS[mkResourceVirtualEnvironmentContainerInitializationDNSServer] = ""
initializationDNS[mkResourceVirtualEnvironmentContainerInitializationDNSServers] = []string{}

View File

@ -4481,11 +4481,29 @@ func vmReadCustom(
initializationDNS[mkResourceVirtualEnvironmentVMInitializationDNSDomain] = ""
}
if vmConfig.CloudInitDNSServer != nil {
initializationDNS[mkResourceVirtualEnvironmentVMInitializationDNSServer] = *vmConfig.CloudInitDNSServer
// check what we have in the plan
currentInitializationDNSBlock := map[string]interface{}{}
currentInitialization := d.Get(mkResourceVirtualEnvironmentVMInitialization).([]interface{})
if len(currentInitialization) > 0 {
currentInitializationBlock := currentInitialization[0].(map[string]interface{})
//nolint:lll
currentInitializationDNS := currentInitializationBlock[mkResourceVirtualEnvironmentVMInitializationDNS].([]interface{})
if len(currentInitializationDNS) > 0 {
currentInitializationDNSBlock = currentInitializationDNS[0].(map[string]interface{})
}
}
//nolint:lll
currentInitializationDNSServer, ok := currentInitializationDNSBlock[mkResourceVirtualEnvironmentVMInitializationDNSServer]
if vmConfig.CloudInitDNSServer != nil {
if ok && currentInitializationDNSServer != "" {
// the template is using deprecated attribute mkResourceVirtualEnvironmentVMInitializationDNSServer
initializationDNS[mkResourceVirtualEnvironmentVMInitializationDNSServer] = *vmConfig.CloudInitDNSServer
} else {
dnsServer := strings.Split(*vmConfig.CloudInitDNSServer, " ")
initializationDNS[mkResourceVirtualEnvironmentVMInitializationDNSServers] = dnsServer
}
} else {
initializationDNS[mkResourceVirtualEnvironmentVMInitializationDNSServer] = ""
initializationDNS[mkResourceVirtualEnvironmentVMInitializationDNSServers] = []string{}