summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/_get_version.yaml28
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config.cfg12
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config_1_3.cfg9
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/_populate.yaml27
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/_preconfig.yaml8
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/_remove_config.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/deleted.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/merged.yaml4
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/overridden.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/parsed.yaml35
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/rendered.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/replaced.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/tests/cli/rtt.yaml4
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/vars/main.yaml98
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/vars/pre-v1_4.yaml103
-rw-r--r--tests/integration/targets/vyos_bgp_address_family/vars/v1_4.yaml113
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/_get_version.yaml28
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config.cfg43
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config_1_3.cfg19
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/_populate.yaml51
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/_populate_af.yaml23
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/_remove_config.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/deleted.yaml2
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/deleted_af.yaml1
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/merged.yaml22
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/parsed.yaml34
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/purged.yaml9
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/rendered.yaml20
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/replaced.yaml14
-rw-r--r--tests/integration/targets/vyos_bgp_global/tests/cli/replaced_af.yaml12
-rw-r--r--tests/integration/targets/vyos_bgp_global/vars/main.yaml149
-rw-r--r--tests/integration/targets/vyos_bgp_global/vars/pre-v1_4.yaml91
-rw-r--r--tests/integration/targets/vyos_bgp_global/vars/v1_4.yaml90
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_address_family_config_14.cfg8
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config.cfg5
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config_14.cfg6
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config.cfg1
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config_14.cfg5
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config.cfg10
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config_14.cfg14
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_bgp_address_family.py194
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py1000
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_bgp_global.py199
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_bgp_global14.py495
44 files changed, 2471 insertions, 527 deletions
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_get_version.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_get_version.yaml
new file mode 100644
index 00000000..2588b194
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_get_version.yaml
@@ -0,0 +1,28 @@
+- name: make sure to get facts
+ vyos.vyos.vyos_facts:
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ register: vyos_facts
+ when: vyos_version is not defined
+
+- name: debug vyos_facts
+ debug:
+ var: vyos_facts
+
+- name: pull version from facts
+ set_fact:
+ vyos_version: "{{ vyos_facts.ansible_facts.ansible_net_version.split('-')[0].split(' ')[-1] }}"
+ when: vyos_version is not defined
+
+- name: fix '.0' versions
+ set_fact:
+ vyos_version: "{{ vyos_version }}.0"
+ when: vyos_version.count('.') == 1
+
+- name: include correct vars
+ include_vars: pre-v1_4.yaml
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: include correct vars
+ include_vars: v1_4.yaml
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config.cfg b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config.cfg
index 2aecc805..afb0987a 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config.cfg
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config.cfg
@@ -1,9 +1,9 @@
set policy access-list 20 description 'acl20'
set policy access-list 40 description 'acl40'
set policy route-map map01 description 'map01'
-set protocols bgp 65536 address-family ipv6-unicast aggregate-address 5000:1:1::/64 summary-only
-set protocols bgp 65536 address-family ipv6-unicast network 21e0:1:1::/64 route-map 'map01'
-set protocols bgp 65536 address-family ipv6-unicast redistribute ripng metric '20'
-set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast route-map export 'map01'
-set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast soft-reconfiguration inbound
-set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop
+set protocols bgp address-family ipv6-unicast aggregate-address 5000:1:1::/64 summary-only
+set protocols bgp address-family ipv6-unicast network 21e0:1:1::/64 route-map 'map01'
+set protocols bgp address-family ipv6-unicast redistribute ripng metric '20'
+set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast route-map export 'map01'
+set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast soft-reconfiguration inbound
+set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config_1_3.cfg b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config_1_3.cfg
new file mode 100644
index 00000000..2aecc805
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_parsed_config_1_3.cfg
@@ -0,0 +1,9 @@
+set policy access-list 20 description 'acl20'
+set policy access-list 40 description 'acl40'
+set policy route-map map01 description 'map01'
+set protocols bgp 65536 address-family ipv6-unicast aggregate-address 5000:1:1::/64 summary-only
+set protocols bgp 65536 address-family ipv6-unicast network 21e0:1:1::/64 route-map 'map01'
+set protocols bgp 65536 address-family ipv6-unicast redistribute ripng metric '20'
+set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast route-map export 'map01'
+set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast soft-reconfiguration inbound
+set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_populate.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_populate.yaml
index ecbcc70d..4158a65d 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_populate.yaml
@@ -1,7 +1,10 @@
---
- ansible.builtin.include_tasks: _remove_config.yaml
-- name: Setup
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
+- name: Setup (Pre 1.4)
vyos.vyos.vyos_config:
lines:
- set policy access-list 20 description 'acl20'
@@ -17,3 +20,25 @@
ignore_errors: true
vars:
ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: Setup (1.4+)
+ vyos.vyos.vyos_config:
+ lines:
+ - set policy access-list 20 description 'acl20'
+ - set policy access-list 40 description 'acl40'
+ - set policy access-list6 10 description 'acl10'
+ - set policy route-map map01 description 'map01'
+ - set protocols bgp system-as 65536
+ - set protocols bgp address-family ipv6-unicast aggregate-address 5000:1:1::/64 summary-only
+ - set protocols bgp address-family ipv6-unicast network 21e0:1:1::/64 route-map 'map01'
+ - set protocols bgp address-family ipv6-unicast redistribute ripng metric '20'
+ - set protocols bgp neighbor 192.0.2.25 remote-as 65535
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast route-map export 'map01'
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast soft-reconfiguration inbound
+ - set protocols bgp neighbor 203.0.113.5 remote-as 65534
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop
+ ignore_errors: true
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_preconfig.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_preconfig.yaml
index 5024a70f..65adbb40 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_preconfig.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_preconfig.yaml
@@ -9,3 +9,11 @@
ignore_errors: true
vars:
ansible_connection: ansible.netcommon.network_cli
+
+- name: setup for 1.4+
+ vyos.vyos.vyos_config:
+ lines:
+ - set protocols bgp system-as 65536
+ - set protocols bgp neighbor 203.0.113.5 remote-as 65534
+ - set protocols bgp neighbor 192.0.2.25 remote-as 65534
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_remove_config.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_remove_config.yaml
index 39d8bd02..36600e24 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/_remove_config.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/_remove_config.yaml
@@ -2,7 +2,7 @@
- name: Remove pre-existing bgp processes
vyos.vyos.vyos_config:
lines:
- - delete protocols bgp 65536
+ - delete protocols bgp
- delete policy access-list 20
- delete policy access-list 40
- delete policy access-list6 10
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/deleted.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/deleted.yaml
index 15bfe845..2a760069 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/deleted.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/deleted.yaml
@@ -24,7 +24,7 @@
- assert:
that:
- - result.commands|length == 3
+ - result.commands|length == deleted.commands|length
- result.changed == true
- result.commands|symmetric_difference(deleted.commands) == []
- result.after == ansible_facts['network_resources']['bgp_address_family']
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/merged.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/merged.yaml
index 4e66a78a..acfae74d 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/merged.yaml
@@ -45,11 +45,11 @@
- assert:
that:
- - result.commands|length == 9
+ - result.commands|length == merged.commands|length
- result.changed == true
- result.commands|symmetric_difference(merged.commands) == []
- result.after == ansible_facts['network_resources']['bgp_address_family']
- - result.before == {}
+ - result.before == merged.before
- result.after == merged.after
- name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/overridden.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/overridden.yaml
index 90b40dea..ec0b6164 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/overridden.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/overridden.yaml
@@ -33,7 +33,7 @@
- assert:
that:
- - result.commands|length == 10
+ - result.commands|length == overridden.commands|length
- result.changed == true
- result.commands|symmetric_difference(overridden.commands) == []
- result.after == ansible_facts['network_resources']['bgp_address_family']
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/parsed.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/parsed.yaml
index da9c1417..65e9b1b1 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/parsed.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/parsed.yaml
@@ -2,13 +2,34 @@
- debug:
msg: START vyos_bgp_address_family parsed integration tests on connection={{ ansible_connection }}
-- name: Provide the running configuration for parsing (config to be parsed)
- register: result
- vyos.vyos.vyos_bgp_address_family:
- running_config: "{{ lookup('file', '_parsed_config.cfg') }}"
- state: parsed
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
+- name: version 1.3
+ block:
+ - name: Provide the running configuration for parsing (config to be parsed)
+ register: result
+ vyos.vyos.vyos_bgp_address_family:
+ running_config: "{{ lookup('file', '_parsed_config_1_3.cfg') }}"
+ state: parsed
+ - name: set result
+ set_fact:
+ parsed_result: "{{ result }}"
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: version 1.4+
+ block:
+ - name: Provide the running configuration for parsing (config to be parsed)
+ register: result
+ vyos.vyos.vyos_bgp_address_family:
+ running_config: "{{ lookup('file', '_parsed_config.cfg') }}"
+ state: parsed
+ - name: set result
+ set_fact:
+ parsed_result: "{{ result }}"
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
- assert:
that:
- - result.changed == false
- - result.parsed == populate.config
+ - parsed_result.changed == false
+ - parsed_result.parsed == populate.config
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/rendered.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/rendered.yaml
index 0ef116e8..151f896a 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/rendered.yaml
@@ -39,4 +39,4 @@
- assert:
that:
- result.changed == false
- - result.rendered|symmetric_difference(merged.commands) == []
+ - result.rendered|symmetric_difference(rendered.commands) == []
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/replaced.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/replaced.yaml
index 9b6f3303..15e45be3 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/replaced.yaml
@@ -33,7 +33,7 @@
- assert:
that:
- - result.commands|length == 9
+ - result.commands|length == replaced.commands|length
- result.changed == true
- result.commands|symmetric_difference(replaced.commands) == []
- result.after == ansible_facts['network_resources']['bgp_address_family']
diff --git a/tests/integration/targets/vyos_bgp_address_family/tests/cli/rtt.yaml b/tests/integration/targets/vyos_bgp_address_family/tests/cli/rtt.yaml
index baab61b0..49aeba78 100644
--- a/tests/integration/targets/vyos_bgp_address_family/tests/cli/rtt.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/tests/cli/rtt.yaml
@@ -2,6 +2,8 @@
- debug:
msg: START vyos_bgp_address_family rtt integration tests on connection={{ ansible_connection }}
+- include_tasks: _get_version.yaml
+
- include_tasks: _remove_config.yaml
- include_tasks: _preconfig.yaml
@@ -45,7 +47,7 @@
- assert:
that:
- - baseconfig.commands|length == 9
+ - baseconfig.commands|length == merged.commands|length
- baseconfig.changed == true
- baseconfig.commands|symmetric_difference(merged.commands) == []
- baseconfig.after == ansible_facts['network_resources']['bgp_address_family']
diff --git a/tests/integration/targets/vyos_bgp_address_family/vars/main.yaml b/tests/integration/targets/vyos_bgp_address_family/vars/main.yaml
index 448918af..ed97d539 100644
--- a/tests/integration/targets/vyos_bgp_address_family/vars/main.yaml
+++ b/tests/integration/targets/vyos_bgp_address_family/vars/main.yaml
@@ -1,99 +1 @@
---
-merged:
- commands:
- - set protocols bgp 65536 address-family ipv6-unicast redistribute static metric 50
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
- - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast maximum-prefix 45
- - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast nexthop-self
- - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast route-map export map01
- - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast route-map import map01
- after:
- address_family:
- - afi: ipv6
- redistribute:
- - metric: 50
- protocol: static
- as_number: 65536
- neighbors:
- - address_family:
- - afi: ipv6
- maximum_prefix: 45
- nexthop_self: true
- route_map:
- - action: export
- route_map: map01
- - action: import
- route_map: map01
- neighbor_address: 192.0.2.25
- - address_family:
- - afi: ipv6
- allowas_in: 4
- attribute_unchanged:
- med: true
- default_originate: map01
- distribute_list:
- - acl: 10
- action: export
- neighbor_address: 203.0.113.5
-
-replaced:
- commands:
- - delete protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged
- - delete protocols bgp 65536 address-family ipv6 aggregate-address
- - delete protocols bgp 65536 address-family ipv6 network
- - delete protocols bgp 65536 address-family ipv6-unicast redistribute ripng
- - set protocols bgp 65536 address-family ipv6-unicast redistribute static metric 50
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
-
-overridden:
- commands:
- - delete protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged
- - delete protocols bgp 65536 neighbor 192.0.2.25 address-family
- - delete protocols bgp 65536 address-family ipv6-unicast redistribute ripng
- - delete protocols bgp 65536 address-family ipv6 aggregate-address
- - delete protocols bgp 65536 address-family ipv6 network
- - set protocols bgp 65536 address-family ipv6-unicast redistribute static metric 50
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
- - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
-
-deleted:
- commands:
- - delete protocols bgp 65536 address-family ipv6-unicast
- - delete protocols bgp 65536 neighbor 203.0.113.5 address-family
- - delete protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast
-
-populate:
- config:
- address_family:
- - afi: ipv6
- aggregate_address:
- - summary_only: true
- prefix: 5000:1:1::/64
- networks:
- - prefix: 21e0:1:1::/64
- route_map: map01
- redistribute:
- - metric: 20
- protocol: ripng
- as_number: 65536
- neighbors:
- - address_family:
- - afi: ipv6
- route_map:
- - action: export
- route_map: map01
- soft_reconfiguration: true
- neighbor_address: 192.0.2.25
- - address_family:
- - afi: ipv6
- attribute_unchanged:
- next_hop: true
- neighbor_address: 203.0.113.5
diff --git a/tests/integration/targets/vyos_bgp_address_family/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_bgp_address_family/vars/pre-v1_4.yaml
new file mode 100644
index 00000000..c50db90a
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_address_family/vars/pre-v1_4.yaml
@@ -0,0 +1,103 @@
+---
+rendered:
+ commands: "{{ merged.commands }}"
+
+merged:
+ commands:
+ - set protocols bgp 65536 address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+ - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast maximum-prefix 45
+ - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast nexthop-self
+ - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast route-map export map01
+ - set protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast route-map import map01
+ before: {}
+ after:
+ address_family:
+ - afi: ipv6
+ redistribute:
+ - metric: 50
+ protocol: static
+ as_number: 65536
+ neighbors:
+ - address_family:
+ - afi: ipv6
+ maximum_prefix: 45
+ nexthop_self: true
+ route_map:
+ - action: export
+ route_map: map01
+ - action: import
+ route_map: map01
+ neighbor_address: 192.0.2.25
+ - address_family:
+ - afi: ipv6
+ allowas_in: 4
+ attribute_unchanged:
+ med: true
+ default_originate: map01
+ distribute_list:
+ - acl: 10
+ action: export
+ neighbor_address: 203.0.113.5
+
+replaced:
+ commands:
+ - delete protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged
+ - delete protocols bgp 65536 address-family ipv6 aggregate-address
+ - delete protocols bgp 65536 address-family ipv6 network
+ - delete protocols bgp 65536 address-family ipv6-unicast redistribute ripng
+ - set protocols bgp 65536 address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+
+overridden:
+ commands:
+ - delete protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged
+ - delete protocols bgp 65536 neighbor 192.0.2.25 address-family
+ - delete protocols bgp 65536 address-family ipv6-unicast redistribute ripng
+ - delete protocols bgp 65536 address-family ipv6 aggregate-address
+ - delete protocols bgp 65536 address-family ipv6 network
+ - set protocols bgp 65536 address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp 65536 neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+
+deleted:
+ commands:
+ - delete protocols bgp 65536 address-family ipv6-unicast
+ - delete protocols bgp 65536 neighbor 203.0.113.5 address-family
+ - delete protocols bgp 65536 neighbor 192.0.2.25 address-family ipv6-unicast
+
+populate:
+ config:
+ address_family:
+ - afi: ipv6
+ aggregate_address:
+ - summary_only: true
+ prefix: 5000:1:1::/64
+ networks:
+ - prefix: 21e0:1:1::/64
+ route_map: map01
+ redistribute:
+ - metric: 20
+ protocol: ripng
+ as_number: 65536
+ neighbors:
+ - address_family:
+ - afi: ipv6
+ route_map:
+ - action: export
+ route_map: map01
+ soft_reconfiguration: true
+ neighbor_address: 192.0.2.25
+ - address_family:
+ - afi: ipv6
+ attribute_unchanged:
+ next_hop: true
+ neighbor_address: 203.0.113.5
diff --git a/tests/integration/targets/vyos_bgp_address_family/vars/v1_4.yaml b/tests/integration/targets/vyos_bgp_address_family/vars/v1_4.yaml
new file mode 100644
index 00000000..a56e9ebf
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_address_family/vars/v1_4.yaml
@@ -0,0 +1,113 @@
+---
+rendered:
+ commands:
+ - set protocols bgp system-as 65536
+ - set protocols bgp address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast maximum-prefix 45
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast nexthop-self
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast route-map export map01
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast route-map import map01
+
+merged:
+ commands:
+ - set protocols bgp address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast maximum-prefix 45
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast nexthop-self
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast route-map export map01
+ - set protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast route-map import map01
+ before:
+ as_number: 65536
+ after:
+ address_family:
+ - afi: ipv6
+ redistribute:
+ - metric: 50
+ protocol: static
+ as_number: 65536
+ neighbors:
+ - address_family:
+ - afi: ipv6
+ maximum_prefix: 45
+ nexthop_self: true
+ route_map:
+ - action: export
+ route_map: map01
+ - action: import
+ route_map: map01
+ neighbor_address: 192.0.2.25
+ - address_family:
+ - afi: ipv6
+ allowas_in: 4
+ attribute_unchanged:
+ med: true
+ default_originate: map01
+ distribute_list:
+ - acl: 10
+ action: export
+ neighbor_address: 203.0.113.5
+
+replaced:
+ commands:
+ - delete protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged
+ - delete protocols bgp address-family ipv6 aggregate-address
+ - delete protocols bgp address-family ipv6 network
+ - delete protocols bgp address-family ipv6-unicast redistribute ripng
+ - set protocols bgp address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+
+overridden:
+ commands:
+ - delete protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged
+ - delete protocols bgp neighbor 192.0.2.25 address-family
+ - delete protocols bgp address-family ipv6-unicast redistribute ripng
+ - delete protocols bgp address-family ipv6 aggregate-address
+ - delete protocols bgp address-family ipv6 network
+ - set protocols bgp address-family ipv6-unicast redistribute static metric 50
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast allowas-in number 4
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged med
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast default-originate route-map map01
+ - set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast distribute-list export 10
+
+deleted:
+ commands:
+ - delete protocols bgp address-family ipv6-unicast
+ - delete protocols bgp neighbor 203.0.113.5 address-family
+ - delete protocols bgp neighbor 192.0.2.25 address-family ipv6-unicast
+
+populate:
+ config:
+ address_family:
+ - afi: ipv6
+ aggregate_address:
+ - summary_only: true
+ prefix: 5000:1:1::/64
+ networks:
+ - prefix: 21e0:1:1::/64
+ route_map: map01
+ redistribute:
+ - metric: 20
+ protocol: ripng
+ neighbors:
+ - address_family:
+ - afi: ipv6
+ route_map:
+ - action: export
+ route_map: map01
+ soft_reconfiguration: true
+ neighbor_address: 192.0.2.25
+ - address_family:
+ - afi: ipv6
+ attribute_unchanged:
+ next_hop: true
+ neighbor_address: 203.0.113.5
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/_get_version.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/_get_version.yaml
new file mode 100644
index 00000000..2588b194
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/_get_version.yaml
@@ -0,0 +1,28 @@
+- name: make sure to get facts
+ vyos.vyos.vyos_facts:
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ register: vyos_facts
+ when: vyos_version is not defined
+
+- name: debug vyos_facts
+ debug:
+ var: vyos_facts
+
+- name: pull version from facts
+ set_fact:
+ vyos_version: "{{ vyos_facts.ansible_facts.ansible_net_version.split('-')[0].split(' ')[-1] }}"
+ when: vyos_version is not defined
+
+- name: fix '.0' versions
+ set_fact:
+ vyos_version: "{{ vyos_version }}.0"
+ when: vyos_version.count('.') == 1
+
+- name: include correct vars
+ include_vars: pre-v1_4.yaml
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: include correct vars
+ include_vars: v1_4.yaml
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config.cfg b/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config.cfg
index 2338b03c..e8f78814 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config.cfg
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config.cfg
@@ -1,30 +1,19 @@
set policy access-list 20 description 'acl20'
set policy access-list 40 description 'acl40'
set policy route-map map01 description 'map01'
-set protocols bgp 65536 aggregate-address 192.0.2.0/24 'summary-only'
-set protocols bgp 65536 aggregate-address 203.0.113.0/24 'as-set'
-set protocols bgp 65536 maximum-paths ebgp '20'
-set protocols bgp 65536 maximum-paths ibgp '55'
-set protocols bgp 65536 neighbor 192.0.2.25 'disable-connected-check'
-set protocols bgp 65536 neighbor 192.0.2.25 timers holdtime '30'
-set protocols bgp 65536 neighbor 192.0.2.25 timers keepalive '10'
-set protocols bgp 65536 neighbor 203.0.113.5 attribute-unchanged 'as-path'
-set protocols bgp 65536 neighbor 203.0.113.5 attribute-unchanged 'med'
-set protocols bgp 65536 neighbor 203.0.113.5 attribute-unchanged 'next-hop'
-set protocols bgp 65536 neighbor 203.0.113.5 ebgp-multihop '2'
-set protocols bgp 65536 neighbor 203.0.113.5 remote-as '101'
-set protocols bgp 65536 neighbor 203.0.113.5 update-source '192.0.2.25'
-set protocols bgp 65536 neighbor 5001::64 distribute-list export '20'
-set protocols bgp 65536 neighbor 5001::64 distribute-list import '40'
-set protocols bgp 65536 neighbor 5001::64 maximum-prefix '34'
-set protocols bgp 65536 network 192.1.13.0/24 'backdoor'
-set protocols bgp 65536 parameters bestpath as-path 'confed'
-set protocols bgp 65536 parameters bestpath 'compare-routerid'
-set protocols bgp 65536 parameters confederation identifier '66'
-set protocols bgp 65536 parameters confederation peers '20'
-set protocols bgp 65536 parameters confederation peers '55'
-set protocols bgp 65536 parameters default 'no-ipv4-unicast'
-set protocols bgp 65536 parameters router-id '192.1.2.9'
-set protocols bgp 65536 redistribute connected route-map 'map01'
-set protocols bgp 65536 redistribute kernel metric '45'
-set protocols bgp 65536 timers keepalive '35'
+set protocols bgp system-as '65536'
+set protocols bgp neighbor 192.0.2.25 'disable-connected-check'
+set protocols bgp neighbor 192.0.2.25 timers holdtime '30'
+set protocols bgp neighbor 192.0.2.25 timers keepalive '10'
+set protocols bgp neighbor 192.0.2.25 remote-as '102'
+set protocols bgp neighbor 203.0.113.5 ebgp-multihop '2'
+set protocols bgp neighbor 203.0.113.5 remote-as '101'
+set protocols bgp neighbor 203.0.113.5 update-source '192.0.2.25'
+set protocols bgp neighbor 5001::64 remote-as '103'
+set protocols bgp parameters bestpath as-path 'confed'
+set protocols bgp parameters bestpath 'compare-routerid'
+set protocols bgp parameters confederation identifier '66'
+set protocols bgp parameters confederation peers '20'
+set protocols bgp parameters confederation peers '55'
+set protocols bgp parameters router-id '192.1.2.9'
+set protocols bgp timers keepalive '35'
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config_1_3.cfg b/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config_1_3.cfg
new file mode 100644
index 00000000..fbf23261
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/_parsed_config_1_3.cfg
@@ -0,0 +1,19 @@
+set policy access-list 20 description 'acl20'
+set policy access-list 40 description 'acl40'
+set policy route-map map01 description 'map01'
+set protocols bgp 65536 neighbor 192.0.2.25 'disable-connected-check'
+set protocols bgp 65536 neighbor 192.0.2.25 timers holdtime '30'
+set protocols bgp 65536 neighbor 192.0.2.25 timers keepalive '10'
+set protocols bgp 65536 neighbor 192.0.2.25 remote-as '102'
+set protocols bgp 65536 neighbor 203.0.113.5 ebgp-multihop '2'
+set protocols bgp 65536 neighbor 203.0.113.5 remote-as '101'
+set protocols bgp 65536 neighbor 203.0.113.5 update-source '192.0.2.25'
+set protocols bgp 65536 neighbor 5001::64 remote-as '103'
+set protocols bgp 65536 parameters bestpath as-path 'confed'
+set protocols bgp 65536 parameters bestpath 'compare-routerid'
+set protocols bgp 65536 parameters confederation identifier '66'
+set protocols bgp 65536 parameters confederation peers '20'
+set protocols bgp 65536 parameters confederation peers '55'
+set protocols bgp 65536 parameters default local-pref 100
+set protocols bgp 65536 parameters router-id '192.1.2.9'
+set protocols bgp 65536 timers keepalive '35'
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/_populate.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/_populate.yaml
index 0f281c94..17fa22b1 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/_populate.yaml
@@ -1,39 +1,60 @@
---
- ansible.builtin.include_tasks: _remove_config.yaml
-- name: Setup
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
+- name: Setup 1.3-
vyos.vyos.vyos_config:
lines:
- set policy access-list 20 description 'acl20'
- set policy access-list 40 description 'acl40'
- set policy route-map map01 description 'map01'
- - set protocols bgp 65536 aggregate-address 192.0.2.0/24 'summary-only'
- - set protocols bgp 65536 aggregate-address 203.0.113.0/24 'as-set'
- - set protocols bgp 65536 maximum-paths ebgp '20'
- - set protocols bgp 65536 maximum-paths ibgp '55'
- set protocols bgp 65536 neighbor 192.0.2.25 'disable-connected-check'
- set protocols bgp 65536 neighbor 192.0.2.25 timers holdtime '30'
- set protocols bgp 65536 neighbor 192.0.2.25 timers keepalive '10'
- - set protocols bgp 65536 neighbor 203.0.113.5 attribute-unchanged 'as-path'
- - set protocols bgp 65536 neighbor 203.0.113.5 attribute-unchanged 'med'
- - set protocols bgp 65536 neighbor 203.0.113.5 attribute-unchanged 'next-hop'
+ - set protocols bgp 65536 neighbor 192.0.2.25 remote-as '102'
- set protocols bgp 65536 neighbor 203.0.113.5 ebgp-multihop '2'
- set protocols bgp 65536 neighbor 203.0.113.5 remote-as '101'
- set protocols bgp 65536 neighbor 203.0.113.5 update-source '192.0.2.25'
- - set protocols bgp 65536 neighbor 5001::64 distribute-list export '20'
- - set protocols bgp 65536 neighbor 5001::64 distribute-list import '40'
- - set protocols bgp 65536 neighbor 5001::64 maximum-prefix '34'
- - set protocols bgp 65536 network 192.1.13.0/24 'backdoor'
+ - set protocols bgp 65536 neighbor 5001::64 remote-as '103'
- set protocols bgp 65536 parameters bestpath as-path 'confed'
- set protocols bgp 65536 parameters bestpath 'compare-routerid'
- set protocols bgp 65536 parameters confederation identifier '66'
- set protocols bgp 65536 parameters confederation peers '20'
- set protocols bgp 65536 parameters confederation peers '55'
- - set protocols bgp 65536 parameters default 'no-ipv4-unicast'
+ - set protocols bgp 65536 parameters default local-pref 100
- set protocols bgp 65536 parameters router-id '192.1.2.9'
- - set protocols bgp 65536 redistribute connected route-map 'map01'
- - set protocols bgp 65536 redistribute kernel metric '45'
- set protocols bgp 65536 timers keepalive '35'
ignore_errors: true
vars:
ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: Setup 1.4+
+ vyos.vyos.vyos_config:
+ lines:
+ - set policy access-list 20 description 'acl20'
+ - set policy access-list 40 description 'acl40'
+ - set policy route-map map01 description 'map01'
+ - set protocols bgp system-as 65536
+ - set protocols bgp neighbor 192.0.2.25 'disable-connected-check'
+ - set protocols bgp neighbor 192.0.2.25 timers holdtime '30'
+ - set protocols bgp neighbor 192.0.2.25 timers keepalive '10'
+ - set protocols bgp neighbor 192.0.2.25 remote-as '102'
+ - set protocols bgp neighbor 203.0.113.5 ebgp-multihop '2'
+ - set protocols bgp neighbor 203.0.113.5 remote-as '101'
+ - set protocols bgp neighbor 203.0.113.5 update-source '192.0.2.25'
+ - set protocols bgp neighbor 5001::64 remote-as '103'
+ - set protocols bgp parameters bestpath as-path 'confed'
+ - set protocols bgp parameters bestpath 'compare-routerid'
+ - set protocols bgp parameters confederation identifier '66'
+ - set protocols bgp parameters confederation peers '20'
+ - set protocols bgp parameters confederation peers '55'
+ - set protocols bgp parameters default local-pref 100
+ - set protocols bgp parameters router-id '192.1.2.9'
+ - set protocols bgp timers keepalive '35'
+ ignore_errors: true
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/_populate_af.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/_populate_af.yaml
index 59f3d925..0a06aeb3 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/_populate_af.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/_populate_af.yaml
@@ -1,12 +1,29 @@
---
-- name: setup
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
+- name: setup 1.3- AF
vyos.vyos.vyos_config:
lines:
- set protocols bgp 65536 neighbor 5001::64 address-family 'ipv6-unicast'
- set protocols bgp 65536 neighbor 5001::64 ebgp-multihop '2'
- - set protocols bgp 65536 neighbor 5001::64 maximum-prefix '34'
- - set protocols bgp 65536 neighbor 5001::64 remote-as '65535'
+ - set protocols bgp 65536 neighbor 5001::64 remote-as '103'
- set protocols bgp 65536 neighbor 5001::64 update-source '2001:db8::1'
+
ignore_errors: true
vars:
ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: setup 1.4+ AF
+ vyos.vyos.vyos_config:
+ lines:
+ - set protocols bgp system-as 65536
+ - set protocols bgp neighbor 5001::64 address-family 'ipv6-unicast'
+ - set protocols bgp neighbor 5001::64 ebgp-multihop '2'
+ - set protocols bgp neighbor 5001::64 remote-as '103'
+ - set protocols bgp neighbor 5001::64 update-source '2001:db8::1'
+ ignore_errors: true
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/_remove_config.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/_remove_config.yaml
index 07d4aa47..9ccdb093 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/_remove_config.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/_remove_config.yaml
@@ -2,7 +2,7 @@
- name: Remove pre-existing bgp processes
vyos.vyos.vyos_config:
lines:
- - delete protocols bgp 65536
+ - delete protocols bgp
- delete policy access-list 20
- delete policy access-list 40
- delete policy route-map map01
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/deleted.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/deleted.yaml
index 5920c8f0..e652e127 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/deleted.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/deleted.yaml
@@ -17,7 +17,7 @@
- assert:
that:
- - result.commands|length == 9
+ - result.commands|length == deleted.commands | length
- result.changed == true
- result.commands|symmetric_difference(deleted.commands) == []
- result.after == ansible_facts['network_resources']['bgp_global']
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/deleted_af.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/deleted_af.yaml
index 88e6be09..d67d312b 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/deleted_af.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/deleted_af.yaml
@@ -18,6 +18,5 @@
- assert:
that:
- result.msg == 'Use the _bgp_address_family module to delete the address_family under neighbor 5001::64, before replacing/deleting the neighbor.'
-
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/merged.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/merged.yaml
index 388bbccd..e11cd1ef 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/merged.yaml
@@ -12,24 +12,6 @@
vyos.vyos.vyos_bgp_global: &id001
config:
as_number: "65536"
- aggregate_address:
- - prefix: 203.0.113.0/24
- as_set: true
- - prefix: 192.0.2.0/24
- summary_only: true
- network:
- - address: 192.1.13.0/24
- backdoor: true
- redistribute:
- - protocol: kernel
- metric: 45
- - protocol: connected
- route_map: map01
- maximum_paths:
- - path: ebgp
- count: 20
- - path: ibgp
- count: 55
timers:
keepalive: 35
bgp_params:
@@ -37,7 +19,7 @@
as_path: confed
compare_routerid: true
default:
- no_ipv4_unicast: true
+ local_pref: 100
router_id: 192.1.2.9
state: merged
@@ -46,7 +28,7 @@
- assert:
that:
- - result.commands|length == 12
+ - result.commands|length == merged.commands | length
- result.changed == true
- result.commands|symmetric_difference(merged.commands) == []
- result.after == ansible_facts['network_resources']['bgp_global']
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/parsed.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/parsed.yaml
index eca85ce0..293c204c 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/parsed.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/parsed.yaml
@@ -2,13 +2,33 @@
- debug:
msg: START vyos_bgp_global parsed integration tests on connection={{ ansible_connection }}
-- name: Provide the running configuration for parsing (config to be parsed)
- register: result
- vyos.vyos.vyos_bgp_global:
- running_config: "{{ lookup('file', '_parsed_config.cfg') }}"
- state: parsed
+- name: ensure facts
+ include_tasks: _get_version.yaml
+- name: version 1.3
+ block:
+ - name: Provide the running configuration for parsing (config to be parsed)
+ register: result
+ vyos.vyos.vyos_bgp_global:
+ running_config: "{{ lookup('file', '_parsed_config_1_3.cfg') }}"
+ state: parsed
+ - name: set result
+ set_fact:
+ parsed_result: "{{ result }}"
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+- name: version 1.4+
+ block:
+ - name: Provide the running configuration for parsing (config to be parsed)
+ register: result
+ vyos.vyos.vyos_bgp_global:
+ running_config: "{{ lookup('file', '_parsed_config.cfg') }}"
+ state: parsed
+ - name: set result
+ set_fact:
+ parsed_result: "{{ result }}"
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
- assert:
that:
- - result.changed == false
- - result.parsed == populate.global
+ - parsed_result.changed == false
+ - parsed_result.parsed == populate.global
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/purged.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/purged.yaml
index 71748f5c..dfc2e435 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/purged.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/purged.yaml
@@ -21,6 +21,15 @@
- result.changed == true
- "'delete protocols bgp 65536' in result.commands"
- ansible_facts.network_resources.bgp_global == []
+ when: vyos_version is version('1.4.0', '<', version_type='semver')
+
+ - assert:
+ that:
+ - result.commands|length == 1
+ - result.changed == true
+ - "'delete protocols bgp' in result.commands"
+ - ansible_facts.network_resources.bgp_global == []
+ when: vyos_version is version('1.4.0', '>=', version_type='semver')
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/rendered.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/rendered.yaml
index f37ef882..39fc12a8 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/rendered.yaml
@@ -8,24 +8,6 @@
vyos.vyos.vyos_bgp_global:
config:
as_number: "65536"
- aggregate_address:
- - prefix: 203.0.113.0/24
- as_set: true
- - prefix: 192.0.2.0/24
- summary_only: true
- network:
- - address: 192.1.13.0/24
- backdoor: true
- redistribute:
- - protocol: kernel
- metric: 45
- - protocol: connected
- route_map: map01
- maximum_paths:
- - path: ebgp
- count: 20
- - path: ibgp
- count: 55
timers:
keepalive: 35
bgp_params:
@@ -33,7 +15,7 @@
as_path: confed
compare_routerid: true
default:
- no_ipv4_unicast: true
+ local_pref: 100
router_id: 192.1.2.9
state: rendered
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/replaced.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/replaced.yaml
index ae2c5c75..22323c3d 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/replaced.yaml
@@ -10,12 +10,6 @@
vyos.vyos.vyos_bgp_global: &id001
config:
as_number: "65536"
- network:
- - address: 203.0.113.0/24
- route_map: map01
- redistribute:
- - protocol: static
- route_map: map01
bgp_params:
always_compare_med: true
dampening:
@@ -26,8 +20,6 @@
bestpath:
as_path: confed
compare_routerid: true
- default:
- no_ipv4_unicast: true
neighbor:
- address: 192.0.2.43
disable_connected_check: true
@@ -37,9 +29,11 @@
timers:
holdtime: 30
keepalive: 10
+ remote_as: 102
- address: 203.0.113.0
capability:
- orf: receive
+ dynamic: true
+ remote_as: 102
state: replaced
- vyos.vyos.vyos_facts:
@@ -47,7 +41,7 @@
- assert:
that:
- - result.commands|length == 24
+ - result.commands|length == replaced.commands|length
- result.changed == true
- result.commands|symmetric_difference(replaced.commands) == []
- result.after == ansible_facts['network_resources']['bgp_global']
diff --git a/tests/integration/targets/vyos_bgp_global/tests/cli/replaced_af.yaml b/tests/integration/targets/vyos_bgp_global/tests/cli/replaced_af.yaml
index c9b23193..3054ea1f 100644
--- a/tests/integration/targets/vyos_bgp_global/tests/cli/replaced_af.yaml
+++ b/tests/integration/targets/vyos_bgp_global/tests/cli/replaced_af.yaml
@@ -13,12 +13,6 @@
vyos.vyos.vyos_bgp_global:
config:
as_number: "65536"
- network:
- - address: 203.0.113.0/24
- route_map: map01
- redistribute:
- - protocol: static
- route_map: map01
bgp_params:
always_compare_med: true
dampening:
@@ -29,8 +23,6 @@
bestpath:
as_path: confed
compare_routerid: true
- default:
- no_ipv4_unicast: true
neighbor:
- address: 192.0.2.43
disable_connected_check: true
@@ -40,9 +32,11 @@
timers:
holdtime: 30
keepalive: 10
+ remote_as: 102
- address: 203.0.113.0
capability:
- orf: receive
+ dynamic: true
+ remote_as: 102
state: replaced
- assert:
diff --git a/tests/integration/targets/vyos_bgp_global/vars/main.yaml b/tests/integration/targets/vyos_bgp_global/vars/main.yaml
index e195c2d7..ed97d539 100644
--- a/tests/integration/targets/vyos_bgp_global/vars/main.yaml
+++ b/tests/integration/targets/vyos_bgp_global/vars/main.yaml
@@ -1,150 +1 @@
---
-merged:
- commands:
- - set protocols bgp 65536 redistribute kernel metric 45
- - set protocols bgp 65536 redistribute connected route-map map01
- - set protocols bgp 65536 network 192.1.13.0/24 backdoor
- - set protocols bgp 65536 aggregate-address 203.0.113.0/24 as-set
- - set protocols bgp 65536 aggregate-address 192.0.2.0/24 summary-only
- - set protocols bgp 65536 parameters bestpath as-path confed
- - set protocols bgp 65536 parameters bestpath compare-routerid
- - set protocols bgp 65536 parameters default no-ipv4-unicast
- - set protocols bgp 65536 parameters router-id 192.1.2.9
- - set protocols bgp 65536 maximum-paths ebgp 20
- - set protocols bgp 65536 maximum-paths ibgp 55
- - set protocols bgp 65536 timers keepalive 35
- after:
- aggregate_address:
- - prefix: 192.0.2.0/24
- summary_only: true
- - prefix: 203.0.113.0/24
- as_set: true
- as_number: 65536
- bgp_params:
- bestpath:
- as_path: confed
- compare_routerid: true
- default:
- no_ipv4_unicast: true
- router_id: 192.1.2.9
- maximum_paths:
- - count: 20
- path: ebgp
- - count: 55
- path: ibgp
- network:
- - address: 192.1.13.0/24
- backdoor: true
- redistribute:
- - protocol: connected
- route_map: map01
- - metric: 45
- protocol: kernel
- timers:
- keepalive: 35
-
-replaced:
- commands:
- - delete protocols bgp 65536 timers
- - delete protocols bgp 65536 maximum-paths
- - delete protocols bgp 65536 parameters router-id 192.1.2.9
- - delete protocols bgp 65536 parameters confederation
- - delete protocols bgp 65536 aggregate-address
- - delete protocols bgp 65536 network 192.1.13.0/24
- - delete protocols bgp 65536 redistribute kernel
- - delete protocols bgp 65536 redistribute connected
- - delete protocols bgp 65536 neighbor 5001::64
- - delete protocols bgp 65536 neighbor 203.0.113.5
- - delete protocols bgp 65536 neighbor 192.0.2.25
- - set protocols bgp 65536 neighbor 192.0.2.43 disable-connected-check
- - set protocols bgp 65536 neighbor 192.0.2.43 advertisement-interval 72
- - set protocols bgp 65536 neighbor 192.0.2.43 capability dynamic
- - set protocols bgp 65536 neighbor 192.0.2.43 timers holdtime 30
- - set protocols bgp 65536 neighbor 192.0.2.43 timers keepalive 10
- - set protocols bgp 65536 neighbor 203.0.113.0 capability orf prefix-list receive
- - set protocols bgp 65536 redistribute static route-map map01
- - set protocols bgp 65536 network 203.0.113.0/24 route-map map01
- - set protocols bgp 65536 parameters always-compare-med
- - set protocols bgp 65536 parameters dampening half-life 33
- - set protocols bgp 65536 parameters dampening max-suppress-time 20
- - set protocols bgp 65536 parameters dampening re-use 60
- - set protocols bgp 65536 parameters dampening start-suppress-time 5
-
-deleted:
- commands:
- - delete protocols bgp 65536 timers
- - delete protocols bgp 65536 maximum-paths
- - delete protocols bgp 65536 parameters
- - delete protocols bgp 65536 aggregate-address
- - delete protocols bgp 65536 network
- - delete protocols bgp 65536 redistribute
- - delete protocols bgp 65536 neighbor 5001::64
- - delete protocols bgp 65536 neighbor 203.0.113.5
- - delete protocols bgp 65536 neighbor 192.0.2.25
-
-rendered:
- commands:
- - set interfaces ethernet eth1 firewall in name 'INBOUND'
- - set interfaces ethernet eth1 firewall out name 'OUTBOUND'
- - set interfaces ethernet eth1 firewall local name 'LOCAL'
- - set interfaces ethernet eth1 firewall local ipv6-name 'V6-LOCAL'
- - set interfaces ethernet eth2 firewall in name 'INBOUND'
- - set interfaces ethernet eth2 firewall out name 'OUTBOUND'
- - set interfaces ethernet eth2 firewall local name 'LOCAL'
- - set interfaces ethernet eth2 firewall local ipv6-name 'V6-LOCAL'
-
-populate:
- global:
- aggregate_address:
- - prefix: 192.0.2.0/24
- summary_only: true
- - prefix: 203.0.113.0/24
- as_set: true
- as_number: 65536
- bgp_params:
- bestpath:
- as_path: confed
- compare_routerid: true
- confederation:
- - identifier: 66
- - peers: 20
- - peers: 55
- default:
- no_ipv4_unicast: true
- router_id: 192.1.2.9
- maximum_paths:
- - count: 20
- path: ebgp
- - count: 55
- path: ibgp
- neighbor:
- - address: 192.0.2.25
- disable_connected_check: true
- timers:
- holdtime: 30
- keepalive: 10
- - address: 203.0.113.5
- attribute_unchanged:
- as_path: true
- med: true
- next_hop: true
- ebgp_multihop: 2
- remote_as: 101
- update_source: 192.0.2.25
- - address: 5001::64
- distribute_list:
- - acl: 20
- action: export
- - acl: 40
- action: import
- maximum_prefix: 34
- network:
- - address: 192.1.13.0/24
- backdoor: true
- redistribute:
- - protocol: connected
- route_map: map01
- - metric: 45
- protocol: kernel
- timers:
- keepalive: 35
diff --git a/tests/integration/targets/vyos_bgp_global/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_bgp_global/vars/pre-v1_4.yaml
new file mode 100644
index 00000000..efac1b98
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_global/vars/pre-v1_4.yaml
@@ -0,0 +1,91 @@
+---
+merged:
+ commands:
+ - set protocols bgp 65536 parameters bestpath as-path confed
+ - set protocols bgp 65536 parameters bestpath compare-routerid
+ - set protocols bgp 65536 parameters default local-pref 100
+ - set protocols bgp 65536 parameters router-id 192.1.2.9
+ - set protocols bgp 65536 timers keepalive 35
+ after:
+ as_number: 65536
+ bgp_params:
+ bestpath:
+ as_path: confed
+ compare_routerid: true
+ default:
+ local_pref: 100
+ router_id: 192.1.2.9
+ timers:
+ keepalive: 35
+
+replaced:
+ commands:
+ - delete protocols bgp 65536 timers
+ - delete protocols bgp 65536 parameters router-id 192.1.2.9
+ - delete protocols bgp 65536 parameters default
+ - delete protocols bgp 65536 parameters confederation
+ - delete protocols bgp 65536 neighbor 5001::64
+ - delete protocols bgp 65536 neighbor 203.0.113.5
+ - delete protocols bgp 65536 neighbor 192.0.2.25
+ - set protocols bgp 65536 neighbor 192.0.2.43 disable-connected-check
+ - set protocols bgp 65536 neighbor 192.0.2.43 advertisement-interval 72
+ - set protocols bgp 65536 neighbor 192.0.2.43 capability dynamic
+ - set protocols bgp 65536 neighbor 192.0.2.43 timers holdtime 30
+ - set protocols bgp 65536 neighbor 192.0.2.43 timers keepalive 10
+ - set protocols bgp 65536 neighbor 192.0.2.43 remote-as 102
+ - set protocols bgp 65536 neighbor 203.0.113.0 capability dynamic
+ - set protocols bgp 65536 neighbor 203.0.113.0 remote-as 102
+ - set protocols bgp 65536 parameters always-compare-med
+ - set protocols bgp 65536 parameters dampening half-life 33
+ - set protocols bgp 65536 parameters dampening max-suppress-time 20
+ - set protocols bgp 65536 parameters dampening re-use 60
+ - set protocols bgp 65536 parameters dampening start-suppress-time 5
+
+deleted:
+ commands:
+ - delete protocols bgp 65536 timers
+ - delete protocols bgp 65536 parameters
+ - delete protocols bgp 65536 neighbor 5001::64
+ - delete protocols bgp 65536 neighbor 203.0.113.5
+ - delete protocols bgp 65536 neighbor 192.0.2.25
+
+rendered:
+ commands:
+ - set interfaces ethernet eth1 firewall in name 'INBOUND'
+ - set interfaces ethernet eth1 firewall out name 'OUTBOUND'
+ - set interfaces ethernet eth1 firewall local name 'LOCAL'
+ - set interfaces ethernet eth1 firewall local ipv6-name 'V6-LOCAL'
+ - set interfaces ethernet eth2 firewall in name 'INBOUND'
+ - set interfaces ethernet eth2 firewall out name 'OUTBOUND'
+ - set interfaces ethernet eth2 firewall local name 'LOCAL'
+ - set interfaces ethernet eth2 firewall local ipv6-name 'V6-LOCAL'
+
+populate:
+ global:
+ as_number: 65536
+ bgp_params:
+ bestpath:
+ as_path: confed
+ compare_routerid: true
+ confederation:
+ - identifier: 66
+ - peers: 20
+ - peers: 55
+ default:
+ local_pref: 100
+ router_id: 192.1.2.9
+ neighbor:
+ - address: 192.0.2.25
+ disable_connected_check: true
+ timers:
+ holdtime: 30
+ keepalive: 10
+ remote_as: 102
+ - address: 203.0.113.5
+ ebgp_multihop: 2
+ remote_as: 101
+ update_source: 192.0.2.25
+ - address: 5001::64
+ remote_as: 103
+ timers:
+ keepalive: 35
diff --git a/tests/integration/targets/vyos_bgp_global/vars/v1_4.yaml b/tests/integration/targets/vyos_bgp_global/vars/v1_4.yaml
new file mode 100644
index 00000000..1dd462b1
--- /dev/null
+++ b/tests/integration/targets/vyos_bgp_global/vars/v1_4.yaml
@@ -0,0 +1,90 @@
+---
+merged:
+ commands:
+ - set protocols bgp system-as 65536
+ - set protocols bgp parameters bestpath as-path confed
+ - set protocols bgp parameters bestpath compare-routerid
+ - set protocols bgp parameters default local-pref 100
+ - set protocols bgp parameters router-id 192.1.2.9
+ - set protocols bgp timers keepalive 35
+ after:
+ as_number: 65536
+ bgp_params:
+ bestpath:
+ as_path: confed
+ compare_routerid: true
+ default:
+ local_pref: 100
+ router_id: 192.1.2.9
+ timers:
+ keepalive: 35
+
+replaced:
+ commands:
+ - delete protocols bgp timers
+ - delete protocols bgp parameters router-id 192.1.2.9
+ - delete protocols bgp parameters default
+ - delete protocols bgp parameters confederation
+ - delete protocols bgp neighbor 5001::64
+ - delete protocols bgp neighbor 203.0.113.5
+ - delete protocols bgp neighbor 192.0.2.25
+ - set protocols bgp neighbor 192.0.2.43 disable-connected-check
+ - set protocols bgp neighbor 192.0.2.43 advertisement-interval 72
+ - set protocols bgp neighbor 192.0.2.43 capability dynamic
+ - set protocols bgp neighbor 192.0.2.43 timers holdtime 30
+ - set protocols bgp neighbor 192.0.2.43 timers keepalive 10
+ - set protocols bgp neighbor 192.0.2.43 remote-as 102
+ - set protocols bgp neighbor 203.0.113.0 capability dynamic
+ - set protocols bgp neighbor 203.0.113.0 remote-as 102
+ - set protocols bgp parameters always-compare-med
+ - set protocols bgp parameters dampening half-life 33
+ - set protocols bgp parameters dampening max-suppress-time 20
+ - set protocols bgp parameters dampening re-use 60
+ - set protocols bgp parameters dampening start-suppress-time 5
+
+deleted:
+ commands:
+ - delete protocols bgp timers
+ - delete protocols bgp parameters
+ - delete protocols bgp neighbor 5001::64
+ - delete protocols bgp neighbor 203.0.113.5
+ - delete protocols bgp neighbor 192.0.2.25
+
+rendered:
+ commands:
+ - set interfaces ethernet eth1 firewall in name 'INBOUND'
+ - set interfaces ethernet eth1 firewall out name 'OUTBOUND'
+ - set interfaces ethernet eth1 firewall local name 'LOCAL'
+ - set interfaces ethernet eth1 firewall local ipv6-name 'V6-LOCAL'
+ - set interfaces ethernet eth2 firewall in name 'INBOUND'
+ - set interfaces ethernet eth2 firewall out name 'OUTBOUND'
+ - set interfaces ethernet eth2 firewall local name 'LOCAL'
+ - set interfaces ethernet eth2 firewall local ipv6-name 'V6-LOCAL'
+
+populate:
+ global:
+ as_number: 65536
+ bgp_params:
+ bestpath:
+ as_path: confed
+ compare_routerid: true
+ confederation:
+ - identifier: 66
+ - peers: 20
+ - peers: 55
+ router_id: 192.1.2.9
+ neighbor:
+ - address: 192.0.2.25
+ disable_connected_check: true
+ timers:
+ holdtime: 30
+ keepalive: 10
+ remote_as: 102
+ - address: 203.0.113.5
+ ebgp_multihop: 2
+ remote_as: 101
+ update_source: 192.0.2.25
+ - address: 5001::64
+ remote_as: 103
+ timers:
+ keepalive: 35
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_address_family_config_14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_address_family_config_14.cfg
new file mode 100644
index 00000000..20b8ee28
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_address_family_config_14.cfg
@@ -0,0 +1,8 @@
+set protocols bgp system-as 65536
+set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-set
+set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 route-map 'map01'
+set protocols bgp address-family ipv4-unicast network 192.2.13.0/24 backdoor
+set protocols bgp address-family ipv6-unicast redistribute ripng metric '20'
+set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast route-map export 'map01'
+set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration inbound
+set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config.cfg
new file mode 100644
index 00000000..bc2704aa
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config.cfg
@@ -0,0 +1,5 @@
+set protocols bgp 65536 address-family ipv4-unicast network 192.1.13.0/24
+set protocols bgp 65536 address-family ipv4-unicast network 192.2.13.0/24 backdoor
+set protocols bgp 65536 address-family ipv6-unicast redistribute ripng metric '20'
+set protocols bgp 65536 address-family ipv4-unicast redistribute rip metric '15'
+set protocols bgp 65536 address-family ipv4-unicast redistribute ospf \ No newline at end of file
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config_14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config_14.cfg
new file mode 100644
index 00000000..b09da39d
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_af_ops_config_14.cfg
@@ -0,0 +1,6 @@
+set protocols bgp system-as '65536'
+set protocols bgp address-family ipv4-unicast network 192.1.13.0/24
+set protocols bgp address-family ipv4-unicast network 192.2.13.0/24 backdoor
+set protocols bgp address-family ipv6-unicast redistribute ripng metric '20'
+set protocols bgp address-family ipv4-unicast redistribute rip metric '15'
+set protocols bgp address-family ipv4-unicast redistribute ospf \ No newline at end of file
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config.cfg
index 7d990d6b..7f6b1698 100644
--- a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config.cfg
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config.cfg
@@ -1,5 +1,4 @@
set protocols bgp 65536 neighbor 5001::64 address-family 'ipv6-unicast'
set protocols bgp 65536 neighbor 5001::64 ebgp-multihop '2'
-set protocols bgp 65536 neighbor 5001::64 maximum-prefix '34'
set protocols bgp 65536 neighbor 5001::64 remote-as '65535'
set protocols bgp 65536 neighbor 5001::64 update-source '2001:db8::1'
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config_14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config_14.cfg
new file mode 100644
index 00000000..385ed1ec
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_af_config_14.cfg
@@ -0,0 +1,5 @@
+set protocols bgp system-as 65536
+set protocols bgp neighbor 5001::64 address-family 'ipv6-unicast'
+set protocols bgp neighbor 5001::64 ebgp-multihop '2'
+set protocols bgp neighbor 5001::64 remote-as '65535'
+set protocols bgp neighbor 5001::64 update-source '2001:db8::1'
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config.cfg
index 00c615fd..0142ccef 100644
--- a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config.cfg
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config.cfg
@@ -1,23 +1,13 @@
set protocols bgp 65536 neighbor 10.0.0.4 'disable-connected-check'
set protocols bgp 65536 neighbor 10.0.0.4 timers holdtime '30'
set protocols bgp 65536 neighbor 10.0.0.4 timers keepalive '10'
-set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged 'as-path'
-set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged 'med'
set protocols bgp 65536 neighbor 192.168.0.2 ebgp-multihop '2'
set protocols bgp 65536 neighbor 192.168.0.2 remote-as '65535'
-set protocols bgp 65536 neighbor 192.168.0.2 soft-reconfiguration 'inbound'
set protocols bgp 65536 neighbor 192.168.0.2 update-source '192.168.0.1'
set protocols bgp 65536 neighbor 2001:db8::2 ebgp-multihop '2'
-set protocols bgp 65536 neighbor 2001:db8::2 maximum-prefix '34'
set protocols bgp 65536 neighbor 2001:db8::2 remote-as '65535'
set protocols bgp 65536 neighbor 2001:db8::2 update-source '2001:db8::1'
-set protocols bgp 65536 network 172.16.42.32/27 'backdoor'
-set protocols bgp 65536 network 172.16.42.251/32 route-map 'map01'
set protocols bgp 65536 parameters bestpath as-path 'confed'
set protocols bgp 65536 parameters bestpath 'compare-routerid'
set protocols bgp 65536 parameters default 'no-ipv4-unicast'
set protocols bgp 65536 parameters router-id '10.1.1.1'
-set protocols bgp 65536 neighbor 10.0.0.4 capability orf prefix-list 'receive'
-set protocols bgp 65536 redistribute kernel route-map 'map01'
-set protocols bgp 65536 redistribute static metric '20'
-set protocols bgp 65536 redistribute static route-map 'map01'
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config_14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config_14.cfg
new file mode 100644
index 00000000..f6674ecd
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_bgp_global_config_14.cfg
@@ -0,0 +1,14 @@
+set protocols bgp system-as 65536
+set protocols bgp neighbor 10.0.0.4 'disable-connected-check'
+set protocols bgp neighbor 10.0.0.4 timers holdtime '30'
+set protocols bgp neighbor 10.0.0.4 timers keepalive '10'
+set protocols bgp neighbor 192.168.0.2 ebgp-multihop '2'
+set protocols bgp neighbor 192.168.0.2 remote-as '65535'
+set protocols bgp neighbor 192.168.0.2 update-source '192.168.0.1'
+set protocols bgp neighbor 2001:db8::2 ebgp-multihop '2'
+set protocols bgp neighbor 2001:db8::2 remote-as '65535'
+set protocols bgp neighbor 2001:db8::2 update-source '2001:db8::1'
+set protocols bgp parameters bestpath as-path 'confed'
+set protocols bgp parameters bestpath 'compare-routerid'
+set protocols bgp parameters default 'no-ipv4-unicast'
+set protocols bgp parameters router-id '10.1.1.1'
diff --git a/tests/unit/modules/network/vyos/test_vyos_bgp_address_family.py b/tests/unit/modules/network/vyos/test_vyos_bgp_address_family.py
index 87b3ad9d..7ea9b2cd 100644
--- a/tests/unit/modules/network/vyos/test_vyos_bgp_address_family.py
+++ b/tests/unit/modules/network/vyos/test_vyos_bgp_address_family.py
@@ -29,11 +29,11 @@ from ansible_collections.vyos.vyos.tests.unit.modules.utils import set_module_ar
from .vyos_module import TestVyosModule, load_fixture
-class TestVyosBgpafModule(TestVyosModule):
+class TestVyosBgpafModule13(TestVyosModule):
module = vyos_bgp_address_family
def setUp(self):
- super(TestVyosBgpafModule, self).setUp()
+ super(TestVyosBgpafModule13, self).setUp()
self.mock_get_resource_connection_config = patch(
"ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection",
)
@@ -44,11 +44,25 @@ class TestVyosBgpafModule(TestVyosModule):
+ "bgp_address_family.bgp_address_family.Bgp_address_familyFacts.get_device_data",
)
self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.test_version = "1.2"
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = self.test_version
+ self.mock_facts_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.get_facts_os_version = self.mock_facts_get_os_version.start()
+ self.get_facts_os_version.return_value = self.test_version
+ self.maxDiff = None
def tearDown(self):
- super(TestVyosBgpafModule, self).tearDown()
+ super(TestVyosBgpafModule13, self).tearDown()
self.mock_get_resource_connection_config.stop()
self.mock_execute_show_command.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
def load_fixtures(self, commands=None, filename=None):
if filename is None:
@@ -600,3 +614,177 @@ class TestVyosBgpafModule(TestVyosModule):
],
}
self.assertEqual(sorted(gather_list), sorted(result["gathered"]))
+
+
+class TestVyosBgpafOpsModule13(TestVyosModule):
+ module = vyos_bgp_address_family
+
+ def setUp(self):
+ super(TestVyosBgpafOpsModule13, self).setUp()
+ self.mock_get_resource_connection_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection",
+ )
+ self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts."
+ + "bgp_address_family.bgp_address_family.Bgp_address_familyFacts.get_device_data",
+ )
+ self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.test_version = "1.2"
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = self.test_version
+ self.mock_facts_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.get_facts_os_version = self.mock_facts_get_os_version.start()
+ self.get_facts_os_version.return_value = self.test_version
+ self.maxDiff = None
+
+ def tearDown(self):
+ super(TestVyosBgpafOpsModule13, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_execute_show_command.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_bgp_af_ops_config.cfg"
+
+ def load_from_file(*args, **kwargs):
+ output = load_fixture(filename)
+ return output
+
+ self.execute_show_command.side_effect = load_from_file
+
+ def test_vyos_bgp_address_family_merged(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.3.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ospfv3", metric=20)],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "set protocols bgp 65536 address-family ipv4-unicast network 192.3.13.0/24 backdoor",
+ "set protocols bgp 65536 address-family ipv6-unicast redistribute ospfv3 metric 20",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_replaced(self):
+ set_module_args(
+ dict(
+ state="replaced",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.1.13.0/24", backdoor=True),
+ ],
+ redistribute=[
+ dict(protocol="ospf", metric=25),
+ ]
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[
+ dict(protocol="ospfv3", metric=20),
+ dict(protocol="ripng")
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp 65536 address-family ipv6-unicast redistribute ripng metric",
+ "delete protocols bgp 65536 address-family ipv4-unicast network 192.2.13.0/24",
+ "delete protocols bgp 65536 address-family ipv4-unicast redistribute rip",
+ "set protocols bgp 65536 address-family ipv4-unicast redistribute ospf metric 25",
+ "set protocols bgp 65536 address-family ipv4-unicast network 192.1.13.0/24 backdoor",
+ "set protocols bgp 65536 address-family ipv6-unicast redistribute ospfv3 metric 20",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_overridden(self):
+ set_module_args(
+ dict(
+ state="overridden",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.1.13.0/24", backdoor=True),
+ ],
+ redistribute=[
+ dict(protocol="ospf", metric=25),
+ ]
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[
+ dict(protocol="ospfv3", metric=20),
+ dict(protocol="ripng")
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp 65536 address-family ipv6-unicast redistribute ripng metric",
+ "delete protocols bgp 65536 address-family ipv4-unicast network 192.2.13.0/24",
+ "delete protocols bgp 65536 address-family ipv4-unicast redistribute rip",
+ "set protocols bgp 65536 address-family ipv4-unicast redistribute ospf metric 25",
+ "set protocols bgp 65536 address-family ipv4-unicast network 192.1.13.0/24 backdoor",
+ "set protocols bgp 65536 address-family ipv6-unicast redistribute ospfv3 metric 20",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_deleted(self):
+ set_module_args(
+ dict(
+ state="deleted",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.2.13.0/24"),
+ ]
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng")],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp 65536 address-family ipv4-unicast",
+ "delete protocols bgp 65536 address-family ipv6-unicast",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
diff --git a/tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py b/tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py
new file mode 100644
index 00000000..9e615ff0
--- /dev/null
+++ b/tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py
@@ -0,0 +1,1000 @@
+# (c) 2016 Red Hat Inc.
+#
+# This file is part of Ansible
+#
+# Ansible is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ansible is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
+
+# Make coding more python3-ish
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+from unittest.mock import patch
+
+from ansible_collections.vyos.vyos.plugins.modules import vyos_bgp_address_family
+from ansible_collections.vyos.vyos.tests.unit.modules.utils import set_module_args
+
+from .vyos_module import TestVyosModule, load_fixture
+
+
+class TestVyosBgpafModule14(TestVyosModule):
+ module = vyos_bgp_address_family
+
+ def setUp(self):
+ super(TestVyosBgpafModule14, self).setUp()
+ self.mock_get_resource_connection_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection",
+ )
+ self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts."
+ + "bgp_address_family.bgp_address_family.Bgp_address_familyFacts.get_device_data",
+ )
+ self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.test_version = "1.4"
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = self.test_version
+ self.mock_facts_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.get_facts_os_version = self.mock_facts_get_os_version.start()
+ self.get_facts_os_version.return_value = self.test_version
+ self.maxDiff = None
+
+ def tearDown(self):
+ super(TestVyosBgpafModule14, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_execute_show_command.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_bgp_address_family_config_14.cfg"
+
+ def load_from_file(*args, **kwargs):
+ output = load_fixture(filename)
+ return output
+
+ self.execute_show_command.side_effect = load_from_file
+
+ def test_vyos_bgp_address_family_merged_idempotent(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_bgp_address_family_merged(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", summary_only=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ospfv3", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.10.21.25",
+ address_family=[
+ dict(
+ afi="ipv6",
+ distribute_list=[dict(action="export", acl=10)],
+ route_server_client=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv4",
+ filter_list=[
+ dict(action="export", path_list="list01"),
+ ],
+ capability=dict(orf="send"),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-setipv4-unicast aggregate-address 192.0.2.0/24 summary-only",
+ "set protocols bgp address-family ipv6-unicast redistribute ospfv3 metric 20",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv4-unicast filter-list export list01",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv4-unicast capability prefix-list send",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv6-unicast distribute-list export 10",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv6-unicast route-server-client",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_replaced_idempotent(self):
+ set_module_args(
+ dict(
+ state="replaced",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_bgp_address_family_replaced(self):
+ set_module_args(
+ dict(
+ state="replaced",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", summary_only=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ospfv3", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.10.21.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="import", route_map="map01")],
+ ),
+ dict(
+ afi="ipv6",
+ distribute_list=[dict(action="export", acl=10)],
+ route_server_client=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv4",
+ filter_list=[
+ dict(action="export", path_list="list01"),
+ ],
+ capability=dict(orf="send"),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged",
+ "delete protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration",
+ "delete protocols bgp address-family ipv6-unicast redistribute ripng",
+ "delete protocols bgp address-family ipv4-unicast network 192.2.13.0/24",
+ "set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 summary-only",
+ "set protocols bgp address-family ipv6-unicast redistribute ospfv3 metric 20",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv4-unicast route-map import map01",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv6-unicast distribute-list export 10",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv6-unicast route-server-client",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv4-unicast filter-list export list01",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv4-unicast capability prefix-list send",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_overridden_idempotent(self):
+ set_module_args(
+ dict(
+ state="overridden",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_bgp_address_family_overridden(self):
+ set_module_args(
+ dict(
+ state="overridden",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ospfv3", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.10.21.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="import", route_map="map01")],
+ ),
+ dict(
+ afi="ipv6",
+ distribute_list=[dict(action="export", acl=10)],
+ route_server_client=True,
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp neighbor 203.0.113.5 address-family",
+ "delete protocols bgp neighbor 192.0.2.25 address-family",
+ "delete protocols bgp address-family ipv6-unicast redistribute ripng",
+ "delete protocols bgp address-family ipv4 aggregate-address",
+ "delete protocols bgp address-family ipv4-unicast network 192.2.13.0/24",
+ "set protocols bgp address-family ipv6-unicast redistribute ospfv3 metric 20",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv4-unicast route-map import map01",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv6-unicast distribute-list export 10",
+ "set protocols bgp neighbor 192.10.21.25 address-family ipv6-unicast route-server-client",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_deleted(self):
+ set_module_args(
+ dict(
+ state="deleted",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp address-family ipv4-unicast",
+ "delete protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast",
+ "delete protocols bgp neighbor 203.0.113.5 address-family",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
+
+ # def test_vyos_bgp_address_family_incorrect_instance(self):
+ # set_module_args(
+ # dict(
+ # state="overridden",
+ # config=dict(
+ # as_number=100,
+ # address_family=[
+ # dict(
+ # afi="ipv4",
+ # networks=[
+ # dict(prefix="192.1.13.0/24", route_map="map01"),
+ # ],
+ # ),
+ # dict(
+ # afi="ipv6",
+ # redistribute=[dict(protocol="ospfv3", metric=20)],
+ # ),
+ # ],
+ # neighbors=[
+ # dict(
+ # neighbor_address="192.10.21.25",
+ # address_family=[
+ # dict(
+ # afi="ipv4",
+ # route_map=[dict(action="import", route_map="map01")],
+ # ),
+ # dict(
+ # afi="ipv6",
+ # distribute_list=[dict(action="export", acl=10)],
+ # route_server_client=True,
+ # ),
+ # ],
+ # ),
+ # ],
+ # ),
+ # ),
+ # )
+ # result = self.execute_module(failed=True)
+ # self.assertIn("Only one bgp instance is allowed per device", result["msg"])
+
+ def test_vyos_bgp_address_family_rendered(self):
+ set_module_args(
+ dict(
+ state="rendered",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ rendered_cmds = [
+ "set protocols bgp system-as 65536",
+ "set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 route-map map01",
+ "set protocols bgp address-family ipv4-unicast network 192.2.13.0/24 backdoor",
+ "set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-set",
+ "set protocols bgp address-family ipv6-unicast redistribute ripng metric 20",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast route-map export map01",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration inbound",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop",
+ ]
+ result = self.execute_module(changed=False)
+ self.assertEqual(
+ sorted(result["rendered"]),
+ sorted(rendered_cmds),
+ result["rendered"],
+ )
+
+ def test_vyos_bgp_address_family_parsed(self):
+ commands = [
+ "set protocols bgp system-as 65536",
+ "set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 route-map map01",
+ "set protocols bgp address-family ipv4-unicast network 192.2.13.0/24 backdoor",
+ "set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-set",
+ "set protocols bgp address-family ipv6-unicast redistribute ripng metric 20",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast route-map export map01",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration inbound",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop",
+ ]
+
+ parsed_str = "\n".join(commands)
+ set_module_args(dict(running_config=parsed_str, state="parsed"))
+ result = self.execute_module(changed=False)
+ parsed_list = {
+ "as_number": 65536,
+ "address_family": [
+ {
+ "afi": "ipv4",
+ "networks": [
+ {"prefix": "192.1.13.0/24", "route_map": "map01"},
+ {"prefix": "192.2.13.0/24", "backdoor": True},
+ ],
+ "aggregate_address": [{"prefix": "192.0.2.0/24", "as_set": True}],
+ },
+ {
+ "afi": "ipv6",
+ "redistribute": [{"protocol": "ripng", "metric": 20}],
+ },
+ ],
+ "neighbors": [
+ {
+ "neighbor_address": "192.0.2.25",
+ "address_family": [
+ {"afi": "ipv4", "soft_reconfiguration": True},
+ ],
+ },
+ {
+ "neighbor_address": "203.0.113.5",
+ "address_family": [
+ {
+ "afi": "ipv6",
+ "attribute_unchanged": {"next_hop": True},
+ },
+ ],
+ },
+ ],
+ }
+ self.assertEqual(sorted(parsed_list), sorted(result["parsed"]))
+
+ def test_vyos_bgp_address_family_gathered(self):
+ set_module_args(dict(state="gathered"))
+ result = self.execute_module(changed=False)
+ gather_list = {
+ "as_number": 65536,
+ "address_family": [
+ {
+ "afi": "ipv4",
+ "networks": [
+ {"prefix": "192.1.13.0/24", "route_map": "map01"},
+ {"prefix": "192.2.13.0/24", "backdoor": True},
+ ],
+ "aggregate_address": [{"prefix": "192.0.2.0/24", "as_set": True}],
+ },
+ {
+ "afi": "ipv6",
+ "redistribute": [{"protocol": "ripng", "metric": 20}],
+ },
+ ],
+ "neighbors": [
+ {
+ "neighbor_address": "192.0.2.25",
+ "address_family": [
+ {"afi": "ipv4", "soft_reconfiguration": True},
+ ],
+ },
+ {
+ "neighbor_address": "203.0.113.5",
+ "address_family": [
+ {
+ "afi": "ipv6",
+ "attribute_unchanged": {"next_hop": True},
+ },
+ ],
+ },
+ ],
+ }
+ self.assertEqual(sorted(gather_list), sorted(result["gathered"]))
+
+ def test_vyos_bgp_address_family_replaced_asn(self):
+ set_module_args(
+ dict(
+ state="replaced",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_bgp_address_family_overridden_asn(self):
+ set_module_args(
+ dict(
+ state="overridden",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_bgp_address_family_replaced_asn(self):
+ set_module_args(
+ dict(
+ state="replaced",
+ config=dict(
+ as_number=65540,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "set protocols bgp system-as 65540",
+ "set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-set",
+ "set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 route-map map01",
+ "set protocols bgp address-family ipv4-unicast network 192.2.13.0/24 backdoor",
+ "set protocols bgp address-family ipv6-unicast redistribute ripng metric 20",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast route-map export map01",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration inbound",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_overridden_asn(self):
+ set_module_args(
+ dict(
+ state="overridden",
+ config=dict(
+ as_number=65540,
+ address_family=[
+ dict(
+ afi="ipv4",
+ aggregate_address=[dict(prefix="192.0.2.0/24", as_set=True)],
+ networks=[
+ dict(prefix="192.1.13.0/24", route_map="map01"),
+ dict(prefix="192.2.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng", metric=20)],
+ ),
+ ],
+ neighbors=[
+ dict(
+ neighbor_address="192.0.2.25",
+ address_family=[
+ dict(
+ afi="ipv4",
+ route_map=[dict(action="export", route_map="map01")],
+ soft_reconfiguration=True,
+ ),
+ ],
+ ),
+ dict(
+ neighbor_address="203.0.113.5",
+ address_family=[
+ dict(
+ afi="ipv6",
+ attribute_unchanged=dict(next_hop=True),
+ ),
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp address-family ipv4 aggregate-address",
+ "delete protocols bgp address-family ipv4 network",
+ "delete protocols bgp address-family ipv6 redistribute",
+ "delete protocols bgp neighbor 192.0.2.25 address-family",
+ "delete protocols bgp neighbor 203.0.113.5 address-family",
+ "set protocols bgp system-as 65540",
+ "set protocols bgp address-family ipv4-unicast aggregate-address 192.0.2.0/24 as-set",
+ "set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 route-map map01",
+ "set protocols bgp address-family ipv4-unicast network 192.2.13.0/24 backdoor",
+ "set protocols bgp address-family ipv6-unicast redistribute ripng metric 20",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast route-map export map01",
+ "set protocols bgp neighbor 192.0.2.25 address-family ipv4-unicast soft-reconfiguration inbound",
+ "set protocols bgp neighbor 203.0.113.5 address-family ipv6-unicast attribute-unchanged next-hop",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+
+class TestVyosBgpafOpsModule14(TestVyosModule):
+ module = vyos_bgp_address_family
+
+ def setUp(self):
+ super(TestVyosBgpafOpsModule14, self).setUp()
+ self.mock_get_resource_connection_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection",
+ )
+ self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts."
+ + "bgp_address_family.bgp_address_family.Bgp_address_familyFacts.get_device_data",
+ )
+ self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.test_version = "1.4"
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = self.test_version
+ self.mock_facts_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_address_family.bgp_address_family.get_os_version"
+ )
+ self.get_facts_os_version = self.mock_facts_get_os_version.start()
+ self.get_facts_os_version.return_value = self.test_version
+ self.maxDiff = None
+
+ def tearDown(self):
+ super(TestVyosBgpafOpsModule14, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_execute_show_command.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_bgp_af_ops_config_14.cfg"
+
+ def load_from_file(*args, **kwargs):
+ output = load_fixture(filename)
+ return output
+
+ self.execute_show_command.side_effect = load_from_file
+
+ def test_vyos_bgp_address_family_merged(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.3.13.0/24", backdoor=True),
+ ],
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ospfv3", metric=20)],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "set protocols bgp address-family ipv4-unicast network 192.3.13.0/24 backdoor",
+ "set protocols bgp address-family ipv6-unicast redistribute ospfv3 metric 20",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_replaced(self):
+ set_module_args(
+ dict(
+ state="replaced",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.1.13.0/24", backdoor=True),
+ ],
+ redistribute=[
+ dict(protocol="ospf", metric=25),
+ ]
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[
+ dict(protocol="ospfv3", metric=20),
+ dict(protocol="ripng")
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp address-family ipv6-unicast redistribute ripng metric",
+ "delete protocols bgp address-family ipv4-unicast network 192.2.13.0/24",
+ "delete protocols bgp address-family ipv4-unicast redistribute rip",
+ "set protocols bgp address-family ipv4-unicast redistribute ospf metric 25",
+ "set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 backdoor",
+ "set protocols bgp address-family ipv6-unicast redistribute ospfv3 metric 20",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_overridden(self):
+ set_module_args(
+ dict(
+ state="overridden",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.1.13.0/24", backdoor=True),
+ ],
+ redistribute=[
+ dict(protocol="ospf", metric=25),
+ ]
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[
+ dict(protocol="ospfv3", metric=20),
+ dict(protocol="ripng")
+ ],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp address-family ipv6-unicast redistribute ripng metric",
+ "delete protocols bgp address-family ipv4-unicast network 192.2.13.0/24",
+ "delete protocols bgp address-family ipv4-unicast redistribute rip",
+ "set protocols bgp address-family ipv4-unicast redistribute ospf metric 25",
+ "set protocols bgp address-family ipv4-unicast network 192.1.13.0/24 backdoor",
+ "set protocols bgp address-family ipv6-unicast redistribute ospfv3 metric 20",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_address_family_deleted(self):
+ set_module_args(
+ dict(
+ state="deleted",
+ config=dict(
+ as_number=65536,
+ address_family=[
+ dict(
+ afi="ipv4",
+ networks=[
+ dict(prefix="192.2.13.0/24"),
+ ]
+ ),
+ dict(
+ afi="ipv6",
+ redistribute=[dict(protocol="ripng")],
+ ),
+ ],
+ ),
+ ),
+ )
+ commands = [
+ "delete protocols bgp address-family ipv4-unicast",
+ "delete protocols bgp address-family ipv6-unicast",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
diff --git a/tests/unit/modules/network/vyos/test_vyos_bgp_global.py b/tests/unit/modules/network/vyos/test_vyos_bgp_global.py
index 99d17ce5..e363f77b 100644
--- a/tests/unit/modules/network/vyos/test_vyos_bgp_global.py
+++ b/tests/unit/modules/network/vyos/test_vyos_bgp_global.py
@@ -55,6 +55,18 @@ class TestVyosBgpglobalModule(TestVyosModule):
)
self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_global.bgp_global.get_os_version",
+ )
+ self.test_version = "1.2"
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = self.test_version
+ self.mock_facts_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_global.bgp_global.get_os_version",
+ )
+ self.get_facts_os_version = self.mock_facts_get_os_version.start()
+ self.get_facts_os_version.return_value = self.test_version
+ self.maxDiff = None
def tearDown(self):
super(TestVyosBgpglobalModule, self).tearDown()
@@ -62,6 +74,8 @@ class TestVyosBgpglobalModule(TestVyosModule):
self.mock_get_resource_connection_facts.stop()
self.mock_execute_show_command.stop()
self.mock_execute_show_command_config.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
def load_fixtures(self, commands=None, filename=None):
if filename is None:
@@ -84,38 +98,34 @@ class TestVyosBgpglobalModule(TestVyosModule):
address="10.0.0.4",
disable_connected_check=True,
timers=dict(holdtime=30, keepalive=10),
- capability=dict(orf="receive"),
),
dict(
address="192.168.0.2",
- attribute_unchanged=dict(as_path=True, med=True),
ebgp_multihop=2,
remote_as="65535",
- soft_reconfiguration=True,
update_source="192.168.0.1",
),
dict(
address="2001:db8::2",
ebgp_multihop=2,
remote_as="65535",
- maximum_prefix=34,
update_source="2001:db8::1",
),
],
- network=[
- dict(address="172.16.42.32/27", backdoor=True),
- dict(address="172.16.42.251/32", route_map="map01"),
- ],
+ # network=[
+ # dict(address="172.16.42.32/27", backdoor=True),
+ # dict(address="172.16.42.251/32", route_map="map01"),
+ # ],
bgp_params=dict(
bestpath=dict(as_path="confed", compare_routerid=True),
default=dict(no_ipv4_unicast=True),
router_id="10.1.1.1",
),
- redistribute=[
- dict(protocol="kernel", route_map="map01"),
- dict(protocol="static", metric=20),
- dict(protocol="static", route_map="map01"),
- ],
+ # redistribute=[
+ # dict(protocol="kernel", route_map="map01"),
+ # dict(protocol="static", metric=20),
+ # dict(protocol="static", route_map="map01"),
+ # ],
),
state="merged",
),
@@ -127,21 +137,12 @@ class TestVyosBgpglobalModule(TestVyosModule):
dict(
config=dict(
as_number="65536",
- maximum_paths=[
- dict(path="ebgp", count=20),
- dict(path="ibgp", count=45),
- ],
neighbor=[
dict(
address="2001:db8::2",
ebgp_multihop=2,
remote_as="65535",
- maximum_prefix=34,
update_source="2001:db8::1",
- distribute_list=[
- dict(action="export", acl=31),
- dict(action="import", acl=9),
- ],
),
],
bgp_params=dict(
@@ -153,12 +154,8 @@ class TestVyosBgpglobalModule(TestVyosModule):
),
)
commands = [
- "set protocols bgp 65536 neighbor 2001:db8::2 distribute-list export 31",
- "set protocols bgp 65536 neighbor 2001:db8::2 distribute-list import 9",
"set protocols bgp 65536 parameters confederation peers 20",
"set protocols bgp 65536 parameters confederation identifier 66",
- "set protocols bgp 65536 maximum-paths ebgp 20",
- "set protocols bgp 65536 maximum-paths ibgp 45",
]
self.execute_module(changed=True, commands=commands)
@@ -172,38 +169,34 @@ class TestVyosBgpglobalModule(TestVyosModule):
address="10.0.0.4",
disable_connected_check=True,
timers=dict(holdtime=30, keepalive=10),
- capability=dict(orf="receive"),
),
dict(
address="192.168.0.2",
- attribute_unchanged=dict(as_path=True, med=True),
ebgp_multihop=2,
remote_as="65535",
- soft_reconfiguration=True,
update_source="192.168.0.1",
),
dict(
address="2001:db8::2",
ebgp_multihop=2,
remote_as="65535",
- maximum_prefix=34,
update_source="2001:db8::1",
),
],
- network=[
- dict(address="172.16.42.32/27", backdoor=True),
- dict(address="172.16.42.251/32", route_map="map01"),
- ],
+ # network=[
+ # dict(address="172.16.42.32/27", backdoor=True),
+ # dict(address="172.16.42.251/32", route_map="map01"),
+ # ],
bgp_params=dict(
bestpath=dict(as_path="confed", compare_routerid=True),
default=dict(no_ipv4_unicast=True),
router_id="10.1.1.1",
),
- redistribute=[
- dict(protocol="kernel", route_map="map01"),
- dict(protocol="static", metric=20),
- dict(protocol="static", route_map="map01"),
- ],
+ # redistribute=[
+ # dict(protocol="kernel", route_map="map01"),
+ # dict(protocol="static", metric=20),
+ # dict(protocol="static", route_map="map01"),
+ # ],
),
state="replaced",
),
@@ -220,19 +213,11 @@ class TestVyosBgpglobalModule(TestVyosModule):
neighbor=[
dict(
address="200.11.155.3",
- prefix_list=[
- dict(action="export", prefix_list=10),
- ],
- allowas_in=10,
),
dict(
address="2001:db8::2",
remote_as="65535",
- as_override=True,
default_originate="map01",
- route_map=[
- dict(action="export", route_map="map01"),
- ],
),
],
bgp_params=dict(
@@ -249,17 +234,12 @@ class TestVyosBgpglobalModule(TestVyosModule):
"delete protocols bgp 65536 parameters default",
"delete protocols bgp 65536 parameters bestpath compare-routerid",
"delete protocols bgp 65536 parameters bestpath as-path confed",
- "delete protocols bgp 65536 network",
- "delete protocols bgp 65536 redistribute",
+ # "delete protocols bgp 65536 network",
+ # "delete protocols bgp 65536 redistribute",
"delete protocols bgp 65536 neighbor 2001:db8::2 update-source 2001:db8::1",
- "delete protocols bgp 65536 neighbor 2001:db8::2 maximum-prefix 34",
"delete protocols bgp 65536 neighbor 2001:db8::2 ebgp-multihop 2",
"delete protocols bgp 65536 neighbor 192.168.0.2",
"delete protocols bgp 65536 neighbor 10.0.0.4",
- "set protocols bgp 65536 neighbor 200.11.155.3 prefix-list export 10",
- "set protocols bgp 65536 neighbor 200.11.155.3 allowas-in number 10",
- "set protocols bgp 65536 neighbor 2001:db8::2 as-override",
- "set protocols bgp 65536 neighbor 2001:db8::2 route-map export map01",
"set protocols bgp 65536 parameters log-neighbor-changes",
"set protocols bgp 65536 parameters no-client-to-client-reflection",
"set protocols bgp 65536 parameters confederation peers 20",
@@ -286,19 +266,11 @@ class TestVyosBgpglobalModule(TestVyosModule):
neighbor=[
dict(
address="200.11.155.3",
- prefix_list=[
- dict(action="export", prefix_list=10),
- ],
- allowas_in=10,
),
dict(
address="2001:db8::2",
remote_as="65535",
- as_override=True,
default_originate="map01",
- route_map=[
- dict(action="export", route_map="map01"),
- ],
),
],
bgp_params=dict(
@@ -323,19 +295,11 @@ class TestVyosBgpglobalModule(TestVyosModule):
neighbor=[
dict(
address="200.11.155.3",
- prefix_list=[
- dict(action="export", prefix_list=10),
- ],
- allowas_in=10,
),
dict(
address="2001:db8::2",
remote_as="65535",
- as_override=True,
default_originate="map01",
- route_map=[
- dict(action="export", route_map="map01"),
- ],
),
],
bgp_params=dict(
@@ -364,38 +328,34 @@ class TestVyosBgpglobalModule(TestVyosModule):
address="10.0.0.4",
disable_connected_check=True,
timers=dict(holdtime=30, keepalive=10),
- capability=dict(orf="receive"),
),
dict(
address="192.168.0.2",
- attribute_unchanged=dict(as_path=True, med=True),
ebgp_multihop=2,
remote_as="65535",
- soft_reconfiguration=True,
update_source="192.168.0.1",
),
dict(
address="2001:db8::2",
ebgp_multihop=2,
remote_as="65535",
- maximum_prefix=34,
update_source="2001:db8::1",
),
],
- network=[
- dict(address="172.16.42.32/27", backdoor=True),
- dict(address="172.16.42.251/32", route_map="map01"),
- ],
+ # network=[
+ # dict(address="172.16.42.32/27", backdoor=True),
+ # dict(address="172.16.42.251/32", route_map="map01"),
+ # ],
bgp_params=dict(
bestpath=dict(as_path="confed", compare_routerid=True),
default=dict(no_ipv4_unicast=True),
router_id="10.1.1.1",
),
- redistribute=[
- dict(protocol="kernel", route_map="map01"),
- dict(protocol="static", metric=20),
- dict(protocol="static", route_map="map01"),
- ],
+ # redistribute=[
+ # dict(protocol="kernel", route_map="map01"),
+ # dict(protocol="static", metric=20),
+ # dict(protocol="static", route_map="map01"),
+ # ],
),
state="rendered",
),
@@ -404,22 +364,16 @@ class TestVyosBgpglobalModule(TestVyosModule):
"set protocols bgp 65536 neighbor 10.0.0.4 disable-connected-check",
"set protocols bgp 65536 neighbor 10.0.0.4 timers holdtime 30",
"set protocols bgp 65536 neighbor 10.0.0.4 timers keepalive 10",
- "set protocols bgp 65536 neighbor 10.0.0.4 capability orf prefix-list receive",
- "set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged as-path",
- "set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged med",
- "set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged next-hop",
"set protocols bgp 65536 neighbor 192.168.0.2 ebgp-multihop 2",
"set protocols bgp 65536 neighbor 192.168.0.2 remote-as 65535",
- "set protocols bgp 65536 neighbor 192.168.0.2 soft-reconfiguration",
"set protocols bgp 65536 neighbor 192.168.0.2 update-source 192.168.0.1",
"set protocols bgp 65536 neighbor 2001:db8::2 ebgp-multihop 2",
"set protocols bgp 65536 neighbor 2001:db8::2 remote-as 65535",
- "set protocols bgp 65536 neighbor 2001:db8::2 maximum-prefix 34",
"set protocols bgp 65536 neighbor 2001:db8::2 update-source 2001:db8::1",
- "set protocols bgp 65536 redistribute kernel route-map map01",
- "set protocols bgp 65536 redistribute static route-map map01",
- "set protocols bgp 65536 network 172.16.42.32/27 backdoor",
- "set protocols bgp 65536 network 172.16.42.251/32 route-map map01",
+ # "set protocols bgp 65536 redistribute kernel route-map map01",
+ # "set protocols bgp 65536 redistribute static route-map map01",
+ # "set protocols bgp 65536 network 172.16.42.32/27 backdoor",
+ # "set protocols bgp 65536 network 172.16.42.251/32 route-map map01",
"set protocols bgp 65536 parameters bestpath as-path confed",
"set protocols bgp 65536 parameters bestpath compare-routerid",
"set protocols bgp 65536 parameters default no-ipv4-unicast",
@@ -437,22 +391,16 @@ class TestVyosBgpglobalModule(TestVyosModule):
"set protocols bgp 65536 neighbor 10.0.0.4 disable-connected-check",
"set protocols bgp 65536 neighbor 10.0.0.4 timers holdtime 30",
"set protocols bgp 65536 neighbor 10.0.0.4 timers keepalive 10",
- "set protocols bgp 65536 neighbor 10.0.0.4 capability orf prefix-list receive",
- "set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged as-path",
- "set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged med",
- "set protocols bgp 65536 neighbor 192.168.0.2 attribute-unchanged next-hop",
"set protocols bgp 65536 neighbor 192.168.0.2 ebgp-multihop 2",
"set protocols bgp 65536 neighbor 192.168.0.2 remote-as 65535",
- "set protocols bgp 65536 neighbor 192.168.0.2 soft-reconfiguration",
"set protocols bgp 65536 neighbor 192.168.0.2 update-source 192.168.0.1",
"set protocols bgp 65536 neighbor 2001:db8::2 ebgp-multihop 2",
"set protocols bgp 65536 neighbor 2001:db8::2 remote-as 65535",
- "set protocols bgp 65536 neighbor 2001:db8::2 maximum-prefix 34",
"set protocols bgp 65536 neighbor 2001:db8::2 update-source 2001:db8::1",
- "set protocols bgp 65536 redistribute kernel route-map map01",
- "set protocols bgp 65536 redistribute static route-map map01",
- "set protocols bgp 65536 network 172.16.42.32/27 backdoor",
- "set protocols bgp 65536 network 172.16.42.251/32 route-map map01",
+ # "set protocols bgp 65536 redistribute kernel route-map map01",
+ # "set protocols bgp 65536 redistribute static route-map map01",
+ # "set protocols bgp 65536 network 172.16.42.32/27 backdoor",
+ # "set protocols bgp 65536 network 172.16.42.251/32 route-map map01",
"set protocols bgp 65536 parameters bestpath as-path confed",
"set protocols bgp 65536 parameters bestpath compare-routerid",
"set protocols bgp 65536 parameters default no-ipv4-unicast",
@@ -471,17 +419,11 @@ class TestVyosBgpglobalModule(TestVyosModule):
"neighbor": [
{
"address": "10.0.0.4",
- "capability": {"orf": "receive"},
"disable_connected_check": True,
"timers": {"holdtime": 30, "keepalive": 10},
},
{
"address": "192.168.0.2",
- "attribute_unchanged": {
- "as_path": True,
- "med": True,
- "next_hop": True,
- },
"ebgp_multihop": 2,
"remote_as": 65535,
"update_source": "192.168.0.1",
@@ -489,19 +431,18 @@ class TestVyosBgpglobalModule(TestVyosModule):
{
"address": "2001:db8::2",
"ebgp_multihop": 2,
- "maximum_prefix": 34,
"remote_as": 65535,
"update_source": "2001:db8::1",
},
],
- "network": [
- {"address": "172.16.42.32/27", "backdoor": True},
- {"address": "172.16.42.251/32", "route_map": "map01"},
- ],
- "redistribute": [
- {"protocol": "kernel", "route_map": "map01"},
- {"protocol": "static", "route_map": "map01"},
- ],
+ # "network": [
+ # {"address": "172.16.42.32/27", "backdoor": True},
+ # {"address": "172.16.42.251/32", "route_map": "map01"},
+ # ],
+ # "redistribute": [
+ # {"protocol": "kernel", "route_map": "map01"},
+ # {"protocol": "static", "route_map": "map01"},
+ # ],
}
self.assertEqual(sorted(parsed_list), sorted(result["parsed"]))
@@ -518,34 +459,30 @@ class TestVyosBgpglobalModule(TestVyosModule):
"neighbor": [
{
"address": "10.0.0.4",
- "capability": {"orf": "receive"},
"disable_connected_check": True,
"timers": {"holdtime": 30, "keepalive": 10},
},
{
"address": "192.168.0.2",
- "attribute_unchanged": {"as_path": True, "med": True},
"ebgp_multihop": 2,
"remote_as": 65535,
- "soft_reconfiguration": True,
"update_source": "192.168.0.1",
},
{
"address": "2001:db8::2",
"ebgp_multihop": 2,
- "maximum_prefix": 34,
"remote_as": 65535,
"update_source": "2001:db8::1",
},
],
- "network": [
- {"address": "172.16.42.32/27", "backdoor": True},
- {"address": "172.16.42.251/32", "route_map": "map01"},
- ],
- "redistribute": [
- {"protocol": "kernel", "route_map": "map01"},
- {"metric": 20, "protocol": "static"},
- {"protocol": "static", "route_map": "map01"},
- ],
+ # "network": [
+ # {"address": "172.16.42.32/27", "backdoor": True},
+ # {"address": "172.16.42.251/32", "route_map": "map01"},
+ # ],
+ # "redistribute": [
+ # {"protocol": "kernel", "route_map": "map01"},
+ # {"metric": 20, "protocol": "static"},
+ # {"protocol": "static", "route_map": "map01"},
+ # ],
}
self.assertEqual(sorted(gather_list), sorted(result["gathered"]))
diff --git a/tests/unit/modules/network/vyos/test_vyos_bgp_global14.py b/tests/unit/modules/network/vyos/test_vyos_bgp_global14.py
new file mode 100644
index 00000000..ee647616
--- /dev/null
+++ b/tests/unit/modules/network/vyos/test_vyos_bgp_global14.py
@@ -0,0 +1,495 @@
+# (c) 2016 Red Hat Inc.
+#
+# This file is part of Ansible
+#
+# Ansible is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# Ansible is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
+
+# Make coding more python3-ish
+from __future__ import absolute_import, division, print_function
+
+
+__metaclass__ = type
+
+from unittest.mock import patch
+
+from ansible_collections.vyos.vyos.plugins.modules import vyos_bgp_global
+from ansible_collections.vyos.vyos.tests.unit.modules.utils import set_module_args
+
+from .vyos_module import TestVyosModule, load_fixture
+
+
+class TestVyosBgpglobalModule(TestVyosModule):
+ module = vyos_bgp_global
+
+ def setUp(self):
+ super(TestVyosBgpglobalModule, self).setUp()
+
+ self.mock_get_resource_connection_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.rm_base.resource_module_base.get_resource_connection",
+ )
+ self.get_resource_connection_config = self.mock_get_resource_connection_config.start()
+
+ self.mock_execute_show_command_config = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_global.bgp_global.Bgp_global._get_config",
+ )
+ self.execute_show_command_config = self.mock_execute_show_command_config.start()
+
+ self.mock_get_resource_connection_facts = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.facts.facts.get_resource_connection",
+ )
+ self.get_resource_connection_facts = self.mock_get_resource_connection_facts.start()
+
+ self.mock_execute_show_command = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_global.bgp_global.Bgp_globalFacts.get_device_data",
+ )
+
+ self.execute_show_command = self.mock_execute_show_command.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.bgp_global.bgp_global.get_os_version",
+ )
+ self.test_version = "1.4"
+ self.get_os_version = self.mock_get_os_version.start()
+ self.get_os_version.return_value = self.test_version
+ self.mock_facts_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.bgp_global.bgp_global.get_os_version",
+ )
+ self.get_facts_os_version = self.mock_facts_get_os_version.start()
+ self.get_facts_os_version.return_value = self.test_version
+ self.maxDiff = None
+
+ def tearDown(self):
+ super(TestVyosBgpglobalModule, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_execute_show_command.stop()
+ self.mock_execute_show_command_config.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_bgp_global_config_14.cfg"
+
+ def load_from_file(*args, **kwargs):
+ output = load_fixture(filename)
+ return output
+
+ self.execute_show_command.side_effect = load_from_file
+ self.execute_show_command_config.side_effect = load_from_file
+
+ def test_vyos_bgp_global_merged_idempotent(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65536",
+ neighbor=[
+ dict(
+ address="10.0.0.4",
+ disable_connected_check=True,
+ timers=dict(holdtime=30, keepalive=10),
+ ),
+ dict(
+ address="192.168.0.2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="192.168.0.1",
+ ),
+ dict(
+ address="2001:db8::2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="2001:db8::1",
+ ),
+ ],
+ # network=[
+ # dict(address="172.16.42.32/27", backdoor=True),
+ # dict(address="172.16.42.251/32", route_map="map01"),
+ # ],
+ bgp_params=dict(
+ bestpath=dict(as_path="confed", compare_routerid=True),
+ default=dict(no_ipv4_unicast=True),
+ router_id="10.1.1.1",
+ ),
+ # redistribute=[
+ # dict(protocol="kernel", route_map="map01"),
+ # dict(protocol="static", metric=20),
+ # dict(protocol="static", route_map="map01"),
+ # ],
+ ),
+ state="merged",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_bgp_global_merged(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65536",
+ neighbor=[
+ dict(
+ address="2001:db8::2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="2001:db8::1",
+ ),
+ ],
+ bgp_params=dict(
+ confederation=[dict(peers=20), dict(identifier=66)],
+ router_id="10.1.1.1",
+ ),
+ ),
+ state="merged",
+ ),
+ )
+ commands = [
+ "set protocols bgp parameters confederation peers 20",
+ "set protocols bgp parameters confederation identifier 66",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_bgp_global_replaced_idempotent(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65536",
+ neighbor=[
+ dict(
+ address="10.0.0.4",
+ disable_connected_check=True,
+ timers=dict(holdtime=30, keepalive=10),
+ ),
+ dict(
+ address="192.168.0.2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="192.168.0.1",
+ ),
+ dict(
+ address="2001:db8::2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="2001:db8::1",
+ ),
+ ],
+ # network=[
+ # dict(address="172.16.42.32/27", backdoor=True),
+ # dict(address="172.16.42.251/32", route_map="map01"),
+ # ],
+ bgp_params=dict(
+ bestpath=dict(as_path="confed", compare_routerid=True),
+ default=dict(no_ipv4_unicast=True),
+ router_id="10.1.1.1",
+ ),
+ # redistribute=[
+ # dict(protocol="kernel", route_map="map01"),
+ # dict(protocol="static", metric=20),
+ # dict(protocol="static", route_map="map01"),
+ # ],
+ ),
+ state="replaced",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ #
+ def test_vyos_bgp_global_replaced(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65536",
+ timers=dict(holdtime=30, keepalive=10),
+ neighbor=[
+ dict(
+ address="200.11.155.3",
+ ),
+ dict(
+ address="2001:db8::2",
+ remote_as="65535",
+ default_originate="map01",
+ ),
+ ],
+ bgp_params=dict(
+ log_neighbor_changes=True,
+ no_client_to_client_reflection=True,
+ confederation=[dict(peers=20), dict(identifier=66)],
+ router_id="10.1.1.1",
+ ),
+ ),
+ state="replaced",
+ ),
+ )
+ commands = [
+ "delete protocols bgp parameters default",
+ "delete protocols bgp parameters bestpath compare-routerid",
+ "delete protocols bgp parameters bestpath as-path confed",
+ # "delete protocols bgp network",
+ # "delete protocols bgp redistribute",
+ "delete protocols bgp neighbor 2001:db8::2 update-source 2001:db8::1",
+ "delete protocols bgp neighbor 2001:db8::2 ebgp-multihop 2",
+ "delete protocols bgp neighbor 192.168.0.2",
+ "delete protocols bgp neighbor 10.0.0.4",
+ "set protocols bgp parameters log-neighbor-changes",
+ "set protocols bgp parameters no-client-to-client-reflection",
+ "set protocols bgp parameters confederation peers 20",
+ "set protocols bgp parameters confederation identifier 66",
+ "set protocols bgp timers holdtime 30",
+ "set protocols bgp timers keepalive 10",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ #
+ def test_vyos_bgp_global_purged(self):
+ set_module_args(dict(config=dict(as_number="65536"), state="purged"))
+ #
+ commands = ["delete protocols bgp"]
+ self.execute_module(changed=True, commands=commands)
+
+ #
+ # def test_vyos_bgp_global_incorrect_instance(self):
+ # set_module_args(
+ # dict(
+ # config=dict(
+ # as_number="100",
+ # timers=dict(holdtime=30, keepalive=10),
+ # neighbor=[
+ # dict(
+ # address="200.11.155.3",
+ # allowas_in=10,
+ # ),
+ # dict(
+ # address="2001:db8::2",
+ # remote_as="65535",
+ # as_override=True,
+ # default_originate="map01",
+ # route_map=[
+ # dict(action="export", route_map="map01"),
+ # ],
+ # ),
+ # ],
+ # bgp_params=dict(
+ # log_neighbor_changes=True,
+ # no_client_to_client_reflection=True,
+ # confederation=[dict(peers=20), dict(identifier=66)],
+ # router_id="10.1.1.1",
+ # ),
+ # ),
+ # state="replaced",
+ # ),
+ # )
+ # result = self.execute_module(failed=True)
+ # self.assertIn("Only one bgp instance is allowed per device", result["msg"])
+
+ def test_vyos_bgp_global_replaced_af(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65536",
+ timers=dict(holdtime=30, keepalive=10),
+ neighbor=[
+ dict(
+ address="200.11.155.3",
+ ),
+ dict(
+ address="2001:db8::2",
+ remote_as="65535",
+ default_originate="map01",
+ ),
+ ],
+ bgp_params=dict(
+ log_neighbor_changes=True,
+ no_client_to_client_reflection=True,
+ confederation=[dict(peers=20), dict(identifier=66)],
+ router_id="10.1.1.1",
+ ),
+ ),
+ state="replaced",
+ ),
+ )
+ result = self.execute_module(failed=True, filename="vyos_bgp_global_af_config_14.cfg")
+ self.assertIn(
+ "Use the _bgp_address_family module to delete the address_family under neighbor 5001::64, before replacing/deleting the neighbor.",
+ result["msg"],
+ )
+
+ def test_vyos_bgp_global_rendered(self):
+ set_module_args(
+ dict(
+ config=dict(
+ as_number="65536",
+ neighbor=[
+ dict(
+ address="10.0.0.4",
+ disable_connected_check=True,
+ timers=dict(holdtime=30, keepalive=10),
+ ),
+ dict(
+ address="192.168.0.2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="192.168.0.1",
+ ),
+ dict(
+ address="2001:db8::2",
+ ebgp_multihop=2,
+ remote_as="65535",
+ update_source="2001:db8::1",
+ ),
+ ],
+ # network=[
+ # dict(address="172.16.42.32/27", backdoor=True),
+ # dict(address="172.16.42.251/32", route_map="map01"),
+ # ],
+ bgp_params=dict(
+ bestpath=dict(as_path="confed", compare_routerid=True),
+ default=dict(no_ipv4_unicast=True),
+ router_id="10.1.1.1",
+ ),
+ # redistribute=[
+ # dict(protocol="kernel", route_map="map01"),
+ # dict(protocol="static", metric=20),
+ # dict(protocol="static", route_map="map01"),
+ # ],
+ ),
+ state="rendered",
+ ),
+ )
+ rendered_cmds = [
+ "set protocols bgp system-as 65536",
+ "set protocols bgp neighbor 10.0.0.4 disable-connected-check",
+ "set protocols bgp neighbor 10.0.0.4 timers holdtime 30",
+ "set protocols bgp neighbor 10.0.0.4 timers keepalive 10",
+ "set protocols bgp neighbor 192.168.0.2 ebgp-multihop 2",
+ "set protocols bgp neighbor 192.168.0.2 remote-as 65535",
+ "set protocols bgp neighbor 192.168.0.2 update-source 192.168.0.1",
+ "set protocols bgp neighbor 2001:db8::2 ebgp-multihop 2",
+ "set protocols bgp neighbor 2001:db8::2 remote-as 65535",
+ "set protocols bgp neighbor 2001:db8::2 update-source 2001:db8::1",
+ # "set protocols bgp redistribute kernel route-map map01",
+ # "set protocols bgp redistribute static route-map map01",
+ # "set protocols bgp network 172.16.42.32/27 backdoor",
+ # "set protocols bgp network 172.16.42.251/32 route-map map01",
+ "set protocols bgp parameters bestpath as-path confed",
+ "set protocols bgp parameters bestpath compare-routerid",
+ "set protocols bgp parameters default no-ipv4-unicast",
+ "set protocols bgp parameters router-id 10.1.1.1",
+ ]
+ result = self.execute_module(changed=False)
+ self.assertEqual(
+ sorted(result["rendered"]),
+ sorted(rendered_cmds),
+ result["rendered"],
+ )
+
+ def test_vyos_bgp_global_parsed(self):
+ commands = [
+ "set protocols bgp system-as 65536",
+ "set protocols bgp neighbor 10.0.0.4 disable-connected-check",
+ "set protocols bgp neighbor 10.0.0.4 timers holdtime 30",
+ "set protocols bgp neighbor 10.0.0.4 timers keepalive 10",
+ "set protocols bgp neighbor 192.168.0.2 ebgp-multihop 2",
+ "set protocols bgp neighbor 192.168.0.2 remote-as 65535",
+ "set protocols bgp neighbor 192.168.0.2 update-source 192.168.0.1",
+ "set protocols bgp neighbor 2001:db8::2 ebgp-multihop 2",
+ "set protocols bgp neighbor 2001:db8::2 remote-as 65535",
+ "set protocols bgp neighbor 2001:db8::2 update-source 2001:db8::1",
+ # "set protocols bgp redistribute kernel route-map map01",
+ # "set protocols bgp redistribute static route-map map01",
+ # "set protocols bgp network 172.16.42.32/27 backdoor",
+ # "set protocols bgp network 172.16.42.251/32 route-map map01",
+ "set protocols bgp parameters bestpath as-path confed",
+ "set protocols bgp parameters bestpath compare-routerid",
+ "set protocols bgp parameters default no-ipv4-unicast",
+ "set protocols bgp parameters router-id 10.1.1.1",
+ ]
+ parsed_str = "\n".join(commands)
+ set_module_args(dict(running_config=parsed_str, state="parsed"))
+ result = self.execute_module(changed=False)
+ parsed_list = {
+ "as_number": 65536,
+ "bgp_params": {
+ "bestpath": {"as_path": "confed", "compare_routerid": True},
+ "default": {"no_ipv4_unicast": True},
+ "router_id": "10.1.1.1",
+ },
+ "neighbor": [
+ {
+ "address": "10.0.0.4",
+ "disable_connected_check": True,
+ "timers": {"holdtime": 30, "keepalive": 10},
+ },
+ {
+ "address": "192.168.0.2",
+ "ebgp_multihop": 2,
+ "remote_as": 65535,
+ "update_source": "192.168.0.1",
+ },
+ {
+ "address": "2001:db8::2",
+ "ebgp_multihop": 2,
+ "remote_as": 65535,
+ "update_source": "2001:db8::1",
+ },
+ ],
+ # "network": [
+ # {"address": "172.16.42.32/27", "backdoor": True},
+ # {"address": "172.16.42.251/32", "route_map": "map01"},
+ # ],
+ # "redistribute": [
+ # {"protocol": "kernel", "route_map": "map01"},
+ # {"protocol": "static", "route_map": "map01"},
+ # ],
+ }
+ self.assertEqual(sorted(parsed_list), sorted(result["parsed"]))
+
+ def test_vyos_bgp_global_gathered(self):
+ set_module_args(dict(state="gathered"))
+ result = self.execute_module(changed=False)
+ gather_list = {
+ "as_number": 65536,
+ "bgp_params": {
+ "bestpath": {"as_path": "confed", "compare_routerid": True},
+ "default": {"no_ipv4_unicast": True},
+ "router_id": "10.1.1.1",
+ },
+ "neighbor": [
+ {
+ "address": "10.0.0.4",
+ "disable_connected_check": True,
+ "timers": {"holdtime": 30, "keepalive": 10},
+ },
+ {
+ "address": "192.168.0.2",
+ "ebgp_multihop": 2,
+ "remote_as": 65535,
+ "update_source": "192.168.0.1",
+ },
+ {
+ "address": "2001:db8::2",
+ "ebgp_multihop": 2,
+ "remote_as": 65535,
+ "update_source": "2001:db8::1",
+ },
+ ],
+ # "network": [
+ # {"address": "172.16.42.32/27", "backdoor": True},
+ # {"address": "172.16.42.251/32", "route_map": "map01"},
+ # ],
+ # "redistribute": [
+ # {"protocol": "kernel", "route_map": "map01"},
+ # {"metric": 20, "protocol": "static"},
+ # {"protocol": "static", "route_map": "map01"},
+ # ],
+ }
+ self.assertEqual(sorted(gather_list), sorted(result["gathered"]))