Skip to content

Commit 984f697

Browse files
committed
fix: implement deep merge for helm_values to preserve nested defaults
1 parent a10b232 commit 984f697

File tree

1 file changed

+53
-1
lines changed

1 file changed

+53
-1
lines changed

main.tf

Lines changed: 53 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,59 @@ locals {
258258
} : {}
259259
}
260260

261-
merged_helm_values = merge(local.default_helm_values, var.helm_values)
261+
default_operator = lookup(local.default_helm_values, "operator", {})
262+
user_operator = lookup(var.helm_values, "operator", {})
263+
264+
default_storage = lookup(local.default_helm_values, "storage", {})
265+
user_storage = lookup(var.helm_values, "storage", {})
266+
267+
default_tls = lookup(local.default_helm_values, "tls", {})
268+
user_tls = lookup(var.helm_values, "tls", {})
269+
270+
# Deep merge for operator block
271+
merged_operator = merge(
272+
local.default_operator,
273+
local.user_operator,
274+
{
275+
clusters = merge(lookup(local.default_operator, "clusters", {}), lookup(local.user_operator, "clusters", {}))
276+
image = merge(lookup(local.default_operator, "image", {}), lookup(local.user_operator, "image", {}))
277+
cloudProvider = merge(lookup(local.default_operator, "cloudProvider", {}), lookup(local.user_operator, "cloudProvider", {}))
278+
}
279+
)
280+
281+
# Deep merge for storage block
282+
merged_storage = length(local.default_storage) > 0 || length(local.user_storage) > 0 ? merge(
283+
local.default_storage,
284+
local.user_storage,
285+
{
286+
storageClass = merge(
287+
lookup(local.default_storage, "storageClass", {}),
288+
lookup(local.user_storage, "storageClass", {})
289+
)
290+
}
291+
) : {}
292+
293+
# Deep merge for tls block
294+
merged_tls = merge(
295+
local.default_tls,
296+
local.user_tls,
297+
length(local.default_tls) > 0 ? {
298+
defaultCertificateSpecs = merge(
299+
lookup(local.default_tls, "defaultCertificateSpecs", {}),
300+
lookup(local.user_tls, "defaultCertificateSpecs", {})
301+
)
302+
} : {}
303+
)
304+
305+
merged_helm_values = merge(
306+
local.default_helm_values,
307+
var.helm_values,
308+
{
309+
operator = local.merged_operator
310+
storage = local.merged_storage
311+
tls = local.merged_tls
312+
}
313+
)
262314

263315
instances = [
264316
for instance in var.materialize_instances : {

0 commit comments

Comments
 (0)