Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ module "iosxr" {
| [iosxr_logging_source_interface.logging_source_interface](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/logging_source_interface) | resource |
| [iosxr_mpls_oam.mpls_oam](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/mpls_oam) | resource |
| [iosxr_ntp.ntp](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/ntp) | resource |
| [iosxr_router_ospf.router_ospf](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/router_ospf) | resource |
| [iosxr_router_static_ipv4_unicast.router_static_ipv4_unicast](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/router_static_ipv4_unicast) | resource |
| [iosxr_segment_routing.segment_routing](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/segment_routing) | resource |
| [iosxr_service_timestamps.service_timestamps](https://registry.terraform.io/providers/CiscoDevNet/iosxr/latest/docs/resources/service_timestamps) | resource |
Expand Down
114 changes: 114 additions & 0 deletions iosxr_router_ospf.tf
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • We are not planning on supporting defaults for list items at this point. You can simplify line 4.
for ospf_process in try(local.device_config[device.name].router_ospf, []) : {

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Your defaults fallback have underscores instead of periods. Please correct to work.
local.defaults.iosxr.configuration.router_ospf.process_name

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
locals {
device_router_ospf = flatten([
for device in local.devices : [
for ospf_process in try(local.device_config[device.name].router_ospf,
try(local.defaults.iosxr.configuration.router_ospf, null) != null ?
[local.defaults.iosxr.configuration.router_ospf] : []
) : {
device_name = device.name
key = "${device.name}-${ospf_process.process_name}"

process_name = try(ospf_process.process_name, local.defaults.iosxr.configuration.router_ospf_process_name, null)
mpls_ldp_sync = try(ospf_process.mpls_ldp_sync, local.defaults.iosxr.configuration.router_ospf_mpls_ldp_sync, null)
hello_interval = try(ospf_process.hello_interval, local.defaults.iosxr.configuration.router_ospf_hello_interval, null)
dead_interval = try(ospf_process.dead_interval, local.defaults.iosxr.configuration.router_ospf_dead_interval, null)
priority = try(ospf_process.priority, local.defaults.iosxr.configuration.router_ospf_priority, null)
mtu_ignore_enable = try(ospf_process.mtu_ignore_enable, local.defaults.iosxr.configuration.router_ospf_mtu_ignore_enable, null)
mtu_ignore_disable = try(ospf_process.mtu_ignore_disable, local.defaults.iosxr.configuration.router_ospf_mtu_ignore_disable, null)
passive_enable = try(ospf_process.passive_enable, local.defaults.iosxr.configuration.router_ospf_passive_enable, null)
passive_disable = try(ospf_process.passive_disable, local.defaults.iosxr.configuration.router_ospf_passive_disable, null)
router_id = try(ospf_process.router_id, local.defaults.iosxr.configuration.router_ospf_router_id, null)
redistribute_connected = try(ospf_process.redistribute_connected, local.defaults.iosxr.configuration.router_ospf_redistribute_connected, null)
redistribute_connected_tag = try(ospf_process.redistribute_connected_tag, local.defaults.iosxr.configuration.router_ospf_redistribute_connected_tag, null)
redistribute_connected_metric_type = try(ospf_process.redistribute_connected_metric_type, local.defaults.iosxr.configuration.router_ospf_redistribute_connected_metric_type, null)
redistribute_static = try(ospf_process.redistribute_static, local.defaults.iosxr.configuration.router_ospf_redistribute_static, null)
redistribute_static_tag = try(ospf_process.redistribute_static_tag, local.defaults.iosxr.configuration.router_ospf_redistribute_static_tag, null)
redistribute_static_metric_type = try(ospf_process.redistribute_static_metric_type, local.defaults.iosxr.configuration.router_ospf_redistribute_static_metric_type, null)
bfd_fast_detect = try(ospf_process.bfd_fast_detect, local.defaults.iosxr.configuration.router_ospf_bfd_fast_detect, null)
bfd_minimum_interval = try(ospf_process.bfd_minimum_interval, local.defaults.iosxr.configuration.router_ospf_bfd_minimum_interval, null)
bfd_multiplier = try(ospf_process.bfd_multiplier, local.defaults.iosxr.configuration.router_ospf_bfd_multiplier, null)
default_information_originate = try(ospf_process.default_information_originate, local.defaults.iosxr.configuration.router_ospf_default_information_originate, null)
default_information_originate_always = try(ospf_process.default_information_originate_always, local.defaults.iosxr.configuration.router_ospf_default_information_originate_always, null)
default_information_originate_metric_type = try(ospf_process.default_information_originate_metric_type, local.defaults.iosxr.configuration.router_ospf_default_information_originate_metric_type, null)
auto_cost_reference_bandwidth = try(ospf_process.auto_cost_reference_bandwidth, local.defaults.iosxr.configuration.router_ospf_auto_cost_reference_bandwidth, null)
auto_cost_disable = try(ospf_process.auto_cost_disable, local.defaults.iosxr.configuration.router_ospf_auto_cost_disable, null)
segment_routing_mpls = try(ospf_process.segment_routing_mpls, local.defaults.iosxr.configuration.router_ospf_segment_routing_mpls, null)
segment_routing_sr_prefer = try(ospf_process.segment_routing_sr_prefer, local.defaults.iosxr.configuration.router_ospf_segment_routing_sr_prefer, null)

areas = [
for area in try(ospf_process.areas, local.defaults.iosxr.configuration.router_ospf_areas, []) : {
area_id = try(area.area_id, local.defaults.iosxr.configuration.router_ospf_area_id, null)
}
]

redistribute_bgp = [
for bgp in try(ospf_process.redistribute_bgp, local.defaults.iosxr.configuration.router_ospf_redistribute_bgp, []) : {
as_number = try(bgp.as_number, local.defaults.iosxr.configuration.router_ospf_redistribute_bgp_as_number, null)
tag = try(bgp.tag, local.defaults.iosxr.configuration.router_ospf_redistribute_bgp_tag, null)
metric_type = try(bgp.metric_type, local.defaults.iosxr.configuration.router_ospf_redistribute_bgp_metric_type, null)
}
]

redistribute_isis = [
for isis in try(ospf_process.redistribute_isis, local.defaults.iosxr.configuration.router_ospf_redistribute_isis, []) : {
instance_name = try(isis.instance_name, local.defaults.iosxr.configuration.router_ospf_redistribute_isis_instance_name, null)
level_1 = try(isis.level_1, local.defaults.iosxr.configuration.router_ospf_redistribute_isis_level_1, null)
level_2 = try(isis.level_2, local.defaults.iosxr.configuration.router_ospf_redistribute_isis_level_2, null)
level_1_2 = try(isis.level_1_2, local.defaults.iosxr.configuration.router_ospf_redistribute_isis_level_1_2, null)
tag = try(isis.tag, local.defaults.iosxr.configuration.router_ospf_redistribute_isis_tag, null)
metric_type = try(isis.metric_type, local.defaults.iosxr.configuration.router_ospf_redistribute_isis_metric_type, null)
}
]

redistribute_ospf = [
for ospf in try(ospf_process.redistribute_ospf, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf, []) : {
instance_name = try(ospf.instance_name, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf_instance_name, null)
match_internal = try(ospf.match_internal, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf_match_internal, null)
match_external = try(ospf.match_external, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf_match_external, null)
match_nssa_external = try(ospf.match_nssa_external, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf_match_nssa_external, null)
tag = try(ospf.tag, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf_tag, null)
metric_type = try(ospf.metric_type, local.defaults.iosxr.configuration.router_ospf_redistribute_ospf_metric_type, null)
}
]
}
]
if try(local.device_config[device.name].router_ospf, null) != null || try(local.defaults.iosxr.configuration.router_ospf, null) != null
])
}

resource "iosxr_router_ospf" "router_ospf" {
for_each = { for ospf in local.device_router_ospf : ospf.key => ospf }

device = each.value.device_name

process_name = each.value.process_name
mpls_ldp_sync = each.value.mpls_ldp_sync
hello_interval = each.value.hello_interval
dead_interval = each.value.dead_interval
priority = each.value.priority
mtu_ignore_enable = each.value.mtu_ignore_enable
mtu_ignore_disable = each.value.mtu_ignore_disable
passive_enable = each.value.passive_enable
passive_disable = each.value.passive_disable
router_id = each.value.router_id
redistribute_connected = each.value.redistribute_connected
redistribute_connected_tag = each.value.redistribute_connected_tag
redistribute_connected_metric_type = each.value.redistribute_connected_metric_type
redistribute_static = each.value.redistribute_static
redistribute_static_tag = each.value.redistribute_static_tag
redistribute_static_metric_type = each.value.redistribute_static_metric_type
bfd_fast_detect = each.value.bfd_fast_detect
bfd_minimum_interval = each.value.bfd_minimum_interval
bfd_multiplier = each.value.bfd_multiplier
default_information_originate = each.value.default_information_originate
default_information_originate_always = each.value.default_information_originate_always
default_information_originate_metric_type = each.value.default_information_originate_metric_type
auto_cost_reference_bandwidth = each.value.auto_cost_reference_bandwidth
auto_cost_disable = each.value.auto_cost_disable
segment_routing_mpls = each.value.segment_routing_mpls
segment_routing_sr_prefer = each.value.segment_routing_sr_prefer
areas = each.value.areas
redistribute_bgp = each.value.redistribute_bgp
redistribute_isis = each.value.redistribute_isis
redistribute_ospf = each.value.redistribute_ospf
}