locals.topics.tf (33 lines of code) (raw):

locals { base_topics = { for k, v in local.topic_subscriptions : k => v if v.subscription_params.forward_to == null && v.subscription_params.forward_dead_lettered_messages_to == null } flatten_topic_rules = flatten([ for topic_name, topic_params in local.normalized_topics : [ for rule_key, rule_params in topic_params.authorization_rules : { topic_name = topic_name rule_params = rule_params rule_name = coalesce(rule_params.name, rule_key) } ] ]) flatten_topic_subscription = flatten([ for topic_name, topic_params in local.normalized_topics : [ for subscription_key, subscription_params in topic_params.subscriptions : { topic_name = topic_name subscription_params = subscription_params subscription_name = coalesce(subscription_params.name, subscription_key) } ] ]) forward_topics = { for k, v in local.topic_subscriptions : k => v if v.subscription_params.forward_to != null || v.subscription_params.forward_dead_lettered_messages_to != null } normalized_topics = var.sku != local.basic_sku_name ? { for topic_key, topic_params in var.topics : coalesce(topic_params.name, topic_key) => topic_params } : {} topic_rules = { for topic_rule in local.flatten_topic_rules : "${topic_rule.topic_name}|${topic_rule.rule_name}" => topic_rule } topic_subscriptions = { for topic_subscription in local.flatten_topic_subscription : "${topic_subscription.topic_name}|${topic_subscription.subscription_name}" => topic_subscription } }