Skip to content

Commit

Permalink
Use JSON serialization for deep map copy
Browse files Browse the repository at this point in the history
  • Loading branch information
Shawn Castrianni authored and Shawn Castrianni committed Jun 26, 2023
1 parent a52a356 commit 0653dee
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 7 deletions.
6 changes: 3 additions & 3 deletions konnect/resource_plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ func resourcePluginCreate(ctx context.Context, d *schema.ResourceData, m interfa
d.SetId("")
return diag.FromErr(err)
}
retVal.ConfigAll = copyMap(retVal.Config)
retVal.ConfigAll = copyMapByJSON(retVal.Config)
retVal.RuntimeGroupId = newPlugin.RuntimeGroupId
d.SetId(retVal.PluginEncodeId())
fillResourceDataFromPlugin(ctx, retVal, d, pluginSchema)
Expand Down Expand Up @@ -279,7 +279,7 @@ func resourcePluginRead(ctx context.Context, d *schema.ResourceData, m interface
d.SetId("")
return diag.FromErr(err)
}
retVal.ConfigAll = copyMap(retVal.Config)
retVal.ConfigAll = copyMapByJSON(retVal.Config)
retVal.RuntimeGroupId = runtimeGroupId
fillResourceDataFromPlugin(ctx, retVal, d, pluginSchema)
return diags
Expand Down Expand Up @@ -313,7 +313,7 @@ func resourcePluginUpdate(ctx context.Context, d *schema.ResourceData, m interfa
if err != nil {
return diag.FromErr(err)
}
retVal.ConfigAll = copyMap(retVal.Config)
retVal.ConfigAll = copyMapByJSON(retVal.Config)
retVal.RuntimeGroupId = runtimeGroupId
fillResourceDataFromPlugin(ctx, retVal, d, pluginSchema)
return diags
Expand Down
8 changes: 4 additions & 4 deletions konnect/utils.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package konnect

import (
"encoding/json"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"reflect"
)
Expand Down Expand Up @@ -39,10 +40,9 @@ func removeNulls(m map[string]interface{}) {
}
}

func copyMap[K string, V interface{}](m map[K]V) map[K]V {
func copyMapByJSON[K string, V interface{}](m map[K]V) map[K]V {
bytes, _ := json.Marshal(m)
result := make(map[K]V)
for k, v := range m {
result[k] = v
}
json.Unmarshal(bytes, &result)
return result
}

0 comments on commit 0653dee

Please sign in to comment.