Skip to content

Commit 8b6f1c0

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

File tree

1 file changed

+50
-1
lines changed

1 file changed

+50
-1
lines changed

main.tf

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,56 @@ 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 = merge(
283+
local.default_storage,
284+
local.user_storage,
285+
{
286+
storageClass = merge(lookup(local.default_storage, "storageClass", {}), lookup(local.user_storage, "storageClass", {}))
287+
}
288+
)
289+
290+
# Deep merge for tls block
291+
merged_tls = merge(
292+
local.default_tls,
293+
local.user_tls,
294+
length(local.default_tls) > 0 ? {
295+
defaultCertificateSpecs = merge(
296+
lookup(local.default_tls, "defaultCertificateSpecs", {}),
297+
lookup(local.user_tls, "defaultCertificateSpecs", {})
298+
)
299+
} : {}
300+
)
301+
302+
merged_helm_values = merge(
303+
local.default_helm_values,
304+
var.helm_values,
305+
{
306+
operator = local.merged_operator
307+
storage = local.merged_storage
308+
tls = local.merged_tls
309+
}
310+
)
262311

263312
instances = [
264313
for instance in var.materialize_instances : {

0 commit comments

Comments
 (0)