CiscoDevNet/terraform-provider-nxos

Add support for route-map and prefix-lists

mobig opened this issue · 7 comments

mobig commented

I noticed that there are no Route-Map and Prefix-List resources in the provider. I think it would be awesome if we could get those added. They're pretty important for network configuration, and it would be a huge help to have them available in Provider.

adding the ability to assign the prefix list or route-map to bgp neighbors would also be helpful

mobig commented

any chance for this?

Which kind of "Set" action are you planing to use ?

mobig commented

i would imagine it should have parity with the IOSXE provider.

resource "iosxe_route_map" "example" {
  name = "RM1"
  entries = [
    {
      seq                                        = 10
      operation                                  = "permit"
      description                                = "Entry 10"
      continue                                   = false
      match_interfaces                           = ["GigabitEthernet1"]
      match_ip_address_access_lists              = ["ACL1"]
      match_ip_next_hop_access_lists             = ["ACL1"]
      match_ipv6_address_access_lists            = "ACL1"
      match_ipv6_next_hop_access_lists           = "ACL1"
      match_route_type_external                  = true
      match_route_type_external_type_1           = true
      match_route_type_external_type_2           = true
      match_route_type_internal                  = true
      match_route_type_level_1                   = true
      match_route_type_level_2                   = true
      match_route_type_local                     = true
      match_source_protocol_bgp                  = ["65000"]
      match_source_protocol_connected            = true
      match_source_protocol_eigrp                = ["10"]
      match_source_protocol_isis                 = true
      match_source_protocol_lisp                 = true
      match_source_protocol_ospf                 = ["10"]
      match_source_protocol_ospfv3               = ["10"]
      match_source_protocol_rip                  = true
      match_source_protocol_static               = true
      match_tags                                 = [100]
      match_track                                = 1
      match_as_paths                             = [10]
      match_community_lists                      = ["COMM1"]
      match_community_list_exact_match           = true
      match_extcommunity_lists                   = ["EXTCOMM1"]
      match_local_preferences                    = [100]
      set_default_interfaces                     = ["GigabitEthernet1"]
      set_global                                 = false
      set_interfaces                             = ["GigabitEthernet1"]
      set_ip_address                             = "PFL1"
      set_ip_default_global_next_hop_address     = ["1.2.3.4"]
      set_ip_default_next_hop_address            = ["1.2.3.4"]
      set_ip_global_next_hop_address             = ["1.2.3.4"]
      set_ip_next_hop_address                    = ["1.2.3.4"]
      set_ip_qos_group                           = 1
      set_ipv6_address                           = "PFL2"
      set_ipv6_default_global_next_hop           = "2001::1"
      set_ipv6_default_next_hop                  = ["2001::1"]
      set_ipv6_next_hop                          = ["2001::1"]
      set_level_1                                = true
      set_metric_value                           = 110
      set_metric_delay                           = "10"
      set_metric_reliability                     = 90
      set_metric_loading                         = 10
      set_metric_mtu                             = 1500
      set_metric_type                            = "external"
      set_tag                                    = 100
      set_as_path_prepend_as                     = "65001 65001"
      set_as_path_prepend_last_as                = 5
      set_as_path_tag                            = true
      set_communities                            = ["1:2"]
      set_communities_additive                   = true
      set_community_list_delete                  = true
      set_community_list_name                    = "COMML1"
      set_extcomunity_rt                         = ["10:10"]
      set_extcomunity_soo                        = "10:10"
      set_extcomunity_vpn_distinguisher          = "10:10"
      set_extcomunity_vpn_distinguisher_additive = true
      set_local_preference                       = 110
      set_weight                                 = 10000

however, we really on use it to set communities and match prefix lists for bgp neighbors

@danischm based on the IOXE and NXOS generator schema files, it look like the IOXE provider supports nested attributed values while the NXOS doesn't. Is this a limitation of the DME/NXAPI compared to the YANG/RESTCONF?

For now I will create a dedicated resource per MO in the NXO providers, which basically means that each Set/Match actions will be an independent resource. What are your thoughts?

Yes, the NXOS provider only supports a single object per resource (when we want to auto-generate the code). Though we can then build a single route-map module that combines all the resources.

mobig commented

I see that you updated the code in the repo. I wanted to ask when you plan on having the documentation on the terraform site as well as when you’ll publish a new release to the terraform registry. I suppose I could compile it myself, but I’m not even sure at this point if it’s done yet. Thank you again for your support.

Resources have been added in v0.3.23.