From 710c28f98a390f939020c41da6c7614ce1e0b806 Mon Sep 17 00:00:00 2001 From: Uzair Ali <72073401+uzaxirr@users.noreply.github.com> Date: Thu, 29 Aug 2024 16:53:55 +0530 Subject: [PATCH 1/2] Decode Base64 script before saving state --- civo/instances/resource_instance.go | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/civo/instances/resource_instance.go b/civo/instances/resource_instance.go index df1973be..6eded8cc 100644 --- a/civo/instances/resource_instance.go +++ b/civo/instances/resource_instance.go @@ -2,6 +2,7 @@ package instances import ( "context" + "encoding/base64" "errors" "github.com/hashicorp/terraform-plugin-sdk/v2/helper/retry" "log" @@ -361,6 +362,16 @@ func resourceInstanceRead(_ context.Context, d *schema.ResourceData, m interface d.Set("initial_password", "") } + if resp.Script != "" { + decodedScript, err := base64.StdEncoding.DecodeString(resp.Script) + if err != nil { + return diag.Errorf("[ERR] failed to decode base64 script: %s", err) + } + d.Set("script", string(decodedScript)) + } else { + d.Set("script", "") + } + d.Set("hostname", resp.Hostname) d.Set("reverse_dns", resp.ReverseDNS) d.Set("size", resp.Size) @@ -377,7 +388,6 @@ func resourceInstanceRead(_ context.Context, d *schema.ResourceData, m interface d.Set("network_id", resp.NetworkID) d.Set("firewall_id", resp.FirewallID) d.Set("status", resp.Status) - d.Set("script", resp.Script) d.Set("created_at", resp.CreatedAt.UTC().String()) d.Set("notes", resp.Notes) d.Set("disk_image", diskImg.ID) From 7493df468f3ca479367deb03a2505b21e7dd09d9 Mon Sep 17 00:00:00 2001 From: Uzair Ali <72073401+uzaxirr@users.noreply.github.com> Date: Sat, 31 Aug 2024 11:21:56 +0530 Subject: [PATCH 2/2] refactor --- civo/instances/resource_instance.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/civo/instances/resource_instance.go b/civo/instances/resource_instance.go index 6eded8cc..ecbd6ff0 100644 --- a/civo/instances/resource_instance.go +++ b/civo/instances/resource_instance.go @@ -362,16 +362,16 @@ func resourceInstanceRead(_ context.Context, d *schema.ResourceData, m interface d.Set("initial_password", "") } - if resp.Script != "" { - decodedScript, err := base64.StdEncoding.DecodeString(resp.Script) - if err != nil { - return diag.Errorf("[ERR] failed to decode base64 script: %s", err) - } - d.Set("script", string(decodedScript)) - } else { + if resp.Script == "" { d.Set("script", "") } + decodedScript, err := base64.StdEncoding.DecodeString(resp.Script) + if err != nil { + return diag.Errorf("[ERR] failed to decode base64 script: %s", err) + } + + d.Set("script", string(decodedScript)) d.Set("hostname", resp.Hostname) d.Set("reverse_dns", resp.ReverseDNS) d.Set("size", resp.Size)