variable "rg_name" { type = string } variable "location" { type = string } variable "base_name" { type = string default = null } variable "name" { type = string default = null validation { condition = ( (var.name != null && trimspace(var.name) != "") || (var.base_name != null && trimspace(var.base_name) != "") ) error_message = "Provide name or base_name with a non-empty value." } } variable "account_tier" { type = string default = "Standard" } variable "account_replication_type" { type = string default = "LRS" } variable "allow_nested_items_to_be_public" { type = bool default = false } variable "public_network_access_enabled" { type = bool default = true } variable "enable_blob_soft_delete" { type = bool default = false } variable "blob_soft_delete_retention_days" { type = number default = null validation { condition = ( var.enable_blob_soft_delete == false || var.blob_soft_delete_retention_days == null || (var.blob_soft_delete_retention_days >= 1 && var.blob_soft_delete_retention_days <= 365) ) error_message = "blob_soft_delete_retention_days must be between 1 and 365." } } variable "enable_container_soft_delete" { type = bool default = false } variable "container_soft_delete_retention_days" { type = number default = null validation { condition = ( var.enable_container_soft_delete == false || var.container_soft_delete_retention_days == null || (var.container_soft_delete_retention_days >= 1 && var.container_soft_delete_retention_days <= 365) ) error_message = "container_soft_delete_retention_days must be between 1 and 365." } } variable "enable_blob_versioning" { type = bool default = false } variable "enable_blob_change_feed" { type = bool default = false } variable "enable_point_in_time_restore_for_containers" { type = bool default = false validation { condition = ( var.enable_point_in_time_restore_for_containers == false || ( var.enable_blob_soft_delete && var.enable_blob_versioning && var.enable_blob_change_feed ) ) error_message = "enable_point_in_time_restore_for_containers requires enable_blob_soft_delete, enable_blob_versioning, and enable_blob_change_feed to be true." } } variable "point_in_time_restore_days" { type = number default = null validation { condition = ( var.enable_point_in_time_restore_for_containers == false || var.point_in_time_restore_days != null ) error_message = "point_in_time_restore_days must be set when enable_point_in_time_restore_for_containers is true." } validation { condition = ( var.enable_point_in_time_restore_for_containers == false || (var.point_in_time_restore_days >= 1 && var.point_in_time_restore_days <= 365) ) error_message = "point_in_time_restore_days must be between 1 and 365." } validation { condition = ( var.enable_point_in_time_restore_for_containers == false || var.point_in_time_restore_days < coalesce(var.blob_soft_delete_retention_days, 7) ) error_message = "point_in_time_restore_days must be less than blob_soft_delete_retention_days." } } variable "tags" { type = map(string) default = {} description = "A map of tags to apply to the storage account resource." } variable "containers" { type = map(object({ name = string container_access_type = string })) default = {} # Separate validations to provide specific error messages for each condition validation { condition = alltrue([ for container in values(var.containers) : ( container.name != null && trimspace(container.name) != "" ) ]) error_message = "container name must be a non-empty string." } validation { condition = alltrue([ for container in values(var.containers) : contains(["private", "blob", "container"], container.container_access_type) ]) error_message = "container_access_type must be one of 'private', 'blob', or 'container'." } }