@@ -607,4 +607,60 @@ resource "catalystcenter_fabric_port_assignments" "port_assignments" {
607607 port_assignments = try (local. device_port_assignments [each . key ], null )
608608
609609 depends_on = [catalystcenter_fabric_device . edge_device , catalystcenter_fabric_device . border_device , catalystcenter_fabric_devices . fabric_devices , catalystcenter_provision_devices . provision_devices , catalystcenter_provision_device . provision_device , catalystcenter_anycast_gateway . anycast_gateway ]
610- }
610+ }
611+
612+
613+ locals {
614+ fabric_multicast_configs = {
615+ for fabric_site in try (local. catalyst_center . fabric . fabric_sites , []) :
616+ fabric_site.name = > {
617+ fabric_site_name = fabric_site.name
618+ virtual_networks = [
619+ for vn in try (fabric_site. multicast . virtual_networks , []) : {
620+ virtual_network_name = try (vn. name , null )
621+ ip_pool_name = try (vn. ipPoolName , null )
622+ ipv4_ssm_ranges = try (vn. ipv4_ssm_ranges , null ) != null ? [try (vn. ipv4_ssm_ranges , null )] : []
623+ multicast_RPs = try (vn. multicast_RPs , [])
624+ }
625+ ]
626+ } if try (fabric_site. multicast , null ) != null
627+ }
628+ }
629+
630+ resource "catalystcenter_fabric_multicast_virtual_networks" "multicast" {
631+ for_each = {
632+ for fabric_site , config in local . fabric_multicast_configs :
633+ fabric_site = > config
634+ if contains (local. sites , fabric_site) && length (config. virtual_networks ) > 0
635+ }
636+
637+ fabric_id = try (catalystcenter_fabric_site. fabric_site [each . key ]. id , null )
638+
639+ virtual_networks = [
640+ for vn in each . value . virtual_networks : {
641+ fabric_id = try (catalystcenter_fabric_site. fabric_site [each . key ]. id , null )
642+ virtual_network_name = try (vn. virtual_network_name , null )
643+ ip_pool_name = try (vn. ip_pool_name , null )
644+ ipv4_ssm_ranges = try (vn. ipv4_ssm_ranges , [])
645+ multicast_rps = [
646+ for rp in try (vn. multicast_RPs , []) : {
647+ ipv4_address = try (rp. ipv4Address , null )
648+ ipv6_address = try (rp. ipv6Address , null )
649+ ipv4_asm_ranges = try (rp. ipv4AsmRanges , null ) != null ? [try (rp. ipv4AsmRanges , null )] : null
650+ ipv6_asm_ranges = try (rp. ipv6AsmRanges , null ) != null ? [try (rp. ipv6AsmRanges , null )] : null
651+ is_default_v4_rp = try (rp. isDefaultV4RP , null )
652+ is_default_v6_rp = try (rp. isDefaultV6RP , null )
653+ rp_device_location = try (rp. rpLocation , null )
654+ network_device_ids = try (rp. rpLocation , " " ) == " FABRIC" ? [
655+ for device_name in try (rp. FabricRPs , []) :
656+ try (local. device_name_to_id [device_name ], null )
657+ ] : null
658+ }
659+ ]
660+ }
661+ ]
662+
663+ depends_on = [
664+ catalystcenter_fabric_site . fabric_site , catalystcenter_fabric_l3_virtual_network . l3_vn , catalystcenter_virtual_network_to_fabric_site . l3_vn_to_fabric_site , catalystcenter_ip_pool_reservation . pool_reservation , catalystcenter_provision_devices . provision_devices , catalystcenter_provision_device . provision_device
665+ ]
666+ }
0 commit comments