main.management_policy.tf (79 lines of code) (raw):

resource "azurerm_storage_management_policy" "this" { count = local.has_management_policy ? 1 : 0 storage_account_id = azurerm_storage_account.this.id dynamic "rule" { for_each = var.storage_management_policy_rule content { enabled = rule.value.enabled name = rule.value.name dynamic "actions" { for_each = [rule.value.actions] content { dynamic "base_blob" { for_each = actions.value.base_blob == null ? [] : [actions.value.base_blob] content { auto_tier_to_hot_from_cool_enabled = base_blob.value.auto_tier_to_hot_from_cool_enabled delete_after_days_since_creation_greater_than = base_blob.value.delete_after_days_since_creation_greater_than delete_after_days_since_last_access_time_greater_than = base_blob.value.delete_after_days_since_last_access_time_greater_than delete_after_days_since_modification_greater_than = base_blob.value.delete_after_days_since_modification_greater_than tier_to_archive_after_days_since_creation_greater_than = base_blob.value.tier_to_archive_after_days_since_creation_greater_than tier_to_archive_after_days_since_last_access_time_greater_than = base_blob.value.tier_to_archive_after_days_since_last_access_time_greater_than tier_to_archive_after_days_since_last_tier_change_greater_than = base_blob.value.tier_to_archive_after_days_since_last_tier_change_greater_than tier_to_archive_after_days_since_modification_greater_than = base_blob.value.tier_to_archive_after_days_since_modification_greater_than tier_to_cold_after_days_since_creation_greater_than = base_blob.value.tier_to_cold_after_days_since_creation_greater_than tier_to_cold_after_days_since_last_access_time_greater_than = base_blob.value.tier_to_cold_after_days_since_last_access_time_greater_than tier_to_cold_after_days_since_modification_greater_than = base_blob.value.tier_to_cold_after_days_since_modification_greater_than tier_to_cool_after_days_since_creation_greater_than = base_blob.value.tier_to_cool_after_days_since_creation_greater_than tier_to_cool_after_days_since_last_access_time_greater_than = base_blob.value.tier_to_cool_after_days_since_last_access_time_greater_than tier_to_cool_after_days_since_modification_greater_than = base_blob.value.tier_to_cool_after_days_since_modification_greater_than } } dynamic "snapshot" { for_each = actions.value.snapshot == null ? [] : [actions.value.snapshot] content { change_tier_to_archive_after_days_since_creation = snapshot.value.change_tier_to_archive_after_days_since_creation change_tier_to_cool_after_days_since_creation = snapshot.value.change_tier_to_cool_after_days_since_creation delete_after_days_since_creation_greater_than = snapshot.value.delete_after_days_since_creation_greater_than tier_to_archive_after_days_since_last_tier_change_greater_than = snapshot.value.tier_to_archive_after_days_since_last_tier_change_greater_than tier_to_cold_after_days_since_creation_greater_than = snapshot.value.tier_to_cold_after_days_since_creation_greater_than } } dynamic "version" { for_each = actions.value.version == null ? [] : [actions.value.version] content { change_tier_to_archive_after_days_since_creation = version.value.change_tier_to_archive_after_days_since_creation change_tier_to_cool_after_days_since_creation = version.value.change_tier_to_cool_after_days_since_creation delete_after_days_since_creation = version.value.delete_after_days_since_creation tier_to_archive_after_days_since_last_tier_change_greater_than = version.value.tier_to_archive_after_days_since_last_tier_change_greater_than tier_to_cold_after_days_since_creation_greater_than = version.value.tier_to_cold_after_days_since_creation_greater_than } } } } dynamic "filters" { for_each = [rule.value.filters] content { blob_types = filters.value.blob_types prefix_match = filters.value.prefix_match dynamic "match_blob_index_tag" { for_each = filters.value.match_blob_index_tag == null ? [] : filters.value.match_blob_index_tag content { name = match_blob_index_tag.value.name value = match_blob_index_tag.value.value operation = match_blob_index_tag.value.operation } } } } } } dynamic "timeouts" { for_each = var.storage_management_policy_timeouts == null ? [] : [var.storage_management_policy_timeouts] content { create = timeouts.value.create delete = timeouts.value.delete read = timeouts.value.read update = timeouts.value.update } } }