Skip to content

Commit

Permalink
Merge branch 'devel' into additional_dot1x
Browse files Browse the repository at this point in the history
  • Loading branch information
ClausHolbechArista committed Aug 7, 2024
2 parents 551b28f + 2adf14f commit 11fdc4f
Show file tree
Hide file tree
Showing 511 changed files with 1,748 additions and 5,902 deletions.
118 changes: 112 additions & 6 deletions ansible_collections/arista/avd/docs/porting-guides/5.x.x.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,34 @@ built into `eos_designs`.

### Data model changes from "dict-of-dicts" to "list-of-dicts"

TODO: Removed type conversion
In AVD 4.0.0 and across both `eos_designs` and `eos_cli_config_gen`, *all* "dict-of-dicts" data models with user-defined keys were changed to "list-of-dicts".
In AVD 4.x inputs were auto-converted to the new data models.

As of AVD 5.0.0 the automatic conversion from dict-of-dicts has been removed, so it is required to update the input data to the new data models.

Errors will be raised for each data model not conforming to the list type when running AVD:

```sh
$ ansible-playbook playbook.yml
<...>
ERROR! [host1]: 'Validation Error: access_lists': {'ACL-01': {'sequence_numbers': {10: {'actio<...abbreviated...>4 any'}}}} is not of type 'list'
```

As an example, `ethernet_interfaces` was changed from:

```yaml
ethernet_intefaces:
Ethernet1: # <-- User defined key
<...>
```
to:
```yaml
ethernet_interfaces:
- name: Ethernet1 # <-- "name" here is called the "primary_key" which must have a unique value across all list elements
<...>
```
## Removal of Ansible plugins
Expand Down Expand Up @@ -53,16 +80,95 @@ The following data model keys have been removed from `eos_designs` in v5.0.0.
| Removed key | New key |
| ----------- | ------- |
| cvp_instance_ip | cvp_instance_ips |
| old key 2(defs_adapter_config) | new key(TODO) |
| old key 3.1(defs_node_type) | new key(TODO) |
| old key 3.2(defs_node_type) | new key(TODO) |
| old key 4(defs_svi_settings) | new key(TODO) |
| old key 5(ptp) | new key(TODO) |
| <connected_endpoints_key>[].adapters[].port_channel.short_esi | <connected_endpoints_key>[].adapters[].ethernet_segment.short_esi |
| network_ports[].port_channel.short_esi | network_ports[].ethernet_segment.short_esi |
| port_profiles[].port_channel.short_esi | port_profiles[].ethernet_segment.short_esi |
| <node_type_key>.defaults.inband_management_subnet | <node_type_key>.defaults.inband_mgmt_subnet |
| <node_type_key>.defaults.inband_management_vlan | <node_type_key>.defaults.inband_mgmt_vlan |
| <node_type_key>.node_groups[].nodes[].inband_management_subnet | <node_type_key>.node_groups[].nodes[].inband_mgmt_subnet |
| <node_type_key>.node_groups[].nodes[].inband_management_vlan | <node_type_key>.node_groups[].nodes[].inband_mgmt_vlan |
| <node_type_key>.node_groups[].inband_management_subnet | <node_type_key>.node_groups[].inband_mgmt_subnet |
| <node_type_key>.node_groups[].inband_management_vlan | <node_type_key>.node_groups[].inband_mgmt_vlan |
| <node_type_key>.nodes[].inband_management_subnet | <node_type_key>.nodes[].inband_mgmt_subnet |
| <node_type_key>.nodes[].inband_management_vlan | <node_type_key>.nodes[].inband_mgmt_vlan |
| <network_services_key>[].vrfs[].svis[].ipv6_address_virtual | <network_services_key>[].vrfs[].svis[].ipv6_address_virtuals |
| svi_profiles[].ipv6_address_virtual | svi_profiles[].ipv6_address_virtuals |
| ptp | ptp_settings |

## Changes to role `arista.avd.eos_cli_config_gen`

TODO: Level 3 sections for each change with details on how to migrate

### No auto-conversion of old data model for `router_bgp.redistribute_routes` and `router_bgp.vrfs[].redistribute_routes`

The change has been incorporated into `eos_designs`, so action is only required when defining new interfaces
with `structured_config`, `custom_structured_configuration_`, or when using `eos_cli_config_gen` directly.

The data models for `router_bgp.redistribute_routes` and `router_bgp.vrfs[].redistribute_routes` previously supported either a list of strings or a dict-of-dicts.
In AVD 4.0.0 this was changed to a list-of-dicts with automatic conversion from any of the previous models into the new model.

As of AVD 5.0.0 the automatic conversion from both of the previous models has been removed, so it is required to update the input data to the new data models.

=== "Old data models"

```yaml
# Old list data model
router_bgp:
redistribute_routes:
- connected
- static
vrfs:
- name: test
redistribute_routes:
- connected
- static
# Old dict-of-dicts data model
router_bgp:
redistribute_routes:
connected:
route_map: connected-to-bgp
static:
route_map: static-to-bgp
vrfs:
- name: test
redistribute_routes:
connected:
route_map: connected-to-bgp
static:
route_map: static-to-bgp
```

=== "New data model"

```yaml
# New data model
router_bgp:
redistribute_routes:
- source_procol: connected
- source_protocol: static
vrfs:
- name: test
redistribute_routes:
- source_procol: connected
- source_protocol: static
# New data model
router_bgp:
redistribute_routes:
- source_protocol: connected
route_map: connected-to-bgp
- source_protocol: static
route_map: static-to-bgp
vrfs:
- name: test
redistribute_routes:
- source_protocol: connected
route_map: connected-to-bgp
- source_protocol: static
route_map: static-to-bgp
```

### Removal of deprecated data models

The following data model keys have been removed from `eos_cli_config_gen` in v5.0.0.
Expand Down
31 changes: 30 additions & 1 deletion ansible_collections/arista/avd/docs/release-notes/5.x.x.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,12 @@ See the [porting guide](../porting-guides/5.x.x.md#removal-of-ansible-plugins) f

### Data model changes from "dict-of-dicts" to "list-of-dicts"

TODO: Removed type conversion
In AVD 4.0.0 and across both `eos_designs` and `eos_cli_config_gen`, *all* "dict-of-dicts" data models with user-defined keys were changed to "list-of-dicts".
In AVD 4.x inputs were auto-converted to the new data models.

As of AVD 5.0.0 the automatic conversion from dict-of-dicts has been removed, so it is required to update the input data to the new data models.

See the [porting guide](../porting-guides/5.x.x.md#data-model-changes-from-dict-of-dicts-to-list-of-dicts) for details.

### All eos_designs and eos_cli_config_gen variables are always validated by schemas

Expand All @@ -55,6 +60,15 @@ for details.

TODO: add level4 sections for breaking changes outlining the change and referring to porting guide for migration.

#### No auto-conversion of old data model for `router_bgp.redistribute_routes` and `router_bgp.vrfs[].redistribute_routes`

The data models for `router_bgp.redistribute_routes` and `router_bgp.vrfs[].redistribute_routes` previously supported either a list of strings or a dict-of-dicts.
In 4.0.0 this was changed to a list-of-dicts with automatic conversion from any of the previous models into the new model.

As of AVD 5.0.0 the automatic conversion from both of the previous models has been removed, so it is required to update the input data to the new data models.

See the [porting guide](../porting-guides/5.x.x.md#no-auto-conversion-of-old-data-model-for-router_bgpredistribute_routes-and-router_bgpvrfsredistribute_routes) for details.

#### Removal of schema in JSON format

The `eos_cli_config_gen.jsonschema.json` is no longer generated. This schema was not being used and had never been complete.
Expand All @@ -66,6 +80,21 @@ for details.

TODO: add level4 sections for breaking changes outlining the change and referring to porting guide for migration.

#### ipv6_virtual_router_addresses are now configured if ipv6_enable is true on SVIs

For SVIs with `ipv6_virtual_router_addresses` set, AVD versions below 5.0.0 only rendered the configuration if `ipv6_address`
was also set on the SVI.

With AVD version 5.0.0 `ipv6_virtual_router_addresses` are rendered in the configuration if either `ipv6_address` or `ipv6_enable: true` is set.

#### ipv6_address_virtuals are now only configured on SVIs if ipv6_virtual_router_addresses are not set

AVD versions below 5.0.0 had a bug where `ipv6_address_virtuals` were rendered in the configuration even if `ipv6_virtual_router_addresses` were
set. Instead `ipv6_address_virtuals` were removed if the IPv4 `ip_virtual_router_addresses` were set.

With AVD version 5.0.0 `ipv6_address_virtuals` are only rendered in the configuration when `ipv6_virtual_router_addresses` are not set for a specific node.
`ip_virtual_router_addresses` is no longer used to decide whether `ipv6_address_virtuals` are configured.

#### Removal of schema in JSON format

The `eos_designs.jsonschema.json` is no longer generated. This schema was not being used and had never been complete.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ root_dir: '{{ playbook_dir }}'

# local users
local_users:
admin:
- name: admin
privilege: 15
role: network-admin
no_password: true

cvpadmin:
- name: cvpadmin
privilege: 15
role: network-admin
sha512_password: "$6$rZKcbIZ7iWGAWTUM$TCgDn1KcavS0s.OV8lacMTUkxTByfzcGlFlYUWroxYuU7M/9bIodhRO7nXGzMweUxvbk8mJmQl8Bh44cRktUj."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,19 @@ spine:
platform: vEOS-LAB
bgp_as: 65001
nodes:
DC1-SPINE1:
- name: DC1-SPINE1
id: 1
mgmt_ip: 192.168.200.101/24
mac_address: '0c:1d:c0:1d:62:01'
DC1-SPINE2:
- name: DC1-SPINE2
id: 2
mgmt_ip: 192.168.200.102/24
mac_address: '0c:1d:c0:1d:62:01'
DC1-SPINE3:
- name: DC1-SPINE3
id: 3
mgmt_ip: 192.168.200.103/24
mac_address: '0c:1d:c0:1d:62:01'
DC1-SPINE4:
- name: DC1-SPINE4
id: 4
mgmt_ip: 192.168.200.104/24
mac_address: '0c:1d:c0:1d:62:01'
Expand All @@ -70,61 +70,61 @@ l3leaf:
spanning_tree_priority: 4096
virtual_router_mac_address: 00:dc:00:00:00:0a
node_groups:
DC1_LEAF1:
- group: DC1_LEAF1
bgp_as: 65101
filter:
tenants: [ all ]
tags: [ web, app ]
nodes:
DC1-LEAF1A:
- name: DC1-LEAF1A
id: 1
mgmt_ip: 192.168.200.105/24
mac_address: '0c:1d:c0:1d:62:01'
spine_interfaces: [ Ethernet1, Ethernet1, Ethernet1, Ethernet1 ]
DC1_LEAF2:
- group: DC1_LEAF2
bgp_as: 65102
filter:
tenants: [ Tenant_A, Tenant_B, Tenant_C ]
tags: [ opzone, web, app, db, vmotion, nfs ]
nodes:
DC1-LEAF2A:
- name: DC1-LEAF2A
id: 2
mgmt_ip: 192.168.200.106/24
mac_address: '0c:1d:c0:1d:62:01'
spine_interfaces: [ Ethernet2, Ethernet2, Ethernet2, Ethernet2 ]
DC1-LEAF2B:
- name: DC1-LEAF2B
id: 3
mgmt_ip: 192.168.200.107/24
mac_address: '0c:1d:c0:1d:62:01'
spine_interfaces: [ Ethernet3, Ethernet3, Ethernet3, Ethernet3 ]
DC1_SVC3:
- group: DC1_SVC3
bgp_as: 65103
filter:
tenants: [ Tenant_A, Tenant_B, Tenant_C ]
tags: [ opzone, web, app, db, vmotion, nfs, wan ]
nodes:
DC1-SVC3A:
- name: DC1-SVC3A
id: 4
mgmt_ip: 192.168.200.108/24
mac_address: '0c:1d:c0:1d:62:01'
spine_interfaces: [ Ethernet4, Ethernet4, Ethernet4, Ethernet4 ]
DC1-SVC3B:
- name: DC1-SVC3B
id: 5
mgmt_ip: 192.168.200.109/24
mac_address: '0c:1d:c0:1d:62:01'
spine_interfaces: [ Ethernet5, Ethernet5, Ethernet5, Ethernet5 ]
DC1_BL1:
- group: DC1_BL1
bgp_as: 65104
filter:
tenants: [ all ]
tags: [ wan ]
nodes:
DC1-BL1A:
- name: DC1-BL1A
id: 6
mgmt_ip: 192.168.200.110/24
mac_address: '0c:1d:c0:1d:62:01'
spine_interfaces: [ Ethernet6, Ethernet6, Ethernet6, Ethernet6 ]
DC1-BL1B:
- name: DC1-BL1B
id: 7
mgmt_ip: 192.168.200.111/24
spine_interfaces: [ Ethernet7, Ethernet7, Ethernet7, Ethernet7 ]
Expand Down
Loading

0 comments on commit 11fdc4f

Please sign in to comment.