Skip to content

Commit

Permalink
Merge pull request #254 from Azure/patch/combined_parameters
Browse files Browse the repository at this point in the history
Add support to ESLZ 0.3.3 to multiple type of parameters
  • Loading branch information
LaurentLesle committed Sep 23, 2021
2 parents 1dd7b60 + fb69f28 commit 07c5b53
Show file tree
Hide file tree
Showing 15 changed files with 218 additions and 226 deletions.
72 changes: 67 additions & 5 deletions caf_solution/add-ons/caf_eslz/archetype_config_overrides.tf
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ locals {
]
],
[
try(roles.principal_ids, [])
roles.principal_ids != null ? try(roles.principal_ids, []) : []
]
]
) //flatten (ids)
Expand All @@ -30,15 +30,77 @@ locals {
) : mapping.role => mapping.ids
}

parameters = {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => jsonencode(try(local.caf[value.output_key][value.lz_key][value.resource_type][value.resource_key][value.attribute_key], value.value))
}
parameters = local.aco_parameters_combined[mg_id]
}
}

aco_parameters_combined = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => merge(
local.aco_parameters_value[mg_id][param_key],
local.aco_parameters_values[mg_id][param_key],
local.aco_parameters_integer[mg_id][param_key],
local.aco_parameters_boolean[mg_id][param_key],
local.aco_parameters_hcl_jsonencoded[mg_id][param_key],
local.aco_parameters_remote_lz[mg_id][param_key]
)
}
}

aco_parameters_value = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => value.value
if value.value != null
}
}
}

aco_parameters_values = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => value.values
if value.values != null
}
}
}

aco_parameters_integer = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => value.integer
if value.integer != null
}
}
}

aco_parameters_boolean = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => value.boolean
if value.boolean != null
}
}
}

aco_parameters_hcl_jsonencoded = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => jsondecode(value.hcl_jsonencoded)
if value.hcl_jsonencoded != null
}
}
}

aco_parameters_remote_lz = {
for mg_id, mg_value in try(var.archetype_config_overrides, {}) : mg_id => {
for param_key, param_value in try(mg_value.parameters, {}) : param_key => {
for key, value in param_value : key => local.caf[value.output_key][value.lz_key][value.resource_type][value.resource_key][value.attribute_key]
if value.output_key != null
}
}
}

}

# output caf {
Expand Down
76 changes: 70 additions & 6 deletions caf_solution/add-ons/caf_eslz/custom_landing_zones.tf
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ locals {
]
],
[
try(roles.principal_ids, [])
roles.principal_ids != null ? try(roles.principal_ids, []) : []
]
]
) //flatten (ids)
Expand All @@ -61,12 +61,76 @@ locals {
) : mapping.role => mapping.ids
}

parameters = {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => jsonencode(try(local.caf[value.output_key][value.lz_key][value.resource_type][value.resource_key][value.attribute_key], value.value))
}
}
parameters = local.clz_parameters_combined[mg_id]

}
}

clz_parameters_combined = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => merge(
local.clz_parameters_value[mg_id][param_key],
local.clz_parameters_values[mg_id][param_key],
local.clz_parameters_integer[mg_id][param_key],
local.clz_parameters_boolean[mg_id][param_key],
local.clz_parameters_hcl_jsonencoded[mg_id][param_key],
local.clz_parameters_remote_lz[mg_id][param_key]
)
}
}

clz_parameters_value = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => value.value
if value.value != null
}
}
}

clz_parameters_values = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => value.values
if value.values != null
}
}
}

clz_parameters_integer = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => value.integer
if value.integer != null
}
}
}

clz_parameters_boolean = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => value.boolean
if value.boolean != null
}
}
}

clz_parameters_hcl_jsonencoded = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => jsondecode(value.hcl_jsonencoded)
if value.hcl_jsonencoded != null
}
}
}

clz_parameters_remote_lz = {
for mg_id, mg_value in try(var.custom_landing_zones, {}) : mg_id => {
for param_key, param_value in try(mg_value.archetype_config.parameters, {}) : param_key => {
for key, value in param_value : key => local.caf[value.output_key][value.lz_key][value.resource_type][value.resource_key][value.attribute_key]
if value.output_key != null
}
}
}

}
4 changes: 3 additions & 1 deletion caf_solution/add-ons/caf_eslz/enterprise_scale.tf
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

module "enterprise_scale" {
source = "Azure/caf-enterprise-scale/azurerm"
version = "~> 0.1.0"
version = "~> 0.3.0"

# source = "../../../../eslz"

root_parent_id = data.azurerm_client_config.current.tenant_id
default_location = local.global_settings.regions[local.global_settings.default_region]
Expand Down
10 changes: 0 additions & 10 deletions caf_solution/add-ons/caf_eslz/lib/archetype_definitions/README.md

This file was deleted.

10 changes: 0 additions & 10 deletions caf_solution/add-ons/caf_eslz/lib/policy_assignments/README.md

This file was deleted.

10 changes: 0 additions & 10 deletions caf_solution/add-ons/caf_eslz/lib/policy_definitions/README.md

This file was deleted.

10 changes: 0 additions & 10 deletions caf_solution/add-ons/caf_eslz/lib/policy_set_definitions/README.md

This file was deleted.

11 changes: 0 additions & 11 deletions caf_solution/add-ons/caf_eslz/lib/role_definitions/README.md

This file was deleted.

6 changes: 3 additions & 3 deletions caf_solution/add-ons/caf_eslz/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,11 @@ terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 2.55.0"
version = "~> 2.65.0"
}
}
required_version = ">= 0.13"
required_version = ">= 0.14"
experiments = [module_variable_optional_attrs]
}


Expand All @@ -15,4 +16,3 @@ provider "azurerm" {
}

data "azurerm_client_config" "current" {}

This file was deleted.

This file was deleted.

Loading

0 comments on commit 07c5b53

Please sign in to comment.