diff --git a/internal/rdns/resource_hcloud_rdns.go b/internal/rdns/resource_hcloud_rdns.go index 9263a86d3..c95de6c6a 100644 --- a/internal/rdns/resource_hcloud_rdns.go +++ b/internal/rdns/resource_hcloud_rdns.go @@ -122,54 +122,53 @@ func resourceReverseDNSCreate(ctx context.Context, d *schema.ResourceData, m int d.SetId("") return nil } - if !serverOK { - if !floatingIPOK { - log.Printf("[WARN] Invalid floating_ip_id (%s), removing from state: %v", d.Id(), floatingIPOK) - d.SetId("") - return nil - } - - floatingIP, _, err := c.FloatingIP.GetByID(ctx, floatingIPID.(int)) + if serverOK { + server, _, err := c.Server.GetByID(ctx, serverID.(int)) if err != nil { return diag.FromErr(err) } - if floatingIP == nil { - log.Printf("[WARN] Floating IP (%s) not found, removing from state", d.Id()) + if server == nil { + log.Printf("[WARN] Server (%s) not found, removing from state", d.Id()) d.SetId("") return nil } - d.SetId(generateRDNSID(nil, floatingIP, ip)) - action, _, err := c.FloatingIP.ChangeDNSPtr(ctx, floatingIP, ip, &ptr) + d.SetId(generateRDNSID(server, nil, ip)) + action, _, err := c.Server.ChangeDNSPtr(ctx, server, ip, &ptr) if err != nil { return diag.FromErr(err) } - if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { return diag.FromErr(err) } + return resourceReverseDNSRead(ctx, d, m) } + if !floatingIPOK { + log.Printf("[WARN] Invalid floating_ip_id (%s), removing from state: %v", d.Id(), floatingIPOK) + d.SetId("") + return nil + } - server, _, err := c.Server.GetByID(ctx, serverID.(int)) + floatingIP, _, err := c.FloatingIP.GetByID(ctx, floatingIPID.(int)) if err != nil { return diag.FromErr(err) } - if server == nil { - log.Printf("[WARN] Server (%s) not found, removing from state", d.Id()) + if floatingIP == nil { + log.Printf("[WARN] Floating IP (%s) not found, removing from state", d.Id()) d.SetId("") return nil } - d.SetId(generateRDNSID(server, nil, ip)) - action, _, err := c.Server.ChangeDNSPtr(ctx, server, ip, &ptr) + d.SetId(generateRDNSID(nil, floatingIP, ip)) + action, _, err := c.FloatingIP.ChangeDNSPtr(ctx, floatingIP, ip, &ptr) if err != nil { return diag.FromErr(err) } + if err := hcclient.WaitForAction(ctx, &c.Action, action); err != nil { return diag.FromErr(err) } - return resourceReverseDNSRead(ctx, d, m) }