Skip to content

Commit

Permalink
Add support for ptp profiles (#67)
Browse files Browse the repository at this point in the history
  • Loading branch information
null0route authored May 22, 2024
1 parent b83bde8 commit 9dcb0cf
Show file tree
Hide file tree
Showing 21 changed files with 467 additions and 1 deletion.
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -481,6 +481,11 @@ repos:
args: ["./modules/terraform-aci-ptp"]
- id: terraform-docs-system
args: ["./modules/terraform-aci-ptp/examples/complete"]
- id: terraform-docs-system
args: ["./modules/terraform-aci-ptp-profile"]
- id: terraform-docs-system
args: ["./modules/terraform-aci-ptp-profile/examples/complete"]
- id: terraform-docs-system
- id: terraform-docs-system
args: ["./modules/terraform-aci-qos"]
- id: terraform-docs-system
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ Additional example repositories:
| <a name="module_aci_port_tracking"></a> [aci\_port\_tracking](#module\_aci\_port\_tracking) | ./modules/terraform-aci-port-tracking | n/a |
| <a name="module_aci_psu_policy"></a> [aci\_psu\_policy](#module\_aci\_psu\_policy) | ./modules/terraform-aci-psu-policy | n/a |
| <a name="module_aci_ptp"></a> [aci\_ptp](#module\_aci\_ptp) | ./modules/terraform-aci-ptp | n/a |
| <a name="module_aci_ptp_profile"></a> [aci\_ptp\_profile](#module\_aci\_ptp\_profile) | ./modules/terraform-aci-ptp-profile | n/a |
| <a name="module_aci_qos"></a> [aci\_qos](#module\_aci\_qos) | ./modules/terraform-aci-qos | n/a |
| <a name="module_aci_qos_policy"></a> [aci\_qos\_policy](#module\_aci\_qos\_policy) | ./modules/terraform-aci-qos-policy | n/a |
| <a name="module_aci_radius"></a> [aci\_radius](#module\_aci\_radius) | ./modules/terraform-aci-radius | n/a |
Expand Down
15 changes: 15 additions & 0 deletions aci_access_policies.tf
Original file line number Diff line number Diff line change
Expand Up @@ -819,3 +819,18 @@ module "aci_vspan_session" {
}]
}]
}

module "aci_ptp_profile" {
source = "./modules/terraform-aci-ptp-profile"

for_each = { for profile in try(local.access_policies.ptp_profiles, []) : profile.name => profile if local.modules.aci_ptp_profile && var.manage_access_policies }
name = each.value.name
announce_interval = try(each.value.announce_interval, local.defaults.apic.access_policies.ptp_profiles.announce_interval)
announce_timeout = try(each.value.announce_timeout, local.defaults.apic.access_policies.ptp_profiles.announce_timeout)
delay_interval = try(each.value.delay_interval, local.defaults.apic.access_policies.ptp_profiles.delay_interval)
forwardable = try(each.value.forwardable, local.defaults.apic.access_policies.ptp_profiles.forwardable)
priority = try(each.value.priority, local.defaults.apic.access_policies.ptp_profiles.priority)
sync_interval = try(each.value.sync_interval, local.defaults.apic.access_policies.ptp_profiles.sync_interval)
template = try(each.value.template, local.defaults.apic.access_policies.ptp_profiles.template)
mismatch_handling = try(each.value.mismatch_handling, local.defaults.apic.access_policies.ptp_profiles.mismatch_handling)
}
6 changes: 6 additions & 0 deletions aci_tenants.tf
Original file line number Diff line number Diff line change
Expand Up @@ -363,6 +363,9 @@ locals {
vlan = try(sp.vlan, null)
deployment_immediacy = try(sp.deployment_immediacy, local.defaults.apic.tenants.application_profiles.endpoint_groups.static_ports.deployment_immediacy)
mode = try(sp.mode, local.defaults.apic.tenants.application_profiles.endpoint_groups.static_ports.mode)
ptp_source_ip = try(sp.ptp.source_ip, local.defaults.apic.tenants.application_profiles.endpoint_groups.static_ports.ptp.source_ip)
ptp_mode = try(sp.ptp.mode, local.defaults.apic.tenants.application_profiles.endpoint_groups.static_ports.ptp.mode)
ptp_profile = try(sp.ptp.profile, null)
}]
static_leafs = [for sl in try(epg.static_leafs, []) : {
pod_id = try(sl.pod_id, null)
Expand Down Expand Up @@ -442,6 +445,9 @@ module "aci_endpoint_group" {
vlan = sp.vlan
deployment_immediacy = sp.deployment_immediacy
mode = sp.mode
ptp_source_ip = sp.ptp_source_ip
ptp_mode = sp.ptp_mode
ptp_profile = sp.ptp_profile
}]
static_leafs = [for sl in try(each.value.static_leafs, []) : {
pod_id = sl.pod_id == null ? try([for node in try(local.node_policies.nodes, []) : node.pod if node.id == sl.node_id][0], local.defaults.apic.node_policies.nodes.pod) : sl.pod_id
Expand Down
9 changes: 9 additions & 0 deletions defaults/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,15 @@ defaults:
direction: both
access_paths:
module: 1
ptp_profiles:
announce_interval: 1
announce_timeout: 3
delay_interval: -3
sync_interval: -3
priority: 128
template: aes67
forwardable: true
mismatch_handling: configured
node_policies:
oob_endpoint_group: default
inb_endpoint_group: default
Expand Down
1 change: 1 addition & 0 deletions defaults/modules.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ modules:
aci_port_tracking: true
aci_psu_policy: true
aci_ptp: true
aci_ptp_profile: true
aci_qos: true
aci_qos_policy: true
aci_radius: true
Expand Down
10 changes: 9 additions & 1 deletion modules/terraform-aci-endpoint-group/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ module "aci_endpoint_group" {
module = 1
deployment_immediacy = "lazy"
mode = "untagged"
ptp = {
profile = "PTP1"
}
}]
static_leafs = [{
node_id = 102
Expand Down Expand Up @@ -142,7 +145,7 @@ module "aci_endpoint_group" {
| <a name="input_subnets"></a> [subnets](#input\_subnets) | List of subnets. Default value `public`: `false`. Default value `shared`: `false`. Default value `igmp_querier`: `false`. Default value `nd_ra_prefix`: `true`. Default value `no_default_gateway`: `false`. `nlb_mode` allowed values: `mode-mcast-igmp`, `mode-uc` or `mode-mcast-static`. | <pre>list(object({<br> description = optional(string, "")<br> ip = string<br> public = optional(bool, false)<br> shared = optional(bool, false)<br> igmp_querier = optional(bool, false)<br> nd_ra_prefix = optional(bool, true)<br> no_default_gateway = optional(bool, false)<br> nd_ra_prefix_policy = optional(string, "")<br> ip_pools = optional(list(object({<br> name = string<br> start_ip = optional(string, "0.0.0.0")<br> end_ip = optional(string, "0.0.0.0")<br> dns_search_suffix = optional(string, "")<br> dns_server = optional(string, "")<br> dns_suffix = optional(string, "")<br> wins_server = optional(string, "")<br> })), [])<br> next_hop_ip = optional(string, "")<br> anycast_mac = optional(string, "")<br> nlb_group = optional(string, "0.0.0.0")<br> nlb_mac = optional(string, "00:00:00:00:00:00")<br> nlb_mode = optional(string, "")<br> }))</pre> | `[]` | no |
| <a name="input_vmware_vmm_domains"></a> [vmware\_vmm\_domains](#input\_vmware\_vmm\_domains) | List of VMware VMM domains. Default value `u_segmentation`: `false`. Default value `netflow`: `false`. Choices `deployment_immediacy`: `immediate`, `lazy`. Default value `deployment_immediacy`: `lazy`. Choices `resolution_immediacy`: `immediate`, `lazy`, `pre-provision`. Default value `resolution_immediacy`: `immediate`. Default value `allow_promiscuous`: `false`. Default value `forged_transmits`: `false`. Default value `mac_changes`: `false`. | <pre>list(object({<br> name = string<br> u_segmentation = optional(bool, false)<br> delimiter = optional(string, "")<br> vlan = optional(number)<br> primary_vlan = optional(number)<br> secondary_vlan = optional(number)<br> netflow = optional(bool, false)<br> deployment_immediacy = optional(string, "lazy")<br> resolution_immediacy = optional(string, "immediate")<br> allow_promiscuous = optional(bool, false)<br> forged_transmits = optional(bool, false)<br> mac_changes = optional(bool, false)<br> custom_epg_name = optional(string, "")<br> elag = optional(string, "")<br> active_uplinks_order = optional(string, "")<br> standby_uplinks = optional(string, "")<br> }))</pre> | `[]` | no |
| <a name="input_static_leafs"></a> [static\_leafs](#input\_static\_leafs) | List of static leaf switches. Allowed values `pod_id`: `1` - `255`. Default value `pod_id`: `1`. Allowed values `node_id`: `1` - `4000`. Allowed values `vlan`: `1` - `4096`. Choices `mode`: `regular`, `native`, `untagged`. Default value `mode`: `regular`. Choices `deployment_immediacy`: `immediate`, `lazy`. Default value `deployment_immediacy`: `immediate` | <pre>list(object({<br> pod_id = optional(number, 1)<br> node_id = number<br> vlan = number<br> mode = optional(string, "regular")<br> deployment_immediacy = optional(string, "immediate")<br> }))</pre> | `[]` | no |
| <a name="input_static_ports"></a> [static\_ports](#input\_static\_ports) | List of static ports. Allowed values `node_id`, `node2_id`: `1` - `4000`. Allowed values `fex_id`, `fex2_id`: `101` - `199`. Allowed values `vlan`: `1` - `4096`. Allowed values `pod_id`: `1` - `255`. Default value `pod_id`: `1`. Allowed values `port`: `1` - `127`. Allowed values `sub_port`: `1` - `16`. Allowed values `module`: `1` - `9`. Default value `module`: `1`. Choices `deployment_immediacy`: `immediate`, `lazy`. Default value `deployment_immediacy`: `lazy`. Choices `mode`: `regular`, `native`, `untagged`. Default value `mode`: `regular`. | <pre>list(object({<br> node_id = number<br> node2_id = optional(number)<br> fex_id = optional(number)<br> fex2_id = optional(number)<br> vlan = number<br> pod_id = optional(number, 1)<br> port = optional(number)<br> sub_port = optional(number)<br> module = optional(number, 1)<br> channel = optional(string)<br> deployment_immediacy = optional(string, "lazy")<br> mode = optional(string, "regular")<br> }))</pre> | `[]` | no |
| <a name="input_static_ports"></a> [static\_ports](#input\_static\_ports) | List of static ports. Allowed values `node_id`, `node2_id`: `1` - `4000`. Allowed values `fex_id`, `fex2_id`: `101` - `199`. Allowed values `vlan`: `1` - `4096`. Allowed values `pod_id`: `1` - `255`. Default value `pod_id`: `1`. Allowed values `port`: `1` - `127`. Allowed values `sub_port`: `1` - `16`. Allowed values `module`: `1` - `9`. Default value `module`: `1`. Choices `deployment_immediacy`: `immediate`, `lazy`. Default value `deployment_immediacy`: `lazy`. Choices `mode`: `regular`, `native`, `untagged`. Default value `mode`: `regular`. | <pre>list(object({<br> node_id = number<br> node2_id = optional(number)<br> fex_id = optional(number)<br> fex2_id = optional(number)<br> vlan = number<br> pod_id = optional(number, 1)<br> port = optional(number)<br> sub_port = optional(number)<br> module = optional(number, 1)<br> channel = optional(string)<br> deployment_immediacy = optional(string, "lazy")<br> mode = optional(string, "regular")<br> ptp_source_ip = optional(string, "0.0.0.0")<br> ptp_mode = optional(string, "multicast")<br> ptp_profile = optional(string)<br> }))</pre> | `[]` | no |
| <a name="input_static_endpoints"></a> [static\_endpoints](#input\_static\_endpoints) | List of static endpoints. Format `mac`: `12:34:56:78:9A:BC`. Choices `type`: `silent-host`, `tep`, `vep`. Allowed values `node_id`, `node2_id`: `1` - `4000`. Allowed values `vlan`: `1` - `4096`. Allowed values `pod_id`: `1` - `255`. Default value `pod_id`: `1`. Allowed values `port`: `1` - `127`. Allowed values `module`: `1` - `9`. Default value `module`: `1`. | <pre>list(object({<br> name = optional(string, "")<br> alias = optional(string, "")<br> mac = string<br> ip = optional(string, "0.0.0.0")<br> type = string<br> node_id = optional(number)<br> node2_id = optional(number)<br> vlan = optional(number)<br> pod_id = optional(number, 1)<br> port = optional(number)<br> module = optional(number, 1)<br> channel = optional(string)<br> additional_ips = optional(list(string), [])<br> }))</pre> | `[]` | no |
| <a name="input_l4l7_virtual_ips"></a> [l4l7\_virtual\_ips](#input\_l4l7\_virtual\_ips) | List of EPG L4/L7 Virtual IPs. | <pre>list(object({<br> ip = string<br> description = optional(string, "")<br> }))</pre> | `[]` | no |
| <a name="input_l4l7_address_pools"></a> [l4l7\_address\_pools](#input\_l4l7\_address\_pools) | List of EPG L4/L7 Address Pools. | <pre>list(object({<br> name = string<br> gateway_address = string<br> from = optional(string, "")<br> to = optional(string, "")<br> }))</pre> | `[]` | no |
Expand Down Expand Up @@ -191,6 +194,11 @@ module "aci_endpoint_group" {
| [aci_rest_managed.fvVip](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.fvnsUcastAddrBlk](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.ipNexthopEpP](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.ptpEpgCfg_channel](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.ptpEpgCfg_fex_channel](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.ptpEpgCfg_fex_port](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.ptpEpgCfg_port](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.ptpEpgCfg_subport](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.tagInst](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.vmmSecP](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
| [aci_rest_managed.vnsAddrInst](https://registry.terraform.io/providers/CiscoDevNet/aci/latest/docs/resources/rest_managed) | resource |
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ module "aci_endpoint_group" {
module = 1
deployment_immediacy = "lazy"
mode = "untagged"
ptp = {
profile = "PTP1"
}
}]
static_leafs = [{
node_id = 102
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,9 @@ module "aci_endpoint_group" {
module = 1
deployment_immediacy = "lazy"
mode = "untagged"
ptp = {
profile = "PTP1"
}
}]
static_leafs = [{
node_id = 102
Expand Down
Loading

0 comments on commit 9dcb0cf

Please sign in to comment.