Skip to content

Commit

Permalink
update docs for data source apstra_datacenter_routing_policy
Browse files Browse the repository at this point in the history
  • Loading branch information
chrismarget-j committed Jul 19, 2023
1 parent a1661ac commit 2e79646
Show file tree
Hide file tree
Showing 2 changed files with 290 additions and 0 deletions.
181 changes: 181 additions & 0 deletions docs/data-sources/datacenter_routing_policy.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,181 @@
---
page_title: "apstra_datacenter_routing_policy Data Source - terraform-provider-apstra"
subcategory: ""
description: |-
This resource returns details of a Datacenter Routing Policy.
---

# apstra_datacenter_routing_policy (Data Source)

This resource returns details of a Datacenter Routing Policy.

## Example Usage

```terraform
# This example pulls a routing policy by name and makes it
# avalilable via `output`
data "apstra_datacenter_routing_policy" "test" {
blueprint_id = "f30a5572-b899-408a-9195-e4d5bc1118cb" # required attribute
# id = "CX05RiY6Zcp32h7nPE0" # optional attribute
name = "test-label-d1f12" # optional attribute
}
output "test_policy" { value = data.apstra_datacenter_routing_policy.test }
# the output looks like:
#
# test_policy = {
# "aggregate_prefixes" = tolist([
# "1.0.0.0/8",
# "2.0.0.0/7",
# ])
# "blueprint_id" = "f30a5572-b899-408a-9195-e4d5bc1118cb"
# "description" = "test-description-d1f12"
# "expect_default_ipv4" = true
# "expect_default_ipv6" = true
# "export_policy" = {
# "export_l2_edge_subnets" = true
# "export_l3_edge_server_links" = true
# "export_loopbacks" = true
# "export_spine_leaf_links" = true
# "export_spine_superspine_links" = true
# "export_static_routes" = true
# }
# "extra_exports" = tolist([
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "200.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "200.64.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = tonumber(null)
# "prefix" = "200.128.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = tonumber(null)
# "le_mask" = 14
# "prefix" = "200.192.0.0/10"
# },
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "210.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "210.0.0.0/10"
# },
# ])
# "extra_imports" = tolist([
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "100.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "100.64.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 11
# "le_mask" = tonumber(null)
# "prefix" = "100.128.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = tonumber(null)
# "le_mask" = 11
# "prefix" = "100.192.0.0/10"
# },
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "110.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "110.0.0.0/10"
# },
# ])
# "id" = "CX05RiY6Zcp32h7nPE0"
# "import_policy" = "default_only"
# "name" = "test-label-d1f12"
# }
```

<!-- schema generated by tfplugindocs -->
## Schema

### Required

- `blueprint_id` (String) Apstra Blueprint ID.

### Optional

- `id` (String) Apstra graph node ID.
- `name` (String) Web UI 'name' field.

### Read-Only

- `aggregate_prefixes` (List of String) BGP Aggregate routes to be imported into a routing zone (VRF) on all border switches. This option can only be set on routing policies associated with routing zones, and cannot be set on per-connectivity point policies. The aggregated routes are sent to all external router peers in a SZ (VRF).
- `description` (String) Web UI 'description' field.
- `expect_default_ipv4` (Boolean) Default IPv4 route is expected to be imported via protocol session using this policy. Used for rendering route expectations.
- `expect_default_ipv6` (Boolean) Default IPv6 route is expected to be imported via protocol session using this policy. Used for rendering route expectations.
- `export_policy` (Attributes) The export policy controls export of various types of fabric prefixes. (see [below for nested schema](#nestedatt--export_policy))
- `extra_exports` (Attributes List) User defined export routes will be used in addition to any other routes specified in export policies. These policies are additive. To advertise only extra routes, disable all export types within 'export_policy', and only the extra prefixes specified here will be advertised. (see [below for nested schema](#nestedatt--extra_exports))
- `extra_imports` (Attributes List) User defined import routes will be used in addition to any routes generated by the import policies. Prefixes specified here are additive to the import policy, unless 'import_policy' is set to "extra_only", in which only these routes will be imported. (see [below for nested schema](#nestedatt--extra_imports))
- `import_policy` (String) One of '', 'default_only', 'all', 'extra_only'

<a id="nestedatt--export_policy"></a>
### Nested Schema for `export_policy`

Read-Only:

- `export_l2_edge_subnets` (Boolean) Exports all virtual networks (VLANs) that have L3 addresses within a routing zone (VRF).
- `export_l3_edge_server_links` (Boolean) Exports all leaf to L3 server links within a routing zone (VRF). This will be an empty list on a layer2 based blueprint
- `export_loopbacks` (Boolean) Exports all loopbacks within a routing zone (VRF) across spine, leaf, and L3 servers.
- `export_spine_leaf_links` (Boolean) Exports all spine-supersine (fabric) links within the default routing zone (VRF)
- `export_spine_superspine_links` (Boolean) Exports all spine-leaf (fabric) links within a VRF. EVPN routing zones do not have spine-leaf addressing, so this generated list may be empty. For routing zones of type Virtual L3 Fabric, subinterfaces between spine-leaf will be included.
- `export_static_routes` (Boolean) Exports all subnets in a VRF associated with static routes from all fabric systems to external routers associated with this routing policy


<a id="nestedatt--extra_exports"></a>
### Nested Schema for `extra_exports`

Read-Only:

- `action` (String) If the action is "permit", match the route. If the action is "deny", do not match the route. For composing complex policies, all prefix-list items will be processed in the order specified, top-down. This allows the user to deny a subset of a route that may otherwise be permitted.
- `ge_mask` (Number) Match less-specific prefixes from a parent prefix, up from `ge_mask` to the prefix length of the route. Range is 0-32 for IPv4, 0-128 for IPv6. If not specified, implies the prefix-list entry should be an exact match. The option can be optionally be used in combination with `le_mask`. `ge_mask` must be longer than the subnet prefix length. If `le_mask` and `ge_mask` are both specified, then `le_mask` must be greater than `ge_mask`.
- `le_mask` (Number) Match more-specific prefixes from a parent prefix, up until `le_mask` prefix len. Range is 0-32 for IPv4, 0-128 for IPv6. If not specified, implies the prefix-list entry should be an exact match. The option can be optionally be used in combination with `ge_mask`. `le_mask` must be longer than the subnet prefix length. If `le_mask` and `ge_mask` are both specified, then `le_mask` must be greater than `ge_mask`.
- `prefix` (String) IPv4 or IPv6 network address specified in the form of network/prefixlen.


<a id="nestedatt--extra_imports"></a>
### Nested Schema for `extra_imports`

Read-Only:

- `action` (String) If the action is "permit", match the route. If the action is "deny", do not match the route. For composing complex policies, all prefix-list items will be processed in the order specified, top-down. This allows the user to deny a subset of a route that may otherwise be permitted.
- `ge_mask` (Number) Match less-specific prefixes from a parent prefix, up from `ge_mask` to the prefix length of the route. Range is 0-32 for IPv4, 0-128 for IPv6. If not specified, implies the prefix-list entry should be an exact match. The option can be optionally be used in combination with `le_mask`. `ge_mask` must be longer than the subnet prefix length. If `le_mask` and `ge_mask` are both specified, then `le_mask` must be greater than `ge_mask`.
- `le_mask` (Number) Match more-specific prefixes from a parent prefix, up until `le_mask` prefix len. Range is 0-32 for IPv4, 0-128 for IPv6. If not specified, implies the prefix-list entry should be an exact match. The option can be optionally be used in combination with `ge_mask`. `le_mask` must be longer than the subnet prefix length. If `le_mask` and `ge_mask` are both specified, then `le_mask` must be greater than `ge_mask`.
- `prefix` (String) IPv4 or IPv6 network address specified in the form of network/prefixlen.
109 changes: 109 additions & 0 deletions examples/data-sources/apstra_datacenter_routing_policy/example.tf
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# This example pulls a routing policy by name and makes it
# avalilable via `output`
data "apstra_datacenter_routing_policy" "test" {
blueprint_id = "f30a5572-b899-408a-9195-e4d5bc1118cb" # required attribute
# id = "CX05RiY6Zcp32h7nPE0" # optional attribute
name = "test-label-d1f12" # optional attribute
}

output "test_policy" { value = data.apstra_datacenter_routing_policy.test }

# the output looks like:
#
# test_policy = {
# "aggregate_prefixes" = tolist([
# "1.0.0.0/8",
# "2.0.0.0/7",
# ])
# "blueprint_id" = "f30a5572-b899-408a-9195-e4d5bc1118cb"
# "description" = "test-description-d1f12"
# "expect_default_ipv4" = true
# "expect_default_ipv6" = true
# "export_policy" = {
# "export_l2_edge_subnets" = true
# "export_l3_edge_server_links" = true
# "export_loopbacks" = true
# "export_spine_leaf_links" = true
# "export_spine_superspine_links" = true
# "export_static_routes" = true
# }
# "extra_exports" = tolist([
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "200.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "200.64.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = tonumber(null)
# "prefix" = "200.128.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = tonumber(null)
# "le_mask" = 14
# "prefix" = "200.192.0.0/10"
# },
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "210.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "210.0.0.0/10"
# },
# ])
# "extra_imports" = tolist([
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "100.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "100.64.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 11
# "le_mask" = tonumber(null)
# "prefix" = "100.128.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = tonumber(null)
# "le_mask" = 11
# "prefix" = "100.192.0.0/10"
# },
# {
# "action" = "permit"
# "ge_mask" = 11
# "le_mask" = 13
# "prefix" = "110.0.0.0/10"
# },
# {
# "action" = "deny"
# "ge_mask" = 12
# "le_mask" = 14
# "prefix" = "110.0.0.0/10"
# },
# ])
# "id" = "CX05RiY6Zcp32h7nPE0"
# "import_policy" = "default_only"
# "name" = "test-label-d1f12"
# }

0 comments on commit 2e79646

Please sign in to comment.