summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/integration/targets/prepare_vyos_tests/tasks/main.yaml10
-rw-r--r--tests/integration/targets/vyos_config/tests/cli/save.yaml4
-rw-r--r--tests/integration/targets/vyos_config/tests/cli/simple.yaml11
-rw-r--r--tests/integration/targets/vyos_firewall_rules/tests/cli/diff_mode.yaml61
-rw-r--r--tests/integration/targets/vyos_firewall_rules/vars/pre-v1_4.yaml139
-rw-r--r--tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml148
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml2
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml8
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/gathered.yaml2
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml10
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml8
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/parsed.yaml2
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml4
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml6
-rw-r--r--tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml6
-rw-r--r--tests/integration/targets/vyos_interfaces/vars/main.yaml25
-rw-r--r--tests/integration/targets/vyos_logging_global/tests/cli/_populate.yaml1
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tasks/post_tasks.yml2
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tasks/pre_tasks.yml2
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/_get_version.yaml1
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/deleted.yaml1
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/merged.yaml6
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/overridden.yaml1
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/rendered.yaml5
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/replaced.yaml1
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/tests/cli/rtt.yaml6
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/vars/pre-v1_4.yaml5
-rw-r--r--tests/integration/targets/vyos_ospf_interfaces/vars/v1_4.yaml5
-rw-r--r--tests/integration/targets/vyos_ospfv2/tasks/main.yaml8
-rw-r--r--tests/integration/targets/vyos_ospfv2/tasks/post_tasks.yaml7
-rw-r--r--tests/integration/targets/vyos_ospfv2/tasks/pre_tasks.yaml7
-rw-r--r--tests/integration/targets/vyos_ospfv2/tests/cli/_get_version.yaml30
-rw-r--r--tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_3.cfg (renamed from tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config.cfg)4
-rw-r--r--tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_4.cfg29
-rw-r--r--tests/integration/targets/vyos_ospfv2/tests/cli/_populate.yaml38
-rw-r--r--tests/integration/targets/vyos_ospfv2/tests/cli/parsed.yaml8
-rw-r--r--tests/integration/targets/vyos_ospfv2/vars/main.yaml97
-rw-r--r--tests/integration/targets/vyos_ospfv2/vars/pre-v1_4.yaml123
-rw-r--r--tests/integration/targets/vyos_ospfv2/vars/v1_4.yaml123
-rw-r--r--tests/integration/targets/vyos_route_maps/tests/cli/replaced.yaml1
-rw-r--r--tests/integration/targets/vyos_snmp_server/meta/main.yaml2
-rw-r--r--tests/integration/targets/vyos_snmp_server/tests/cli/_populate_config.yaml1
-rw-r--r--tests/integration/targets/vyos_snmp_server/tests/cli/_remove_config.yaml9
-rw-r--r--tests/integration/targets/vyos_snmp_server/tests/cli/merged.yaml1
-rw-r--r--tests/integration/targets/vyos_snmp_server/tests/cli/rendered.yaml1
-rw-r--r--tests/integration/targets/vyos_snmp_server/vars/main.yaml2
-rw-r--r--tests/integration/targets/vyos_system/tests/cli/basic.yaml6
-rw-r--r--tests/integration/targets/vyos_system/tests/cli/domain_search.yaml43
-rw-r--r--tests/integration/targets/vyos_system/vars/pre-v1_4.yaml4
-rw-r--r--tests/integration/targets/vyos_system/vars/v1_4.yaml4
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config.cfg2
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg2
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config.cfg5
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config_v14.cfg5
-rw-r--r--tests/unit/modules/network/vyos/fixtures/vyos_route_maps_config_v14.cfg18
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py62
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_firewall_global.py19
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_firewall_global14.py19
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_firewall_rules13.py33
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_firewall_rules14.py33
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ospf_interfaces.py32
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ospf_interfaces14.py61
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ospfv2.py12
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ospfv2v14.py437
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_ospfv3.py59
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_route_maps.py135
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_route_maps14.py717
-rw-r--r--tests/unit/modules/network/vyos/test_vyos_system.py79
-rw-r--r--tests/unit/modules/utils.py3
69 files changed, 2528 insertions, 235 deletions
diff --git a/tests/integration/targets/prepare_vyos_tests/tasks/main.yaml b/tests/integration/targets/prepare_vyos_tests/tasks/main.yaml
index 5800a582..276be083 100644
--- a/tests/integration/targets/prepare_vyos_tests/tasks/main.yaml
+++ b/tests/integration/targets/prepare_vyos_tests/tasks/main.yaml
@@ -1,14 +1,12 @@
---
- name: Ensure required interfaces are present in running-config
- vars:
+ vyos.vyos.vyos_config:
lines: |-
set interfaces ethernet eth0 address dhcp
set interfaces ethernet eth0 speed auto
set interfaces ethernet eth0 duplex auto
- set interfaces ethernet eth1 address 192.0.2.1/24
+ set interfaces ethernet eth1
set interfaces ethernet eth2
delete interfaces loopback lo
- ignore_errors: "{{ result.failed }}"
- register: result
- ansible.netcommon.cli_config:
- config: "{{ lines }}"
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_config/tests/cli/save.yaml b/tests/integration/targets/vyos_config/tests/cli/save.yaml
index e8a9035b..b39ef957 100644
--- a/tests/integration/targets/vyos_config/tests/cli/save.yaml
+++ b/tests/integration/targets/vyos_config/tests/cli/save.yaml
@@ -6,7 +6,7 @@
lines: set system host-name {{ inventory_hostname_short }}
match: none
-- name: configure hostaname and save
+- name: configure hostname and save
register: result
vyos.vyos.vyos_config:
lines: set system host-name foo
@@ -17,7 +17,7 @@
- result.changed == true
- "'set system host-name foo' in result.commands"
-- name: configure hostaname and don't save
+- name: configure hostname and don't save
register: result
vyos.vyos.vyos_config:
lines: set system host-name bar
diff --git a/tests/integration/targets/vyos_config/tests/cli/simple.yaml b/tests/integration/targets/vyos_config/tests/cli/simple.yaml
index 3db59270..1559fa2b 100644
--- a/tests/integration/targets/vyos_config/tests/cli/simple.yaml
+++ b/tests/integration/targets/vyos_config/tests/cli/simple.yaml
@@ -25,6 +25,17 @@
that:
- result.changed == false
+- name: configure simple config command while match = 'none'
+ register: result
+ vyos.vyos.vyos_config:
+ lines: set system host-name foo
+ match: none
+
+- assert:
+ that:
+ - result.changed == true
+ - "'set system host-name foo' in result.commands"
+
- name: Delete services
vyos.vyos.vyos_config: &id001
lines:
diff --git a/tests/integration/targets/vyos_firewall_rules/tests/cli/diff_mode.yaml b/tests/integration/targets/vyos_firewall_rules/tests/cli/diff_mode.yaml
new file mode 100644
index 00000000..43f3c88b
--- /dev/null
+++ b/tests/integration/targets/vyos_firewall_rules/tests/cli/diff_mode.yaml
@@ -0,0 +1,61 @@
+---
+- debug:
+ msg: START vyos_firewall_rules diff mode integration tests on connection={{ ansible_connection }}
+
+- include_tasks: _remove_config.yaml
+
+- include_tasks: _populate.yaml
+
+- block:
+ - name: Replace device configurations - No Diff
+ register: result
+ diff: true
+ vyos.vyos.vyos_firewall_rules:
+ config: "{{ populate }}"
+
+ - name: Assert No Diff
+ assert:
+ that:
+ - result['changed'] == false
+ - result.diff is not defined
+
+ - name: Replace single rule's attribute and register Diff
+ register: result
+ diff: true
+ vyos.vyos.vyos_firewall_rules:
+ config: "{{ replaced_diff_01.config }}"
+ state: replaced
+
+ - name: Assert - Diff for a single rule and attribute
+ assert:
+ that:
+ - result['changed'] == true
+ - result.diff.prepared == "{{ replaced_diff_01.diff.rstrip() }}"
+
+ - name: Replace single rule's multiple attributes and register Diff
+ register: result
+ diff: true
+ vyos.vyos.vyos_firewall_rules:
+ config: "{{ replaced_diff_02.config }}"
+ state: replaced
+
+ - name: Assert - Diff for a single rule and multiple attributes
+ assert:
+ that:
+ - result['changed'] == true
+ - result.diff.prepared == "{{ replaced_diff_02.diff.rstrip() }}"
+
+ - name: Replace attributes in multiple rules and register Diff
+ register: result
+ diff: true
+ vyos.vyos.vyos_firewall_rules:
+ config: "{{ replaced_diff_03.config }}"
+ state: replaced
+
+ - name: Assert - Diff for a single rule and multiple attributes
+ assert:
+ that:
+ - result['changed'] == true
+ - result.diff.prepared == "{{ replaced_diff_03.diff.rstrip() }}"
+ always:
+ - include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_firewall_rules/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_firewall_rules/vars/pre-v1_4.yaml
index c7d7398b..825afe67 100644
--- a/tests/integration/targets/vyos_firewall_rules/vars/pre-v1_4.yaml
+++ b/tests/integration/targets/vyos_firewall_rules/vars/pre-v1_4.yaml
@@ -128,3 +128,142 @@ state_dict:
new: false
invalid: false
related: true
+
+replaced_diff_01:
+ config:
+ - afi: ipv6
+ rule_sets:
+ - name: UPLINK
+ description: This is ipv6 specific rule-set
+ default_action: accept
+ rules:
+ - number: 1
+ action: accept
+ description: Fwipv6-Rule 1 is configured by Ansible
+ protocol: tcp
+ - number: 2
+ action: accept
+ description: Fwipv6-Rule 2 is configured by Ansible
+ protocol: tcp
+ - afi: ipv4
+ rule_sets:
+ - name: INBOUND
+ description: IPv4 INBOUND rule set
+ default_action: accept
+ rules:
+ - number: 101
+ action: reject
+ description: Rule 101 is configured by Ansible
+ protocol: tcp
+ - number: 102
+ action: reject
+ description: Rule 102 is configured by Ansible
+ protocol: tcp
+ - number: 103
+ action: accept
+ description: Rule 103 is configured by Ansible
+ destination:
+ group:
+ address_group: inbound
+ source:
+ address: 192.0.2.0
+ state: "{{ state_dict }}"
+ diff: |-
+ [edit firewall name INBOUND rule 101]
+ >action reject
+
+ [edit]
+
+replaced_diff_02:
+ config:
+ - afi: ipv6
+ rule_sets:
+ - name: UPLINK
+ description: This is ipv6 specific rule-set
+ default_action: accept
+ rules:
+ - number: 1
+ action: accept
+ description: Fwipv6-Rule 1 is configured by Ansible
+ protocol: tcp
+ - number: 2
+ action: accept
+ description: Fwipv6-Rule 2 is configured by Ansible
+ protocol: tcp
+ - afi: ipv4
+ rule_sets:
+ - name: INBOUND
+ description: IPv4 INBOUND rule set
+ default_action: accept
+ rules:
+ - number: 101
+ action: reject
+ description: Rule 101 is configured by Ansible
+ protocol: tcp
+ - number: 102
+ action: accept
+ description: Rule 102 is configured by Ansible
+ protocol: udp
+ - number: 103
+ action: accept
+ description: Rule 103 is configured by Ansible
+ destination:
+ group:
+ address_group: inbound
+ source:
+ address: 192.0.2.0
+ state: "{{ state_dict }}"
+ diff: |-
+ [edit firewall name INBOUND rule 102]
+ >action accept
+ >protocol udp
+
+ [edit]
+
+replaced_diff_03:
+ config:
+ - afi: ipv6
+ rule_sets:
+ - name: UPLINK
+ description: This is ipv6 specific rule-set
+ default_action: accept
+ rules:
+ - number: 1
+ action: reject
+ description: Fwipv6-Rule 1 is configured by Ansible
+ protocol: udp
+ - number: 2
+ action: accept
+ description: Fwipv6-Rule 2 is configured by Ansible
+ protocol: tcp
+ - afi: ipv4
+ rule_sets:
+ - name: INBOUND
+ description: IPv4 INBOUND rule set
+ default_action: accept
+ rules:
+ - number: 101
+ action: reject
+ description: Rule 101 is configured by Ansible
+ protocol: tcp
+ - number: 102
+ action: accept
+ description: Rule 102 is configured by Ansible
+ protocol: tcp
+ - number: 103
+ action: accept
+ description: Rule 103 is configured by Ansible
+ destination:
+ group:
+ address_group: inbound
+ source:
+ address: 192.0.2.0
+ state: "{{ state_dict }}"
+ diff: |-
+ [edit firewall ipv6-name UPLINK rule 1]
+ >action reject
+ >protocol udp
+ [edit firewall name INBOUND rule 102]
+ >protocol tcp
+
+ [edit]
diff --git a/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml b/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml
index 08675983..20ee461b 100644
--- a/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml
+++ b/tests/integration/targets/vyos_firewall_rules/vars/v1_4.yaml
@@ -120,3 +120,151 @@ deleted_afi_all:
state_dict:
established: true
related: true
+
+replaced_diff_01:
+ config:
+ - afi: ipv6
+ rule_sets:
+ - name: UPLINK
+ description: This is ipv6 specific rule-set
+ default_action: accept
+ rules:
+ - number: 1
+ action: accept
+ description: Fwipv6-Rule 1 is configured by Ansible
+ protocol: tcp
+ - number: 2
+ action: accept
+ description: Fwipv6-Rule 2 is configured by Ansible
+ protocol: tcp
+ - afi: ipv4
+ rule_sets:
+ - name: INBOUND
+ description: IPv4 INBOUND rule set
+ default_action: accept
+ rules:
+ - number: 101
+ action: reject
+ description: Rule 101 is configured by Ansible
+ protocol: tcp
+ - number: 102
+ action: reject
+ description: Rule 102 is configured by Ansible
+ protocol: tcp
+ - number: 103
+ action: accept
+ description: Rule 103 is configured by Ansible
+ destination:
+ group:
+ address_group: inbound
+ source:
+ address: 192.0.2.0
+ state: "{{ state_dict }}"
+ diff: |-
+ [firewall ipv4 name INBOUND rule 101]
+ - action \"accept\"
+ + action \"reject\"
+
+
+ [edit]
+
+replaced_diff_02:
+ config:
+ - afi: ipv6
+ rule_sets:
+ - name: UPLINK
+ description: This is ipv6 specific rule-set
+ default_action: accept
+ rules:
+ - number: 1
+ action: accept
+ description: Fwipv6-Rule 1 is configured by Ansible
+ protocol: tcp
+ - number: 2
+ action: accept
+ description: Fwipv6-Rule 2 is configured by Ansible
+ protocol: tcp
+ - afi: ipv4
+ rule_sets:
+ - name: INBOUND
+ description: IPv4 INBOUND rule set
+ default_action: accept
+ rules:
+ - number: 101
+ action: reject
+ description: Rule 101 is configured by Ansible
+ protocol: tcp
+ - number: 102
+ action: accept
+ description: Rule 102 is configured by Ansible
+ protocol: udp
+ - number: 103
+ action: accept
+ description: Rule 103 is configured by Ansible
+ destination:
+ group:
+ address_group: inbound
+ source:
+ address: 192.0.2.0
+ state: "{{ state_dict }}"
+ diff: |-
+ [firewall ipv4 name INBOUND rule 102]
+ - action \"reject\"
+ + action \"accept\"
+ - protocol \"tcp\"
+ + protocol \"udp\"
+
+
+ [edit]
+
+replaced_diff_03:
+ config:
+ - afi: ipv6
+ rule_sets:
+ - name: UPLINK
+ description: This is ipv6 specific rule-set
+ default_action: accept
+ rules:
+ - number: 1
+ action: reject
+ description: Fwipv6-Rule 1 is configured by Ansible
+ protocol: udp
+ - number: 2
+ action: accept
+ description: Fwipv6-Rule 2 is configured by Ansible
+ protocol: tcp
+ - afi: ipv4
+ rule_sets:
+ - name: INBOUND
+ description: IPv4 INBOUND rule set
+ default_action: accept
+ rules:
+ - number: 101
+ action: reject
+ description: Rule 101 is configured by Ansible
+ protocol: tcp
+ - number: 102
+ action: accept
+ description: Rule 102 is configured by Ansible
+ protocol: tcp
+ - number: 103
+ action: accept
+ description: Rule 103 is configured by Ansible
+ destination:
+ group:
+ address_group: inbound
+ source:
+ address: 192.0.2.0
+ state: "{{ state_dict }}"
+ diff: |-
+ [firewall ipv4 name INBOUND rule 102]
+ - protocol \"udp\"
+ + protocol \"tcp\"
+ [firewall ipv6 name UPLINK rule 1]
+ - action \"accept\"
+ + action \"reject\"
+ - protocol \"tcp\"
+ + protocol \"udp\"
+
+
+ [edit]
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
index 45bd9b6a..cbc994ba 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/_populate.yaml
@@ -9,6 +9,8 @@
config: |-
{% for intf in ('eth1','eth2') %}
set interfaces ethernet "{{ intf }}" description 'Configured by Ansible'
+ set interfaces ethernet "{{ intf }}" speed 'auto'
+ set interfaces ethernet "{{ intf }}" duplex 'auto'
set interfaces ethernet "{{ intf }}" mtu '1500'
set interfaces ethernet "{{ intf }}" vif 200
set interfaces ethernet "{{ intf }}" vif 200 description 'VIF - 200'
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml
index 620bf53f..9f0734b4 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/deleted.yaml
@@ -17,17 +17,17 @@
- name: Assert that the before dicts were correctly generated
assert:
that:
- - "{{ populate | symmetric_difference(result['before']) |length == 0 }}"
+ - populate | symmetric_difference(result['before']) |length == 0
- name: Assert that the correct set of commands were generated
assert:
that:
- - "{{ deleted['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
+ - deleted['commands'] | symmetric_difference(result['commands']) |length == 0
- name: Assert that the after dicts were correctly generated
assert:
that:
- - "{{ deleted['after'] | symmetric_difference(result['after']) |length == 0 }}"
+ - deleted['after'] | symmetric_difference(result['after']) |length == 0
- name: Delete attributes of given interfaces (IDEMPOTENT)
register: result
@@ -41,6 +41,6 @@
- name: Assert that the before dicts were correctly generated
assert:
that:
- - "{{ deleted['after'] | symmetric_difference(result['before']) |length == 0 }}"
+ - deleted['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/gathered.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/gathered.yaml
index 88e53762..46a0e166 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/gathered.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/gathered.yaml
@@ -14,7 +14,7 @@
- name: Assert that gathered dicts was correctly generated
assert:
that:
- - "{{ populate | symmetric_difference(result['gathered']) |length == 0 }}"
+ - populate | symmetric_difference(result['gathered']) |length == 0
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml
index 5c719b39..decdeca2 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/merged.yaml
@@ -12,6 +12,8 @@
- name: eth1
description: Configured by Ansible - Interface 1
mtu: 1500
+ speed: auto
+ duplex: auto
vifs:
- vlan_id: 100
description: Eth1 - VIF 100
@@ -28,17 +30,17 @@
- name: Assert that before dicts were correctly generated
assert:
- that: "{{ merged['before'] | symmetric_difference(result['before']) |length == 0 }}"
+ that: merged['before'] | symmetric_difference(result['before']) |length == 0
- name: Assert that correct set of commands were generated
assert:
that:
- - "{{ merged['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
+ - merged['commands'] | symmetric_difference(result['commands']) |length == 0
- name: Assert that after dicts was correctly generated
assert:
that:
- - "{{ merged['after'] | symmetric_difference(result['after']) |length == 0 }}"
+ - merged['after'] | symmetric_difference(result['after']) |length == 0
- name: Merge the provided configuration with the existing running configuration (IDEMPOTENT)
register: result
@@ -52,6 +54,6 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- - "{{ merged['after'] | symmetric_difference(result['before']) |length == 0 }}"
+ - merged['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml
index 7e86d3e4..5d87ab68 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/overridden.yaml
@@ -21,17 +21,17 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- - "{{ populate | symmetric_difference(result['before']) |length == 0 }}"
+ - populate | symmetric_difference(result['before']) |length == 0
- name: Assert that correct commands were generated
assert:
that:
- - "{{ overridden['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
+ - overridden['commands'] | symmetric_difference(result['commands']) |length == 0
- name: Assert that after dicts were correctly generated
assert:
that:
- - "{{ overridden['after'] | symmetric_difference(result['after']) |length == 0 }}"
+ - overridden['after'] | symmetric_difference(result['after']) |length == 0
- name: Overrides all device configuration with provided configurations (IDEMPOTENT)
register: result
@@ -45,6 +45,6 @@
- name: Assert that before dicts were correctly generated
assert:
that:
- - "{{ overridden['after'] | symmetric_difference(result['before']) |length == 0 }}"
+ - overridden['after'] | symmetric_difference(result['before']) |length == 0
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/parsed.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/parsed.yaml
index 0ebfd322..329d6b50 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/parsed.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/parsed.yaml
@@ -11,4 +11,4 @@
- name: Assert that config was correctly parsed
assert:
that:
- - "{{ parsed['after'] | symmetric_difference(result['parsed']) |length == 0 }}"
+ - parsed['after'] | symmetric_difference(result['parsed']) |length == 0
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml
index c03347fa..7b66c50e 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/rendered.yaml
@@ -11,9 +11,13 @@
config:
- name: eth0
enabled: true
+ duplex: auto
+ speed: auto
- name: eth1
description: Configured by Ansible - Interface 1
mtu: 1500
+ duplex: auto
+ speed: auto
enabled: true
vifs:
- vlan_id: 100
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
index 9d0a3a8b..5cfa4523 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/replaced.yaml
@@ -25,17 +25,11 @@
that:
- replaced['commands'] | symmetric_difference(result['commands']) |length == 0
- - debug:
- var: populate | symmetric_difference(result['before'])
-
- name: Assert that before dicts are correctly generated
assert:
that:
- populate | symmetric_difference(result['before']) |length == 0
- - debug:
- var: replaced['after'] | symmetric_difference(result['after'])
-
- name: Assert that after dict is correctly generated
assert:
that:
diff --git a/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml b/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml
index cfe1b0f0..e6753cba 100644
--- a/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml
+++ b/tests/integration/targets/vyos_interfaces/tests/cli/rtt.yaml
@@ -11,6 +11,8 @@
config:
- name: eth0
enabled: true
+ duplex: auto
+ speed: auto
- name: eth1
description: Interface - 1
@@ -62,7 +64,7 @@
- name: Assert that changes were applied
assert:
- that: "{{ round_trip['after'] | symmetric_difference(result['after']) |length == 0 }}"
+ that: round_trip['after'] | symmetric_difference(result['after']) |length == 0
- name: Revert back to base config using facts round trip
register: revert
@@ -72,6 +74,6 @@
- name: Assert that config was reverted
assert:
- that: "{{ base_config['after'] | symmetric_difference(revert['after']) |length == 0 }}"
+ that: base_config['after'] | symmetric_difference(revert['after']) |length == 0
always:
- include_tasks: _remove_config.yaml
diff --git a/tests/integration/targets/vyos_interfaces/vars/main.yaml b/tests/integration/targets/vyos_interfaces/vars/main.yaml
index 4e66747b..c65771f2 100644
--- a/tests/integration/targets/vyos_interfaces/vars/main.yaml
+++ b/tests/integration/targets/vyos_interfaces/vars/main.yaml
@@ -12,6 +12,8 @@ merged:
commands:
- set interfaces ethernet eth1 description 'Configured by Ansible - Interface 1'
- set interfaces ethernet eth1 mtu '1500'
+ - set interfaces ethernet eth1 duplex 'auto'
+ - set interfaces ethernet eth1 speed 'auto'
- set interfaces ethernet eth1 vif 100 description 'Eth1 - VIF 100'
- set interfaces ethernet eth1 vif 100 mtu '1404'
- set interfaces ethernet eth1 vif 101 description 'Eth1 - VIF 101'
@@ -27,6 +29,8 @@ merged:
description: Configured by Ansible - Interface 1
mtu: 1500
enabled: true
+ duplex: auto
+ speed: auto
vifs:
- vlan_id: 100
description: Eth1 - VIF 100
@@ -44,6 +48,8 @@ populate:
enabled: true
description: Configured by Ansible
mtu: 1500
+ duplex: auto
+ speed: auto
vifs:
- vlan_id: 200
enabled: true
@@ -52,6 +58,8 @@ populate:
enabled: true
description: Configured by Ansible
mtu: 1500
+ duplex: auto
+ speed: auto
vifs:
- vlan_id: 200
enabled: true
@@ -63,10 +71,14 @@ populate:
replaced:
commands:
- delete interfaces ethernet eth1 mtu
+ - delete interfaces ethernet eth1 speed
+ - delete interfaces ethernet eth1 duplex
- delete interfaces ethernet eth1 vif 200
- set interfaces ethernet eth1 description 'Replaced by Ansible'
- set interfaces ethernet eth1 vif 100 description 'VIF 100 - Replaced by Ansible'
- delete interfaces ethernet eth2 vif 200
+ - delete interfaces ethernet eth2 speed
+ - delete interfaces ethernet eth2 duplex
- set interfaces ethernet eth2 description 'Replaced by Ansible'
- set interfaces ethernet eth2 mtu '1400'
after:
@@ -107,8 +119,12 @@ overridden:
commands:
- delete interfaces ethernet eth1 description
- delete interfaces ethernet eth1 mtu
+ - delete interfaces ethernet eth1 speed
+ - delete interfaces ethernet eth1 duplex
- delete interfaces ethernet eth1 vif 200
- delete interfaces ethernet eth2 vif 200
+ - delete interfaces ethernet eth2 speed
+ - delete interfaces ethernet eth2 duplex
- set interfaces ethernet eth2 description 'Overridden by Ansible'
- set interfaces ethernet eth2 mtu '1402'
after:
@@ -124,6 +140,10 @@ overridden:
mtu: 1402
rendered:
commands:
+ - set interfaces ethernet eth0 duplex 'auto'
+ - set interfaces ethernet eth0 speed 'auto'
+ - set interfaces ethernet eth1 duplex 'auto'
+ - set interfaces ethernet eth1 speed 'auto'
- set interfaces ethernet eth1 description 'Configured by Ansible - Interface 1'
- set interfaces ethernet eth1 mtu '1500'
- set interfaces ethernet eth1 vif 100 description 'Eth1 - VIF 100'
@@ -137,9 +157,13 @@ deleted:
- delete interfaces ethernet eth1 description
- delete interfaces ethernet eth1 mtu
- delete interfaces ethernet eth1 vif 200
+ - delete interfaces ethernet eth1 speed
+ - delete interfaces ethernet eth1 duplex
- delete interfaces ethernet eth2 description
- delete interfaces ethernet eth2 mtu
- delete interfaces ethernet eth2 vif 200
+ - delete interfaces ethernet eth2 speed
+ - delete interfaces ethernet eth2 duplex
after:
- name: eth0
enabled: true
@@ -149,6 +173,7 @@ deleted:
enabled: true
- name: eth2
enabled: true
+
round_trip:
after:
- name: eth0
diff --git a/tests/integration/targets/vyos_logging_global/tests/cli/_populate.yaml b/tests/integration/targets/vyos_logging_global/tests/cli/_populate.yaml
index 89fb8e51..a17021b4 100644
--- a/tests/integration/targets/vyos_logging_global/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_logging_global/tests/cli/_populate.yaml
@@ -1,4 +1,5 @@
---
+- ansible.builtin.include_tasks: _get_version.yaml
- ansible.builtin.include_tasks: _remove_config.yaml
- name: POPULATE Apply the provided configuration
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tasks/post_tasks.yml b/tests/integration/targets/vyos_ospf_interfaces/tasks/post_tasks.yml
index 0883ef48..f6b009a8 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tasks/post_tasks.yml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tasks/post_tasks.yml
@@ -3,5 +3,7 @@
vyos.vyos.vyos_config:
lines: |-
delete interfaces bonding bond2
+ delete interfaces ethernet eth2 vif 3
+ delete interfaces ethernet eth2 vif 18
vars:
ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tasks/pre_tasks.yml b/tests/integration/targets/vyos_ospf_interfaces/tasks/pre_tasks.yml
index af74ff7a..fdb4981c 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tasks/pre_tasks.yml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tasks/pre_tasks.yml
@@ -3,5 +3,7 @@
vyos.vyos.vyos_config:
lines: |-
set interfaces bonding bond2
+ set interfaces ethernet eth2 vif 3
+ set interfaces ethernet eth2 vif 18
vars:
ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/_get_version.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/_get_version.yaml
index a7691499..50b0ec61 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/_get_version.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/_get_version.yaml
@@ -26,6 +26,5 @@
- name: include correct vars
include_vars: v1_4.yaml
when: vyos_version is version('1.4.0', '>=', version_type='semver')
-
# - name: include common vars
# include_vars: main.yaml
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/deleted.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/deleted.yaml
index 59fe52ac..bd70d071 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/deleted.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/deleted.yaml
@@ -17,7 +17,6 @@
- assert:
that:
- - result.commands|length == 2
- result.changed == true
- result.commands|symmetric_difference(deleted.commands) == []
- result.after|symmetric_difference(ansible_facts['network_resources']['ospf_interfaces']) == []
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/merged.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/merged.yaml
index 7b091dd7..ddff03c9 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/merged.yaml
@@ -17,6 +17,11 @@
- afi: ipv6
mtu_ignore: true
instance: 33
+ - name: eth2.3
+ address_family:
+ - afi: ipv4
+ cost: 60
+ priority: 40
- name: bond2
address_family:
- afi: ipv4
@@ -30,7 +35,6 @@
- assert:
that:
- - result.commands|length == 6
- result.changed == true
- result.commands|symmetric_difference(merged.commands) == []
- result.after|symmetric_difference(ansible_facts['network_resources']['ospf_interfaces']) == []
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/overridden.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/overridden.yaml
index 7e728069..252336fc 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/overridden.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/overridden.yaml
@@ -24,7 +24,6 @@
- assert:
that:
- - result.commands|length == 8
- result.changed == true
- result.commands|symmetric_difference(overridden.commands) == []
- result.after|symmetric_difference(ansible_facts['network_resources']['ospf_interfaces']) == []
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rendered.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rendered.yaml
index 4cb5f4f9..5a07c95d 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rendered.yaml
@@ -17,6 +17,11 @@
- afi: ipv6
mtu_ignore: true
instance: 33
+ - name: eth2.3
+ address_family:
+ - afi: ipv4
+ cost: 60
+ priority: 40
- name: bond2
address_family:
- afi: ipv4
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/replaced.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/replaced.yaml
index 2bb8a02f..7a5b9fa8 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/replaced.yaml
@@ -35,7 +35,6 @@
- assert:
that:
- - result.commands|length == 8
- result.changed == true
- result.commands|symmetric_difference(replaced.commands) == []
- result.after|symmetric_difference(ansible_facts['network_resources']['ospf_interfaces']) == []
diff --git a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rtt.yaml b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rtt.yaml
index c74248e0..e2464457 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rtt.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/tests/cli/rtt.yaml
@@ -19,6 +19,11 @@
- afi: ipv6
mtu_ignore: true
instance: 33
+ - name: eth2.3
+ address_family:
+ - afi: ipv4
+ cost: 60
+ priority: 40
- name: bond2
address_family:
- afi: ipv4
@@ -32,7 +37,6 @@
- assert:
that:
- - baseconfig.commands|length == 6
- baseconfig.changed == true
- baseconfig.commands|symmetric_difference(merged.commands) == []
- baseconfig.after|symmetric_difference(ansible_facts['network_resources']['ospf_interfaces']) == []
diff --git a/tests/integration/targets/vyos_ospf_interfaces/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_ospf_interfaces/vars/pre-v1_4.yaml
index a9e03421..7f84e92e 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/vars/pre-v1_4.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/vars/pre-v1_4.yaml
@@ -4,6 +4,8 @@ merged_commands:
- set interfaces ethernet eth0 ip ospf priority 26
- set interfaces ethernet eth0 ipv6 ospfv3 mtu-ignore
- set interfaces ethernet eth0 ipv6 ospfv3 instance-id 33
+ - set interfaces ethernet eth2 vif 3 ip ospf cost 60
+ - set interfaces ethernet eth2 vif 3 ip ospf priority 40
- set interfaces bonding bond2 ip ospf transmit-delay 45
- set interfaces bonding bond2 ipv6 ospfv3 passive
@@ -12,6 +14,7 @@ populate_commands:
- set interfaces ethernet eth0 ip ospf priority 26
- set interfaces ethernet eth0 ipv6 ospfv3 mtu-ignore
- set interfaces ethernet eth0 ipv6 ospfv3 instance-id 33
+ - set interfaces ethernet eth2 vif 18 ip ospf cost 80
- set interfaces bonding bond2 ip ospf transmit-delay 45
- set interfaces bonding bond2 ipv6 ospfv3 passive
@@ -20,6 +23,7 @@ remove_commands:
- delete interfaces ethernet eth0 ipv6 ospfv3
- delete interfaces ethernet eth1 ip ospf
- delete interfaces ethernet eth1 ipv6 ospfv3
+ - delete interfaces ethernet eth2 vif 3 ip ospf
- delete interfaces bonding bond1 ip ospf
- delete interfaces bonding bond1 ipv6 ospfv3
- delete interfaces bonding bond2 ip ospf
@@ -41,6 +45,7 @@ replaced_commands:
overridden_commands:
- delete interfaces bonding bond2 ip ospf
- delete interfaces bonding bond2 ipv6 ospfv3
+ - delete interfaces ethernet eth2 vif 18 ip ospf
- set interfaces ethernet eth0 ip ospf transmit-delay 50
- set interfaces ethernet eth0 ip ospf network point-to-point
- set interfaces ethernet eth0 ipv6 ospfv3 dead-interval 39
diff --git a/tests/integration/targets/vyos_ospf_interfaces/vars/v1_4.yaml b/tests/integration/targets/vyos_ospf_interfaces/vars/v1_4.yaml
index 15b7f5a7..3864f33a 100644
--- a/tests/integration/targets/vyos_ospf_interfaces/vars/v1_4.yaml
+++ b/tests/integration/targets/vyos_ospf_interfaces/vars/v1_4.yaml
@@ -4,6 +4,8 @@ merged_commands:
- set protocols ospf interface eth0 priority 26
- set protocols ospfv3 interface eth0 mtu-ignore
- set protocols ospfv3 interface eth0 instance-id 33
+ - set protocols ospf interface eth2.3 cost 60
+ - set protocols ospf interface eth2.3 priority 40
- set protocols ospfv3 interface bond2 passive
- set protocols ospf interface bond2 transmit-delay 45
@@ -12,11 +14,13 @@ populate_commands:
- set protocols ospf interface eth0 priority 26
- set protocols ospfv3 interface eth0 mtu-ignore
- set protocols ospfv3 interface eth0 instance-id 33
+ - set protocols ospf interface eth2.18 cost 80
- set protocols ospfv3 interface bond2 passive
- set protocols ospf interface bond2 transmit-delay 45
remove_commands:
- delete protocols ospf interface eth0
+ - delete protocols ospf interface eth2.3
- delete protocols ospf interface bond2
- delete protocols ospfv3 interface bond2
- delete protocols ospfv3 interface eth0
@@ -36,6 +40,7 @@ replaced_commands:
overridden_commands:
- delete protocols ospf interface bond2
- delete protocols ospfv3 interface bond2
+ - delete protocols ospf interface eth2.18
- set protocols ospf interface eth0 transmit-delay 50
- set protocols ospf interface eth0 network point-to-point
- set protocols ospfv3 interface eth0 dead-interval 39
diff --git a/tests/integration/targets/vyos_ospfv2/tasks/main.yaml b/tests/integration/targets/vyos_ospfv2/tasks/main.yaml
index 9a3359ed..53afd6c2 100644
--- a/tests/integration/targets/vyos_ospfv2/tasks/main.yaml
+++ b/tests/integration/targets/vyos_ospfv2/tasks/main.yaml
@@ -1,4 +1,8 @@
---
+- name: Run preflight setup
+ ansible.builtin.import_tasks: pre_tasks.yaml
+ failed_when: false
+
- name: Run CLI tests
ansible.builtin.include_tasks: cli.yaml
tags:
@@ -9,3 +13,7 @@
when: ansible_version.full is version('2.10.0', '>=')
tags:
- network_cli
+
+- name: Run post-test cleanup tasks
+ ansible.builtin.import_tasks: post_tasks.yaml
+ failed_when: false
diff --git a/tests/integration/targets/vyos_ospfv2/tasks/post_tasks.yaml b/tests/integration/targets/vyos_ospfv2/tasks/post_tasks.yaml
new file mode 100644
index 00000000..e172db2d
--- /dev/null
+++ b/tests/integration/targets/vyos_ospfv2/tasks/post_tasks.yaml
@@ -0,0 +1,7 @@
+---
+- name: Remove pre-requisite configuration
+ vyos.vyos.vyos_config:
+ lines: |-
+ delete policy route-map ingress
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_ospfv2/tasks/pre_tasks.yaml b/tests/integration/targets/vyos_ospfv2/tasks/pre_tasks.yaml
new file mode 100644
index 00000000..bdca8772
--- /dev/null
+++ b/tests/integration/targets/vyos_ospfv2/tasks/pre_tasks.yaml
@@ -0,0 +1,7 @@
+---
+- name: Add pre-requisite configuration
+ vyos.vyos.vyos_config:
+ lines: |-
+ set policy route-map ingress
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_ospfv2/tests/cli/_get_version.yaml b/tests/integration/targets/vyos_ospfv2/tests/cli/_get_version.yaml
new file mode 100644
index 00000000..50b0ec61
--- /dev/null
+++ b/tests/integration/targets/vyos_ospfv2/tests/cli/_get_version.yaml
@@ -0,0 +1,30 @@
+- 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')
+# - name: include common vars
+# include_vars: main.yaml
diff --git a/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config.cfg b/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_3.cfg
index 9cc720b4..0d8100d8 100644
--- a/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config.cfg
+++ b/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_3.cfg
@@ -1,6 +1,6 @@
set protocols ospf area 2 area-type 'normal'
set protocols ospf area 2 authentication 'plaintext-password'
-set protocols ospf area 2 shortcut 'enable'
+set protocols ospf area 2 shortcut enable
set protocols ospf area 3 area-type 'nssa'
set protocols ospf area 4 area-type stub default-cost '20'
set protocols ospf area 4 network '192.0.2.0/24'
@@ -15,7 +15,7 @@ set protocols ospf log-adjacency-changes 'detail'
set protocols ospf max-metric router-lsa 'administrative'
set protocols ospf max-metric router-lsa on-shutdown '10'
set protocols ospf max-metric router-lsa on-startup '10'
-set protocols ospf mpls-te 'enable'
+set protocols ospf mpls-te enable
set protocols ospf mpls-te router-address '192.0.11.11'
set protocols ospf neighbor 192.0.11.12 poll-interval '10'
set protocols ospf neighbor 192.0.11.12 priority '2'
diff --git a/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_4.cfg b/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_4.cfg
new file mode 100644
index 00000000..8e24ab69
--- /dev/null
+++ b/tests/integration/targets/vyos_ospfv2/tests/cli/_parsed_config_1_4.cfg
@@ -0,0 +1,29 @@
+set protocols ospf area 2 area-type 'normal'
+set protocols ospf area 2 authentication 'plaintext-password'
+set protocols ospf area 2 shortcut enable
+set protocols ospf area 3 area-type 'nssa'
+set protocols ospf area 4 area-type stub default-cost '20'
+set protocols ospf area 4 network '192.0.2.0/24'
+set protocols ospf area 4 range 192.0.3.0/24 cost '10'
+set protocols ospf area 4 range 192.0.4.0/24 cost '12'
+set protocols ospf auto-cost reference-bandwidth '2'
+set protocols ospf default-information originate 'always'
+set protocols ospf default-information originate metric '10'
+set protocols ospf default-information originate metric-type '2'
+set protocols ospf default-information originate route-map 'ingress'
+set protocols ospf log-adjacency-changes 'detail'
+set protocols ospf max-metric router-lsa 'administrative'
+set protocols ospf max-metric router-lsa on-shutdown '10'
+set protocols ospf max-metric router-lsa on-startup '10'
+set protocols ospf mpls-te enable
+set protocols ospf mpls-te router-address '192.0.11.11'
+set protocols ospf neighbor 192.0.11.12 poll-interval '10'
+set protocols ospf neighbor 192.0.11.12 priority '2'
+set protocols ospf parameters abr-type 'cisco'
+set protocols ospf parameters 'opaque-lsa'
+set protocols ospf parameters 'rfc1583-compatibility'
+set protocols ospf parameters router-id '192.0.1.1'
+set protocols ospf interface 'eth1' passive
+set protocols ospf interface 'eth2' passive
+set protocols ospf redistribute bgp metric '10'
+set protocols ospf redistribute bgp metric-type '2'
diff --git a/tests/integration/targets/vyos_ospfv2/tests/cli/_populate.yaml b/tests/integration/targets/vyos_ospfv2/tests/cli/_populate.yaml
index 872d3302..748dca70 100644
--- a/tests/integration/targets/vyos_ospfv2/tests/cli/_populate.yaml
+++ b/tests/integration/targets/vyos_ospfv2/tests/cli/_populate.yaml
@@ -1,37 +1,11 @@
---
- ansible.builtin.include_tasks: _remove_config.yaml
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
- name: Setup
+ vyos.vyos.vyos_config:
+ lines: "{{ populate_commands }}"
vars:
- lines: >-
- "set protocols ospf mpls-te 'enable'
- \n set protocols ospf mpls-te router-address '192.0.11.11'
- \n set protocols ospf redistribute bgp metric-type '2'
- \n set protocols ospf redistribute bgp metric '10'
- \n set protocols ospf default-information originate metric-type '2'
- \n set protocols ospf default-information originate 'always'
- \n set protocols ospf default-information originate metric '10'
- \n set protocols ospf default-information originate route-map 'ingress'
- \n set protocols ospf auto-cost reference-bandwidth '2'
- \n set protocols ospf parameters router-id '192.0.1.1'
- \n set protocols ospf parameters 'opaque-lsa'
- \n set protocols ospf parameters abr-type 'cisco'
- \n set protocols ospf parameters 'rfc1583-compatibility'
- \n set protocols ospf passive-interface 'eth1'
- \n set protocols ospf passive-interface 'eth2'
- \n set protocols ospf max-metric router-lsa on-shutdown '10'
- \n set protocols ospf max-metric router-lsa 'administrative'
- \n set protocols ospf max-metric router-lsa on-startup '10'
- \n set protocols ospf log-adjacency-changes 'detail'
- \n set protocols ospf neighbor 192.0.11.12 priority '2'
- \n set protocols ospf neighbor 192.0.11.12 poll-interval '10'
- \n set protocols ospf area 2 authentication 'plaintext-password'
- \n set protocols ospf area 2 shortcut 'enable'
- \n set protocols ospf area 2 area-type 'normal'
- \n set protocols ospf area 3 area-type 'nssa'
- \n set protocols ospf area 4 range 192.0.3.0/24 cost '10'
- \n set protocols ospf area 4 range 192.0.4.0/24 cost '12'
- \n set protocols ospf area 4 area-type stub default-cost '20'
- \n set protocols ospf area 4 network '192.0.2.0/24'"
- ansible.netcommon.cli_config:
- config: "{{ lines }}"
+ ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_ospfv2/tests/cli/parsed.yaml b/tests/integration/targets/vyos_ospfv2/tests/cli/parsed.yaml
index ad5b005d..4b6e0c5c 100644
--- a/tests/integration/targets/vyos_ospfv2/tests/cli/parsed.yaml
+++ b/tests/integration/targets/vyos_ospfv2/tests/cli/parsed.yaml
@@ -2,12 +2,18 @@
- debug:
msg: START vyos_ospfv2 parsed integration tests on connection={{ ansible_connection }}
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
- name: Parse externally provided ospfv2 config to agnostic model
register: result
vyos.vyos.vyos_ospfv2:
- running_config: "{{ lookup('file', '_parsed_config.cfg') }}"
+ running_config: "{{ lookup('file', parsed_config_file) }}"
state: parsed
+- debug:
+ msg: "{{ parsed['after'] }}"
+
- name: Assert that config was correctly parsed
assert:
that:
diff --git a/tests/integration/targets/vyos_ospfv2/vars/main.yaml b/tests/integration/targets/vyos_ospfv2/vars/main.yaml
index 70d25fc7..1f1b9ba8 100644
--- a/tests/integration/targets/vyos_ospfv2/vars/main.yaml
+++ b/tests/integration/targets/vyos_ospfv2/vars/main.yaml
@@ -1,43 +1,7 @@
---
merged:
before: {}
- commands:
- - set protocols ospf mpls-te enable
- - set protocols ospf mpls-te router-address '192.0.11.11'
- - set protocols ospf redistribute bgp
- - set protocols ospf redistribute bgp metric-type 2
- - set protocols ospf redistribute bgp metric 10
- - set protocols ospf default-information originate metric-type 2
- - set protocols ospf default-information originate always
- - set protocols ospf default-information originate metric 10
- - set protocols ospf default-information originate route-map ingress
- - set protocols ospf auto-cost reference-bandwidth '2'
- - set protocols ospf parameters router-id '192.0.1.1'
- - set protocols ospf parameters opaque-lsa
- - set protocols ospf parameters abr-type 'cisco'
- - set protocols ospf parameters rfc1583-compatibility
- - set protocols ospf passive-interface eth1
- - set protocols ospf passive-interface eth2
- - set protocols ospf max-metric router-lsa on-shutdown 10
- - set protocols ospf max-metric router-lsa administrative
- - set protocols ospf max-metric router-lsa on-startup 10
- - set protocols ospf log-adjacency-changes 'detail'
- - set protocols ospf neighbor 192.0.11.12 priority 2
- - set protocols ospf neighbor 192.0.11.12 poll-interval 10
- - set protocols ospf neighbor 192.0.11.12
- - set protocols ospf area '2'
- - set protocols ospf area 2 authentication plaintext-password
- - set protocols ospf area 2 shortcut enable
- - set protocols ospf area 2 area-type normal
- - set protocols ospf area '3'
- - set protocols ospf area 3 area-type nssa
- - set protocols ospf area 4 range 192.0.3.0/24 cost 10
- - set protocols ospf area 4 range 192.0.3.0/24
- - set protocols ospf area 4 range 192.0.4.0/24 cost 12
- - set protocols ospf area 4 range 192.0.4.0/24
- - set protocols ospf area 4 area-type stub default-cost 20
- - set protocols ospf area '4'
- - set protocols ospf area 4 network 192.0.2.0/24
+ commands: "{{ merged_commands }}"
after:
areas:
- area_id: "2"
@@ -94,6 +58,7 @@ merged:
- metric: 10
metric_type: 2
route_type: bgp
+
merged_update:
before:
areas:
@@ -209,6 +174,7 @@ merged_update:
- delete protocols ospf area 4 area-type stub
- set protocols ospf area 4 network 192.0.22.0/24
- set protocols ospf area 4 network 192.0.32.0/24
+
populate:
areas:
- area_id: "2"
@@ -265,20 +231,9 @@ populate:
- metric: 10
metric_type: 2
route_type: bgp
+
replaced:
- commands:
- - delete protocols ospf passive-interface eth2
- - delete protocols ospf area 3
- - delete protocols ospf area 4 range 192.0.3.0/24 cost
- - delete protocols ospf area 4 range 192.0.3.0/24
- - delete protocols ospf area 4 range 192.0.4.0/24 cost
- - delete protocols ospf area 4 range 192.0.4.0/24
- - set protocols ospf mpls-te router-address '192.0.22.22'
- - set protocols ospf area 4 range 1.1.2.0/24 cost 10
- - set protocols ospf area 4 range 1.1.2.0/24
- - set protocols ospf area 4 network 192.0.12.0/24
- - set protocols ospf area 4 network 192.0.22.0/24
- - set protocols ospf area 4 network 192.0.32.0/24
+ commands: "{{ replaced_commands }}"
after:
areas:
- area_id: "2"
@@ -331,44 +286,10 @@ replaced:
- metric: 10
metric_type: 2
route_type: bgp
+
rendered:
- commands:
- - set protocols ospf mpls-te enable
- - set protocols ospf mpls-te router-address '192.0.11.11'
- - set protocols ospf redistribute bgp
- - set protocols ospf redistribute bgp metric-type 2
- - set protocols ospf redistribute bgp metric 10
- - set protocols ospf default-information originate metric-type 2
- - set protocols ospf default-information originate always
- - set protocols ospf default-information originate metric 10
- - set protocols ospf default-information originate route-map ingress
- - set protocols ospf auto-cost reference-bandwidth '2'
- - set protocols ospf parameters router-id '192.0.1.1'
- - set protocols ospf parameters opaque-lsa
- - set protocols ospf parameters abr-type 'cisco'
- - set protocols ospf parameters rfc1583-compatibility
- - set protocols ospf passive-interface eth1
- - set protocols ospf passive-interface eth2
- - set protocols ospf max-metric router-lsa on-shutdown 10
- - set protocols ospf max-metric router-lsa administrative
- - set protocols ospf max-metric router-lsa on-startup 10
- - set protocols ospf log-adjacency-changes 'detail'
- - set protocols ospf neighbor 192.0.11.12 priority 2
- - set protocols ospf neighbor 192.0.11.12 poll-interval 10
- - set protocols ospf neighbor 192.0.11.12
- - set protocols ospf area '2'
- - set protocols ospf area 2 authentication plaintext-password
- - set protocols ospf area 2 shortcut enable
- - set protocols ospf area 2 area-type normal
- - set protocols ospf area '3'
- - set protocols ospf area 3 area-type nssa
- - set protocols ospf area 4 range 192.0.3.0/24 cost 10
- - set protocols ospf area 4 range 192.0.3.0/24
- - set protocols ospf area 4 range 192.0.4.0/24 cost 12
- - set protocols ospf area 4 range 192.0.4.0/24
- - set protocols ospf area 4 area-type stub default-cost 20
- - set protocols ospf area '4'
- - set protocols ospf area 4 network 192.0.2.0/24
+ commands: "{{ rendered_commands }}"
+
parsed:
after:
areas:
@@ -426,10 +347,12 @@ parsed:
- metric: 10
metric_type: 2
route_type: bgp
+
deleted:
commands:
- delete protocols ospf
after: {}
+
round_trip:
after:
areas:
diff --git a/tests/integration/targets/vyos_ospfv2/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_ospfv2/vars/pre-v1_4.yaml
new file mode 100644
index 00000000..a5e8a725
--- /dev/null
+++ b/tests/integration/targets/vyos_ospfv2/vars/pre-v1_4.yaml
@@ -0,0 +1,123 @@
+---
+merged_commands:
+ - set protocols ospf mpls-te enable
+ - set protocols ospf mpls-te router-address '192.0.11.11'
+ - set protocols ospf redistribute bgp
+ - set protocols ospf redistribute bgp metric-type 2
+ - set protocols ospf redistribute bgp metric 10
+ - set protocols ospf default-information originate metric-type 2
+ - set protocols ospf default-information originate always
+ - set protocols ospf default-information originate metric 10
+ - set protocols ospf default-information originate route-map ingress
+ - set protocols ospf auto-cost reference-bandwidth '2'
+ - set protocols ospf parameters router-id '192.0.1.1'
+ - set protocols ospf parameters opaque-lsa
+ - set protocols ospf parameters abr-type 'cisco'
+ - set protocols ospf parameters rfc1583-compatibility
+ - set protocols ospf passive-interface eth1
+ - set protocols ospf passive-interface eth2
+ - set protocols ospf max-metric router-lsa on-shutdown 10
+ - set protocols ospf max-metric router-lsa administrative
+ - set protocols ospf max-metric router-lsa on-startup 10
+ - set protocols ospf log-adjacency-changes 'detail'
+ - set protocols ospf neighbor 192.0.11.12 priority 2
+ - set protocols ospf neighbor 192.0.11.12 poll-interval 10
+ - set protocols ospf neighbor 192.0.11.12
+ - set protocols ospf area '2'
+ - set protocols ospf area 2 authentication plaintext-password
+ - set protocols ospf area 2 shortcut enable
+ - set protocols ospf area 2 area-type normal
+ - set protocols ospf area '3'
+ - set protocols ospf area 3 area-type nssa
+ - set protocols ospf area 4 range 192.0.3.0/24 cost 10
+ - set protocols ospf area 4 range 192.0.3.0/24
+ - set protocols ospf area 4 range 192.0.4.0/24 cost 12
+ - set protocols ospf area 4 range 192.0.4.0/24
+ - set protocols ospf area 4 area-type stub default-cost 20
+ - set protocols ospf area '4'
+ - set protocols ospf area 4 network 192.0.2.0/24
+
+populate_commands:
+ - set protocols ospf mpls-te 'enable'
+ - set protocols ospf mpls-te router-address '192.0.11.11'
+ - set protocols ospf redistribute bgp metric-type '2'
+ - set protocols ospf redistribute bgp metric '10'
+ - set protocols ospf default-information originate metric-type '2'
+ - set protocols ospf default-information originate 'always'
+ - set protocols ospf default-information originate metric '10'
+ - set protocols ospf default-information originate route-map 'ingress'
+ - set protocols ospf auto-cost reference-bandwidth '2'
+ - set protocols ospf parameters router-id '192.0.1.1'
+ - set protocols ospf parameters 'opaque-lsa'
+ - set protocols ospf parameters abr-type 'cisco'
+ - set protocols ospf parameters 'rfc1583-compatibility'
+ - set protocols ospf passive-interface 'eth1'
+ - set protocols ospf passive-interface 'eth2'
+ - set protocols ospf max-metric router-lsa on-shutdown '10'
+ - set protocols ospf max-metric router-lsa 'administrative'
+ - set protocols ospf max-metric router-lsa on-startup '10'
+ - set protocols ospf log-adjacency-changes 'detail'
+ - set protocols ospf neighbor 192.0.11.12 priority '2'
+ - set protocols ospf neighbor 192.0.11.12 poll-interval '10'
+ - set protocols ospf area 2 authentication 'plaintext-password'
+ - set protocols ospf area 2 shortcut 'enable'
+ - set protocols ospf area 2 area-type 'normal'
+ - set protocols ospf area 3 area-type 'nssa'
+ - set protocols ospf area 4 range 192.0.3.0/24 cost '10'
+ - set protocols ospf area 4 range 192.0.4.0/24 cost '12'
+ - set protocols ospf area 4 area-type stub default-cost '20'
+ - set protocols ospf area 4 network '192.0.2.0/24'
+
+replaced_commands:
+ - delete protocols ospf passive-interface eth2
+ - delete protocols ospf area 3
+ - delete protocols ospf area 4 range 192.0.3.0/24 cost
+ - delete protocols ospf area 4 range 192.0.3.0/24
+ - delete protocols ospf area 4 range 192.0.4.0/24 cost
+ - delete protocols ospf area 4 range 192.0.4.0/24
+ - set protocols ospf mpls-te router-address '192.0.22.22'
+ - set protocols ospf area 4 range 1.1.2.0/24 cost 10
+ - set protocols ospf area 4 range 1.1.2.0/24
+ - set protocols ospf area 4 network 192.0.12.0/24
+ - set protocols ospf area 4 network 192.0.22.0/24
+ - set protocols ospf area 4 network 192.0.32.0/24
+
+rendered_commands:
+ - set protocols ospf mpls-te enable
+ - set protocols ospf mpls-te router-address '192.0.11.11'
+ - set protocols ospf redistribute bgp
+ - set protocols ospf redistribute bgp metric-type 2
+ - set protocols ospf redistribute bgp metric 10
+ - set protocols ospf default-information originate metric-type 2
+ - set protocols ospf default-information originate always
+ - set protocols ospf default-information originate metric 10
+ - set protocols ospf default-information originate route-map ingress
+ - set protocols ospf auto-cost reference-bandwidth '2'
+ - set protocols ospf parameters router-id '192.0.1.1'
+ - set protocols ospf parameters opaque-lsa
+ - set protocols ospf parameters abr-type 'cisco'
+ - set protocols ospf parameters rfc1583-compatibility
+ - set protocols ospf passive-interface eth1
+ - set protocols ospf passive-interface eth2
+ - set protocols ospf max-metric router-lsa on-shutdown 10
+ - set protocols ospf max-metric router-lsa administrative
+ - set protocols ospf max-metric router-lsa on-startup 10
+ - set protocols ospf log-adjacency-changes 'detail'
+ - set protocols ospf neighbor 192.0.11.12 priority 2
+ - set protocols ospf neighbor 192.0.11.12 poll-interval 10
+ - set protocols ospf neighbor 192.0.11.12
+ - set protocols ospf area '2'
+ - set protocols ospf area 2 authentication plaintext-password
+ - set protocols ospf area 2 shortcut enable
+ - set protocols ospf area 2 area-type normal
+ - set protocols ospf area '3'
+ - set protocols ospf area 3 area-type nssa
+ - set protocols ospf area 4 range 192.0.3.0/24 cost 10
+ - set protocols ospf area 4 range 192.0.3.0/24
+ - set protocols ospf area 4 range 192.0.4.0/24 cost 12
+ - set protocols ospf area 4 range 192.0.4.0/24
+ - set protocols ospf area 4 area-type stub default-cost 20
+ - set protocols ospf area '4'
+ - set protocols ospf area 4 network 192.0.2.0/24
+
+parsed_config_file: "_parsed_config_1_3.cfg"
diff --git a/tests/integration/targets/vyos_ospfv2/vars/v1_4.yaml b/tests/integration/targets/vyos_ospfv2/vars/v1_4.yaml
new file mode 100644
index 00000000..4b7d0ab1
--- /dev/null
+++ b/tests/integration/targets/vyos_ospfv2/vars/v1_4.yaml
@@ -0,0 +1,123 @@
+---
+merged_commands:
+ - set protocols ospf mpls-te enable
+ - set protocols ospf mpls-te router-address '192.0.11.11'
+ - set protocols ospf redistribute bgp
+ - set protocols ospf redistribute bgp metric-type 2
+ - set protocols ospf redistribute bgp metric 10
+ - set protocols ospf default-information originate metric-type 2
+ - set protocols ospf default-information originate always
+ - set protocols ospf default-information originate metric 10
+ - set protocols ospf default-information originate route-map ingress
+ - set protocols ospf auto-cost reference-bandwidth '2'
+ - set protocols ospf parameters router-id '192.0.1.1'
+ - set protocols ospf parameters opaque-lsa
+ - set protocols ospf parameters abr-type 'cisco'
+ - set protocols ospf parameters rfc1583-compatibility
+ - set protocols ospf interface eth1 passive
+ - set protocols ospf interface eth2 passive
+ - set protocols ospf max-metric router-lsa on-shutdown 10
+ - set protocols ospf max-metric router-lsa administrative
+ - set protocols ospf max-metric router-lsa on-startup 10
+ - set protocols ospf log-adjacency-changes 'detail'
+ - set protocols ospf neighbor 192.0.11.12 priority 2
+ - set protocols ospf neighbor 192.0.11.12 poll-interval 10
+ - set protocols ospf neighbor 192.0.11.12
+ - set protocols ospf area '2'
+ - set protocols ospf area 2 authentication plaintext-password
+ - set protocols ospf area 2 shortcut enable
+ - set protocols ospf area 2 area-type normal
+ - set protocols ospf area '3'
+ - set protocols ospf area 3 area-type nssa
+ - set protocols ospf area 4 range 192.0.3.0/24 cost 10
+ - set protocols ospf area 4 range 192.0.3.0/24
+ - set protocols ospf area 4 range 192.0.4.0/24 cost 12
+ - set protocols ospf area 4 range 192.0.4.0/24
+ - set protocols ospf area 4 area-type stub default-cost 20
+ - set protocols ospf area '4'
+ - set protocols ospf area 4 network 192.0.2.0/24
+
+populate_commands:
+ - set protocols ospf mpls-te 'enable'
+ - set protocols ospf mpls-te router-address '192.0.11.11'
+ - set protocols ospf redistribute bgp metric-type '2'
+ - set protocols ospf redistribute bgp metric '10'
+ - set protocols ospf default-information originate metric-type '2'
+ - set protocols ospf default-information originate 'always'
+ - set protocols ospf default-information originate metric '10'
+ - set protocols ospf default-information originate route-map 'ingress'
+ - set protocols ospf auto-cost reference-bandwidth '2'
+ - set protocols ospf parameters router-id '192.0.1.1'
+ - set protocols ospf parameters 'opaque-lsa'
+ - set protocols ospf parameters abr-type 'cisco'
+ - set protocols ospf parameters 'rfc1583-compatibility'
+ - set protocols ospf interface 'eth1' passive
+ - set protocols ospf interface 'eth2' passive
+ - set protocols ospf max-metric router-lsa on-shutdown '10'
+ - set protocols ospf max-metric router-lsa 'administrative'
+ - set protocols ospf max-metric router-lsa on-startup '10'
+ - set protocols ospf log-adjacency-changes 'detail'
+ - set protocols ospf neighbor 192.0.11.12 priority '2'
+ - set protocols ospf neighbor 192.0.11.12 poll-interval '10'
+ - set protocols ospf area 2 authentication 'plaintext-password'
+ - set protocols ospf area 2 shortcut 'enable'
+ - set protocols ospf area 2 area-type 'normal'
+ - set protocols ospf area 3 area-type 'nssa'
+ - set protocols ospf area 4 range 192.0.3.0/24 cost '10'
+ - set protocols ospf area 4 range 192.0.4.0/24 cost '12'
+ - set protocols ospf area 4 area-type stub default-cost '20'
+ - set protocols ospf area 4 network '192.0.2.0/24'
+
+replaced_commands:
+ - delete protocols ospf interface eth2 passive
+ - delete protocols ospf area 3
+ - delete protocols ospf area 4 range 192.0.3.0/24 cost
+ - delete protocols ospf area 4 range 192.0.3.0/24
+ - delete protocols ospf area 4 range 192.0.4.0/24 cost
+ - delete protocols ospf area 4 range 192.0.4.0/24
+ - set protocols ospf mpls-te router-address '192.0.22.22'
+ - set protocols ospf area 4 range 1.1.2.0/24 cost 10
+ - set protocols ospf area 4 range 1.1.2.0/24
+ - set protocols ospf area 4 network 192.0.12.0/24
+ - set protocols ospf area 4 network 192.0.22.0/24
+ - set protocols ospf area 4 network 192.0.32.0/24
+
+rendered_commands:
+ - set protocols ospf mpls-te enable
+ - set protocols ospf mpls-te router-address '192.0.11.11'
+ - set protocols ospf redistribute bgp
+ - set protocols ospf redistribute bgp metric-type 2
+ - set protocols ospf redistribute bgp metric 10
+ - set protocols ospf default-information originate metric-type 2
+ - set protocols ospf default-information originate always
+ - set protocols ospf default-information originate metric 10
+ - set protocols ospf default-information originate route-map ingress
+ - set protocols ospf auto-cost reference-bandwidth '2'
+ - set protocols ospf parameters router-id '192.0.1.1'
+ - set protocols ospf parameters opaque-lsa
+ - set protocols ospf parameters abr-type 'cisco'
+ - set protocols ospf parameters rfc1583-compatibility
+ - set protocols ospf interface eth1 passive
+ - set protocols ospf interface eth2 passive
+ - set protocols ospf max-metric router-lsa on-shutdown 10
+ - set protocols ospf max-metric router-lsa administrative
+ - set protocols ospf max-metric router-lsa on-startup 10
+ - set protocols ospf log-adjacency-changes 'detail'
+ - set protocols ospf neighbor 192.0.11.12 priority 2
+ - set protocols ospf neighbor 192.0.11.12 poll-interval 10
+ - set protocols ospf neighbor 192.0.11.12
+ - set protocols ospf area '2'
+ - set protocols ospf area 2 authentication plaintext-password
+ - set protocols ospf area 2 shortcut enable
+ - set protocols ospf area 2 area-type normal
+ - set protocols ospf area '3'
+ - set protocols ospf area 3 area-type nssa
+ - set protocols ospf area 4 range 192.0.3.0/24 cost 10
+ - set protocols ospf area 4 range 192.0.3.0/24
+ - set protocols ospf area 4 range 192.0.4.0/24 cost 12
+ - set protocols ospf area 4 range 192.0.4.0/24
+ - set protocols ospf area 4 area-type stub default-cost 20
+ - set protocols ospf area '4'
+ - set protocols ospf area 4 network 192.0.2.0/24
+
+parsed_config_file: "_parsed_config_1_4.cfg"
diff --git a/tests/integration/targets/vyos_route_maps/tests/cli/replaced.yaml b/tests/integration/targets/vyos_route_maps/tests/cli/replaced.yaml
index d7d05ec1..dce0cba9 100644
--- a/tests/integration/targets/vyos_route_maps/tests/cli/replaced.yaml
+++ b/tests/integration/targets/vyos_route_maps/tests/cli/replaced.yaml
@@ -31,7 +31,6 @@
- assert:
that:
- - result.commands|length == 7
- result.changed == true
- result.commands|symmetric_difference(replaced.commands) == []
- result.after|symmetric_difference(ansible_facts['network_resources']['route_maps']) == []
diff --git a/tests/integration/targets/vyos_snmp_server/meta/main.yaml b/tests/integration/targets/vyos_snmp_server/meta/main.yaml
index ed97d539..7413320e 100644
--- a/tests/integration/targets/vyos_snmp_server/meta/main.yaml
+++ b/tests/integration/targets/vyos_snmp_server/meta/main.yaml
@@ -1 +1,3 @@
---
+dependencies:
+ - prepare_vyos_tests
diff --git a/tests/integration/targets/vyos_snmp_server/tests/cli/_populate_config.yaml b/tests/integration/targets/vyos_snmp_server/tests/cli/_populate_config.yaml
index f8aa82e8..5fade170 100644
--- a/tests/integration/targets/vyos_snmp_server/tests/cli/_populate_config.yaml
+++ b/tests/integration/targets/vyos_snmp_server/tests/cli/_populate_config.yaml
@@ -2,6 +2,7 @@
- name: setup
vyos.vyos.vyos_config:
lines:
+ - set interface ethernet eth1 address 192.0.2.1/24
- set interface ethernet eth2 address 20.1.1.1/24
- set service snmp community switches authorization rw
- set service snmp community bridges client 1.1.1.1
diff --git a/tests/integration/targets/vyos_snmp_server/tests/cli/_remove_config.yaml b/tests/integration/targets/vyos_snmp_server/tests/cli/_remove_config.yaml
index 12cfb755..d30001f9 100644
--- a/tests/integration/targets/vyos_snmp_server/tests/cli/_remove_config.yaml
+++ b/tests/integration/targets/vyos_snmp_server/tests/cli/_remove_config.yaml
@@ -6,3 +6,12 @@
ignore_errors: true
vars:
ansible_connection: ansible.netcommon.network_cli
+
+- name: remove interfaces address
+ vyos.vyos.vyos_config:
+ lines:
+ - delete interface ethernet eth1 address
+ - delete interface ethernet eth2 address
+ ignore_errors: true
+ vars:
+ ansible_connection: ansible.netcommon.network_cli
diff --git a/tests/integration/targets/vyos_snmp_server/tests/cli/merged.yaml b/tests/integration/targets/vyos_snmp_server/tests/cli/merged.yaml
index 991cb42d..9ce0679b 100644
--- a/tests/integration/targets/vyos_snmp_server/tests/cli/merged.yaml
+++ b/tests/integration/targets/vyos_snmp_server/tests/cli/merged.yaml
@@ -20,6 +20,7 @@
- address: 192.0.2.1
port: 33
snmp_v3:
+ engine_id: "000000000000000000000002"
views:
- view: default
oid: 1
diff --git a/tests/integration/targets/vyos_snmp_server/tests/cli/rendered.yaml b/tests/integration/targets/vyos_snmp_server/tests/cli/rendered.yaml
index 17334e4e..644a5571 100644
--- a/tests/integration/targets/vyos_snmp_server/tests/cli/rendered.yaml
+++ b/tests/integration/targets/vyos_snmp_server/tests/cli/rendered.yaml
@@ -20,6 +20,7 @@
- address: 192.0.2.1
port: 33
snmp_v3:
+ engine_id: "000000000000000000000002"
views:
- view: default
oid: 1
diff --git a/tests/integration/targets/vyos_snmp_server/vars/main.yaml b/tests/integration/targets/vyos_snmp_server/vars/main.yaml
index 4560271f..594d9739 100644
--- a/tests/integration/targets/vyos_snmp_server/vars/main.yaml
+++ b/tests/integration/targets/vyos_snmp_server/vars/main.yaml
@@ -15,6 +15,7 @@ merged:
- set service snmp v3 user adminuser privacy encrypted-password ********
- set service snmp v3 user adminuser group testgroup
- set service snmp v3 view default oid 1
+ - set service snmp v3 engineid 000000000000000000000002
- set service snmp contact admin2@ex.com
after:
communities:
@@ -30,6 +31,7 @@ merged:
port: 33
- address: 20.1.1.1
snmp_v3:
+ engine_id: "000000000000000000000002"
groups:
- group: testgroup
mode: ro
diff --git a/tests/integration/targets/vyos_system/tests/cli/basic.yaml b/tests/integration/targets/vyos_system/tests/cli/basic.yaml
index 29309e22..cf08f36f 100644
--- a/tests/integration/targets/vyos_system/tests/cli/basic.yaml
+++ b/tests/integration/targets/vyos_system/tests/cli/basic.yaml
@@ -55,9 +55,9 @@
ignore_errors: true
vyos.vyos.vyos_config:
lines:
- - delete system name-server name-server 192.0.2.1
- - delete system name-server name-server 192.0.2.2
- - delete system name-server name-server 192.0.2.3
+ - delete system name-server 192.0.2.1
+ - delete system name-server 192.0.2.2
+ - delete system name-server 192.0.2.3
match: none
- debug: msg="END cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/tests/integration/targets/vyos_system/tests/cli/domain_search.yaml b/tests/integration/targets/vyos_system/tests/cli/domain_search.yaml
new file mode 100644
index 00000000..2422d2c7
--- /dev/null
+++ b/tests/integration/targets/vyos_system/tests/cli/domain_search.yaml
@@ -0,0 +1,43 @@
+---
+- debug: msg="START cli/domain_search.yaml on connection={{ ansible_connection }}"
+
+- name: ensure facts
+ include_tasks: _get_version.yaml
+
+- name: setup
+ ignore_errors: true
+ vyos.vyos.vyos_system:
+ domain_search:
+ - nbg.bufanda.ke
+ state: absent
+
+- name: configure domain search setting
+ register: result
+ vyos.vyos.vyos_system:
+ domain_search:
+ - nbg.bufanda.ke
+
+- assert:
+ that:
+ - result.changed == true
+ - result.commands|length == 1
+ - "{{ merged['commands'] | symmetric_difference(result['commands']) |length == 0 }}"
+
+- name: configure domain search setting
+ register: result
+ vyos.vyos.vyos_system:
+ domain_search:
+ - nbg.bufanda.ke
+
+- assert:
+ that:
+ - result.changed == false
+
+- name: teardown
+ ignore_errors: true
+ vyos.vyos.vyos_system:
+ domain_search:
+ - nbg.bufanda.ke
+ state: absent
+
+- debug: msg="END cli/basic.yaml on connection={{ ansible_connection }}"
diff --git a/tests/integration/targets/vyos_system/vars/pre-v1_4.yaml b/tests/integration/targets/vyos_system/vars/pre-v1_4.yaml
new file mode 100644
index 00000000..cb41c9c6
--- /dev/null
+++ b/tests/integration/targets/vyos_system/vars/pre-v1_4.yaml
@@ -0,0 +1,4 @@
+---
+merged:
+ commands:
+ - set system domain-search domain 'nbg.bufanda.ke'
diff --git a/tests/integration/targets/vyos_system/vars/v1_4.yaml b/tests/integration/targets/vyos_system/vars/v1_4.yaml
new file mode 100644
index 00000000..96f0b7c9
--- /dev/null
+++ b/tests/integration/targets/vyos_system/vars/v1_4.yaml
@@ -0,0 +1,4 @@
+---
+merged:
+ commands:
+ - set system domain-search 'nbg.bufanda.ke'
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config.cfg
index f54a03dc..464f132f 100644
--- a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config.cfg
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config.cfg
@@ -2,6 +2,8 @@ set firewall group address-group RND-HOSTS address 192.0.2.1
set firewall group address-group RND-HOSTS address 192.0.2.3
set firewall group address-group RND-HOSTS address 192.0.2.5
set firewall group address-group RND-HOSTS description 'This group has the Management hosts address lists'
+set firewall group address-group DELETE-HOSTS address 1.2.3.4
+set firewall group address-group DELETE-HOSTS description 'The (single) last address from this group will be deleted in the tests'
set firewall group ipv6-address-group LOCAL-v6 address ::1
set firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1
set firewall group ipv6-address-group LOCAL-v6 description 'This group has the hosts address lists of this machine'
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg
index 0a1247dd..ad60b45c 100644
--- a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_global_config_v14.cfg
@@ -2,6 +2,8 @@ set firewall group address-group RND-HOSTS address 192.0.2.1
set firewall group address-group RND-HOSTS address 192.0.2.3
set firewall group address-group RND-HOSTS address 192.0.2.5
set firewall group address-group RND-HOSTS description 'This group has the Management hosts address lists'
+set firewall group address-group DELETE-HOSTS address 1.2.3.4
+set firewall group address-group DELETE-HOSTS description 'The (single) last address from this group will be deleted in the tests'
set firewall group ipv6-address-group LOCAL-v6 address ::1
set firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1
set firewall group ipv6-address-group LOCAL-v6 description 'This group has the hosts address lists of this machine'
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config.cfg
index 6c248d2b..3ad6ec97 100644
--- a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config.cfg
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config.cfg
@@ -14,3 +14,8 @@ set firewall name EGRESS default-action 'reject'
set firewall ipv6-name EGRESS default-action 'reject'
set firewall ipv6-name EGRESS rule 20
set firewall ipv6-name EGRESS rule 20 icmpv6 type 'echo-request'
+set firewall name MULTIPLE-RULE default-action 'drop'
+set firewall name MULTIPLE-RULE rule 1 action 'accept'
+set firewall name MULTIPLE-RULE rule 1 protocol 'all'
+set firewall name MULTIPLE-RULE rule 2 action 'drop'
+set firewall name MULTIPLE-RULE rule 2 protocol 'all' \ No newline at end of file
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config_v14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config_v14.cfg
index e82e3903..7f63dd78 100644
--- a/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config_v14.cfg
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_firewall_rules_config_v14.cfg
@@ -32,3 +32,8 @@ set firewall ipv4 name IF-TEST rule 10 inbound-interface name 'eth0'
set firewall ipv4 name IF-TEST rule 10 outbound-interface group 'the-ethers'
set firewall ipv4 name IF-TEST rule 10 icmp type-name 'echo-request'
set firewall ipv4 name IF-TEST rule 10 state 'related'
+set firewall ipv4 name MULTIPLE-RULE default-action 'drop'
+set firewall ipv4 name MULTIPLE-RULE rule 1 action 'accept'
+set firewall ipv4 name MULTIPLE-RULE rule 1 protocol 'all'
+set firewall ipv4 name MULTIPLE-RULE rule 2 action 'drop'
+set firewall ipv4 name MULTIPLE-RULE rule 2 protocol 'all' \ No newline at end of file
diff --git a/tests/unit/modules/network/vyos/fixtures/vyos_route_maps_config_v14.cfg b/tests/unit/modules/network/vyos/fixtures/vyos_route_maps_config_v14.cfg
new file mode 100644
index 00000000..1e84e5eb
--- /dev/null
+++ b/tests/unit/modules/network/vyos/fixtures/vyos_route_maps_config_v14.cfg
@@ -0,0 +1,18 @@
+set policy route-map test3 rule 1 action 'permit'
+set policy route-map test3 rule 1 match interface 'eth2'
+set policy route-map test3 rule 1 match ipv6 nexthop 'fdda:5cc1:23:4::1f'
+set policy route-map test3 rule 1 match metric '1'
+set policy route-map test3 rule 1 match peer '1.1.1.2'
+set policy route-map test3 rule 1 match rpki 'invalid'
+set policy route-map test3 rule 1 set bgp-extcommunity-rt '22:11'
+set policy route-map test3 rule 1 set community replace 'internet'
+set policy route-map test3 rule 1 set ipv6-next-hop global 'fdda:5cc1:23:4::1f'
+set policy route-map test3 rule 1 set ip-next-hop '10.20.10.20'
+set policy route-map test3 rule 1 set local-preference '4'
+set policy route-map test3 rule 1 set metric '5'
+set policy route-map test3 rule 1 set metric-type 'type-1'
+set policy route-map test3 rule 1 set origin 'egp'
+set policy route-map test3 rule 1 set originator-id '10.0.2.3'
+set policy route-map test3 rule 1 set src '10.0.2.15'
+set policy route-map test3 rule 1 set tag '5'
+set policy route-map test3 rule 1 set weight '4'
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
index 9e615ff0..c0c661ad 100644
--- a/tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py
+++ b/tests/unit/modules/network/vyos/test_vyos_bgp_address_family14.py
@@ -45,13 +45,13 @@ class TestVyosBgpafModule14(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_address_family.bgp_address_family.get_os_version"
+ "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"
+ "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
@@ -425,46 +425,6 @@ class TestVyosBgpafModule14(TestVyosModule):
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(
@@ -708,7 +668,7 @@ class TestVyosBgpafModule14(TestVyosModule):
)
self.execute_module(changed=False, commands=[])
- def test_vyos_bgp_address_family_replaced_asn(self):
+ def test_vyos_bgp_address_family_replaced_asn2(self):
set_module_args(
dict(
state="replaced",
@@ -764,7 +724,7 @@ class TestVyosBgpafModule14(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
- def test_vyos_bgp_address_family_overridden_asn(self):
+ def test_vyos_bgp_address_family_overridden_asn2(self):
set_module_args(
dict(
state="overridden",
@@ -842,13 +802,13 @@ class TestVyosBgpafOpsModule14(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_address_family.bgp_address_family.get_os_version"
+ "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"
+ "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
@@ -911,13 +871,13 @@ class TestVyosBgpafOpsModule14(TestVyosModule):
],
redistribute=[
dict(protocol="ospf", metric=25),
- ]
+ ],
),
dict(
afi="ipv6",
redistribute=[
dict(protocol="ospfv3", metric=20),
- dict(protocol="ripng")
+ dict(protocol="ripng"),
],
),
],
@@ -948,13 +908,13 @@ class TestVyosBgpafOpsModule14(TestVyosModule):
],
redistribute=[
dict(protocol="ospf", metric=25),
- ]
+ ],
),
dict(
afi="ipv6",
redistribute=[
dict(protocol="ospfv3", metric=20),
- dict(protocol="ripng")
+ dict(protocol="ripng"),
],
),
],
@@ -982,7 +942,7 @@ class TestVyosBgpafOpsModule14(TestVyosModule):
afi="ipv4",
networks=[
dict(prefix="192.2.13.0/24"),
- ]
+ ],
),
dict(
afi="ipv6",
diff --git a/tests/unit/modules/network/vyos/test_vyos_firewall_global.py b/tests/unit/modules/network/vyos/test_vyos_firewall_global.py
index 2ecd0621..db67ab2c 100644
--- a/tests/unit/modules/network/vyos/test_vyos_firewall_global.py
+++ b/tests/unit/modules/network/vyos/test_vyos_firewall_global.py
@@ -269,6 +269,12 @@ class TestVyosFirewallGlobalModule(TestVyosModule):
],
),
dict(
+ afi="ipv4",
+ name="DELETE-HOSTS",
+ description="The (single) last address from this group will be deleted in the tests",
+ # No members here
+ ),
+ dict(
afi="ipv6",
name="LOCAL-v6",
description="This group has the hosts address lists of this machine",
@@ -282,7 +288,7 @@ class TestVyosFirewallGlobalModule(TestVyosModule):
dict(
afi="ipv4",
name="RND",
- description="This group has the Management network addresses",
+ # Deleted the description here.
members=[dict(address="192.0.2.0/24")],
),
dict(
@@ -309,8 +315,10 @@ class TestVyosFirewallGlobalModule(TestVyosModule):
"delete firewall send-redirects",
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
+ "delete firewall group address-group DELETE-HOSTS address",
"set firewall group address-group RND-HOSTS address 192.0.2.7",
"set firewall group address-group RND-HOSTS address 192.0.2.9",
+ "delete firewall group network-group RND description",
"delete firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1",
"set firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::2",
"delete firewall group port-group SSH port 22",
@@ -375,6 +383,7 @@ class TestVyosFirewallGlobalModule(TestVyosModule):
),
)
commands = [
+ "delete firewall group address-group DELETE-HOSTS",
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
"delete firewall ipv6-src-route",
@@ -411,6 +420,14 @@ class TestVyosFirewallGlobalModule(TestVyosModule):
],
),
dict(
+ afi="ipv4",
+ name="DELETE-HOSTS",
+ description="The (single) last address from this group will be deleted in the tests",
+ members=[
+ dict(address='1.2.3.4'),
+ ]
+ ),
+ dict(
afi="ipv6",
name="LOCAL-v6",
description="This group has the hosts address lists of this machine",
diff --git a/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py b/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py
index f4ae4add..0b85e62d 100644
--- a/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py
+++ b/tests/unit/modules/network/vyos/test_vyos_firewall_global14.py
@@ -272,6 +272,12 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
],
),
dict(
+ afi="ipv4",
+ name="DELETE-HOSTS",
+ description="The (single) last address from this group will be deleted in the tests",
+ # No members here
+ ),
+ dict(
afi="ipv6",
name="LOCAL-v6",
description="This group has the hosts address lists of this machine",
@@ -285,7 +291,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
dict(
afi="ipv4",
name="RND",
- description="This group has the Management network addresses",
+ # Deleted the description here.
members=[dict(address="192.0.2.0/24")],
),
dict(
@@ -310,6 +316,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
commands = [
"delete firewall group address-group RND-HOSTS address 192.0.2.3",
"delete firewall group address-group RND-HOSTS address 192.0.2.5",
+ "delete firewall group address-group DELETE-HOSTS address",
"delete firewall global-options all-ping",
"delete firewall global-options state-policy related",
"delete firewall global-options ipv6-src-route",
@@ -317,6 +324,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
"set firewall global-options state-policy invalid action 'reject'",
"set firewall group address-group RND-HOSTS address 192.0.2.7",
"set firewall group address-group RND-HOSTS address 192.0.2.9",
+ "delete firewall group network-group RND description",
"delete firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::1",
"set firewall group ipv6-address-group LOCAL-v6 address fdec:2503:89d6:59b3::2",
"delete firewall group port-group SSH port 22",
@@ -349,6 +357,14 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
],
),
dict(
+ afi="ipv4",
+ name="DELETE-HOSTS",
+ description="The (single) last address from this group will be deleted in the tests",
+ members=[
+ dict(address='1.2.3.4'),
+ ]
+ ),
+ dict(
afi="ipv6",
name="LOCAL-v6",
description="This group has the hosts address lists of this machine",
@@ -450,6 +466,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
"delete firewall global-options send-redirects",
"set firewall global-options state-policy related action 'drop'",
"delete firewall global-options state-policy related log-level",
+ "delete firewall group address-group DELETE-HOSTS",
"set firewall global-options state-policy invalid action 'reject'",
"set firewall group address-group RND-HOSTS address 192.0.2.7",
"set firewall group address-group RND-HOSTS address 192.0.2.9",
diff --git a/tests/unit/modules/network/vyos/test_vyos_firewall_rules13.py b/tests/unit/modules/network/vyos/test_vyos_firewall_rules13.py
index 101f389e..9a25198f 100644
--- a/tests/unit/modules/network/vyos/test_vyos_firewall_rules13.py
+++ b/tests/unit/modules/network/vyos/test_vyos_firewall_rules13.py
@@ -1057,6 +1057,17 @@ class TestVyosFirewallRulesModule13(TestVyosModule):
),
],
),
+ dict(
+ name="MULTIPLE-RULE",
+ default_action="drop",
+ rules=[
+ dict(
+ number="1",
+ action="accept",
+ protocol="all",
+ ),
+ ],
+ ),
],
),
dict(
@@ -1083,6 +1094,11 @@ class TestVyosFirewallRulesModule13(TestVyosModule):
"delete firewall ipv6-name EGRESS",
"delete firewall name V4-INGRESS",
"delete firewall name EGRESS",
+ "delete firewall name MULTIPLE-RULE",
+ "set firewall name MULTIPLE-RULE default-action 'drop'",
+ "set firewall name MULTIPLE-RULE rule 1",
+ "set firewall name MULTIPLE-RULE rule 1 action 'accept'",
+ "set firewall name MULTIPLE-RULE rule 1 protocol 'all'",
"set firewall name V4-IN default-action 'accept'",
"set firewall name V4-IN description 'This is IPv4 INGRESS rule set'",
"set firewall name V4-IN enable-default-log",
@@ -1159,6 +1175,7 @@ class TestVyosFirewallRulesModule13(TestVyosModule):
"delete firewall ipv6-name EGRESS",
"delete firewall name V4-INGRESS",
"delete firewall name EGRESS",
+ "delete firewall name MULTIPLE-RULE",
"set firewall name V4-INGRESS rule 101",
"set firewall name V4-INGRESS description 'This is IPv4 INGRESS rule set'",
"set firewall name V4-INGRESS default-action 'accept'",
@@ -1204,6 +1221,22 @@ class TestVyosFirewallRulesModule13(TestVyosModule):
name="EGRESS",
default_action="reject",
),
+ dict(
+ name="MULTIPLE-RULE",
+ default_action="drop",
+ rules=[
+ dict(
+ number="1",
+ action="accept",
+ protocol="all",
+ ),
+ dict(
+ number="2",
+ action="drop",
+ protocol="all",
+ ),
+ ],
+ ),
],
),
dict(
diff --git a/tests/unit/modules/network/vyos/test_vyos_firewall_rules14.py b/tests/unit/modules/network/vyos/test_vyos_firewall_rules14.py
index 547b8f45..64884282 100644
--- a/tests/unit/modules/network/vyos/test_vyos_firewall_rules14.py
+++ b/tests/unit/modules/network/vyos/test_vyos_firewall_rules14.py
@@ -1418,6 +1418,17 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
),
],
),
+ dict(
+ name="MULTIPLE-RULE",
+ default_action="drop",
+ rules=[
+ dict(
+ number="1",
+ action="accept",
+ protocol="all",
+ ),
+ ],
+ ),
],
),
dict(
@@ -1444,11 +1455,16 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
"delete firewall ipv6 name EGRESS",
"delete firewall ipv4 name V4-INGRESS",
"delete firewall ipv4 name EGRESS",
+ "delete firewall ipv4 name MULTIPLE-RULE",
"delete firewall ipv4 input filter",
"delete firewall ipv4 output filter",
"delete firewall ipv6 input filter",
"delete firewall ipv6 output filter",
"delete firewall ipv4 name IF-TEST",
+ "set firewall ipv4 name MULTIPLE-RULE default-action 'drop'",
+ "set firewall ipv4 name MULTIPLE-RULE rule 1",
+ "set firewall ipv4 name MULTIPLE-RULE rule 1 action 'accept'",
+ "set firewall ipv4 name MULTIPLE-RULE rule 1 protocol 'all'",
"set firewall ipv4 name V4-IN default-action 'accept'",
"set firewall ipv4 name V4-IN description 'This is IPv4 INGRESS rule set'",
"set firewall ipv4 name V4-IN default-log",
@@ -1530,6 +1546,7 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
"delete firewall ipv6 input filter",
"delete firewall ipv6 output filter",
"delete firewall ipv4 name IF-TEST",
+ "delete firewall ipv4 name MULTIPLE-RULE",
"set firewall ipv4 name V4-INGRESS rule 101",
"set firewall ipv4 name V4-INGRESS default-log",
"set firewall ipv4 name V4-INGRESS description 'This is IPv4 INGRESS rule set'",
@@ -1609,6 +1626,22 @@ class TestVyosFirewallRulesModule14(TestVyosModule):
name="EGRESS",
default_action="reject",
),
+ dict(
+ name="MULTIPLE-RULE",
+ default_action="drop",
+ rules=[
+ dict(
+ number="1",
+ action="accept",
+ protocol="all",
+ ),
+ dict(
+ number="2",
+ action="drop",
+ protocol="all",
+ ),
+ ],
+ ),
],
),
dict(
diff --git a/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces.py b/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces.py
index c7d69d0d..b0a0f0ff 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces.py
@@ -44,13 +44,13 @@ class TestVyosOspfInterfacesModule(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.ospf_interfaces.ospf_interfaces.get_os_version"
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ospf_interfaces.ospf_interfaces.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.ospf_interfaces.ospf_interfaces.get_os_version"
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.ospf_interfaces.ospf_interfaces.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
@@ -118,6 +118,34 @@ class TestVyosOspfInterfacesModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_ospf_interfaces_merged_vif_config(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth0.3",
+ address_family=[
+ dict(
+ afi="ipv4",
+ cost=100,
+ authentication=dict(plaintext_password="abcdefg!"),
+ priority=55,
+ ),
+ dict(afi="ipv6", mtu_ignore=True),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "set interfaces ethernet eth0 vif 3 ip ospf cost 100",
+ "set interfaces ethernet eth0 vif 3 ip ospf priority 55",
+ "set interfaces ethernet eth0 vif 3 ip ospf authentication plaintext-password abcdefg!",
+ "set interfaces ethernet eth0 vif 3 ipv6 ospfv3 mtu-ignore",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_ospf_interfaces_merged_idempotent(self):
set_module_args(
dict(
diff --git a/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces14.py b/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces14.py
index ef27860a..d3f8bc38 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces14.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ospf_interfaces14.py
@@ -18,6 +18,7 @@
# Make coding more python3-ish
from __future__ import absolute_import, division, print_function
+
__metaclass__ = type
from unittest.mock import patch
@@ -34,22 +35,22 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
def setUp(self):
super(TestVyosOspfInterfacesModule14, 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"
+ "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.ospf_interfaces.ospf_interfaces.Ospf_interfacesFacts.get_device_data"
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.ospf_interfaces.ospf_interfaces.Ospf_interfacesFacts.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.ospf_interfaces.ospf_interfaces.get_os_version"
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ospf_interfaces.ospf_interfaces.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.ospf_interfaces.ospf_interfaces.get_os_version"
+ "ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.facts.ospf_interfaces.ospf_interfaces.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
@@ -104,7 +105,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="merged",
- )
+ ),
)
commands = [
"set protocols ospf interface bond2 transmit-delay 9",
@@ -116,6 +117,34 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_vyos_ospf_interfaces_merged_vif_config(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ name="eth0.3",
+ address_family=[
+ dict(
+ afi="ipv4",
+ cost=100,
+ authentication=dict(plaintext_password="abcdefg!"),
+ priority=55,
+ ),
+ dict(afi="ipv6", mtu_ignore=True),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "set protocols ospf interface eth0.3 cost 100",
+ "set protocols ospf interface eth0.3 priority 55",
+ "set protocols ospf interface eth0.3 authentication plaintext-password abcdefg!",
+ "set protocols ospfv3 interface eth0.3 mtu-ignore",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_ospf_interfaces_merged_idempotent(self):
set_module_args(
dict(
@@ -137,7 +166,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
],
),
],
- )
+ ),
)
self.execute_module(changed=False, commands=[])
@@ -162,7 +191,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
],
),
],
- )
+ ),
)
commands = [
"set protocols ospfv3 interface eth0 cost 500",
@@ -198,7 +227,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="replaced",
- )
+ ),
)
commands = [
"set protocols ospf interface bond2 transmit-delay 9",
@@ -249,7 +278,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="replaced",
- )
+ ),
)
commands = [
"delete protocols ospf interface eth1 cost 100",
@@ -287,7 +316,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="replaced",
- )
+ ),
)
self.execute_module(changed=False, commands=[])
@@ -318,7 +347,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="overridden",
- )
+ ),
)
commands = [
"set protocols ospf interface bond2 transmit-delay 9",
@@ -355,7 +384,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="overridden",
- )
+ ),
)
self.execute_module(changed=False, commands=[])
@@ -368,7 +397,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="deleted",
- )
+ ),
)
commands = ["delete protocols ospfv3 interface eth0"]
self.execute_module(changed=True, commands=commands)
@@ -382,7 +411,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="deleted",
- )
+ ),
)
self.execute_module(changed=False, commands=[])
@@ -414,7 +443,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
),
],
state="rendered",
- )
+ ),
)
commands = [
"set protocols ospf interface eth0 cost 100",
@@ -456,7 +485,7 @@ class TestVyosOspfInterfacesModule14(TestVyosModule):
"md5_key": {
"key": "1111111111232345",
"key_id": 10,
- }
+ },
},
"bandwidth": 70,
"transmit_delay": 45,
diff --git a/tests/unit/modules/network/vyos/test_vyos_ospfv2.py b/tests/unit/modules/network/vyos/test_vyos_ospfv2.py
index ec4018e1..2620b1cd 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ospfv2.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ospfv2.py
@@ -59,6 +59,18 @@ class TestVyosOspfv2Module(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.ospfv2.ospfv2.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.ospfv2.ospfv2.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(TestVyosOspfv2Module, self).tearDown()
diff --git a/tests/unit/modules/network/vyos/test_vyos_ospfv2v14.py b/tests/unit/modules/network/vyos/test_vyos_ospfv2v14.py
new file mode 100644
index 00000000..5c77cb88
--- /dev/null
+++ b/tests/unit/modules/network/vyos/test_vyos_ospfv2v14.py
@@ -0,0 +1,437 @@
+# (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_ospfv2
+from ansible_collections.vyos.vyos.tests.unit.modules.utils import set_module_args
+
+from .vyos_module import TestVyosModule, load_fixture
+
+
+class TestVyosOspfv2Module14(TestVyosModule):
+ module = vyos_ospfv2
+
+ def setUp(self):
+ super(TestVyosOspfv2Module14, self).setUp()
+ self.mock_get_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.get_config",
+ )
+ self.get_config = self.mock_get_config.start()
+
+ self.mock_load_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.network.Config.load_config",
+ )
+ self.load_config = self.mock_load_config.start()
+
+ self.mock_get_resource_connection_config = patch(
+ "ansible_collections.ansible.netcommon.plugins.module_utils.network.common.cfg.base.get_resource_connection",
+ )
+ self.get_resource_connection_config = self.mock_get_resource_connection_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.ospfv2.ospfv2.Ospfv2Facts.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.ospfv2.ospfv2.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.ospfv2.ospfv2.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(TestVyosOspfv2Module14, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_get_config.stop()
+ self.mock_load_config.stop()
+ self.mock_execute_show_command.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_ospfv2_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_ospfv2_merged_new_config(self):
+ set_module_args(
+ dict(
+ config=dict(
+ log_adjacency_changes="detail",
+ mpls_te=dict(enabled=True, router_address="192.0.11.11"),
+ auto_cost=dict(reference_bandwidth=2),
+ areas=[
+ dict(
+ area_id="2",
+ area_type=dict(normal=True),
+ authentication="plaintext-password",
+ shortcut="enable",
+ ),
+ dict(
+ area_id="4",
+ area_type=dict(stub=dict(default_cost=10)),
+ network=[dict(address="192.0.2.0/24")],
+ range=[
+ dict(address="192.0.3.0/24", cost=10),
+ dict(address="192.0.4.0/24", cost=12),
+ ],
+ ),
+ ],
+ ),
+ state="merged",
+ ),
+ )
+ commands = [
+ "set protocols ospf mpls-te enable",
+ "set protocols ospf mpls-te router-address '192.0.11.11'",
+ "set protocols ospf auto-cost reference-bandwidth '2'",
+ "set protocols ospf log-adjacency-changes 'detail'",
+ "set protocols ospf area '2'",
+ "set protocols ospf area 2 authentication plaintext-password",
+ "set protocols ospf area 2 shortcut enable",
+ "set protocols ospf area 2 area-type normal",
+ "set protocols ospf area 4 range 192.0.3.0/24 cost 10",
+ "set protocols ospf area 4 range 192.0.3.0/24",
+ "set protocols ospf area 4 range 192.0.4.0/24 cost 12",
+ "set protocols ospf area 4 range 192.0.4.0/24",
+ "set protocols ospf area 4 area-type stub default-cost 10",
+ "set protocols ospf area '4'",
+ "set protocols ospf area 4 network 192.0.2.0/24",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_ospfv2_merged_idem(self):
+ set_module_args(
+ dict(
+ config=dict(
+ areas=[
+ dict(
+ area_id="12",
+ area_type=dict(normal=True),
+ authentication="plaintext-password",
+ shortcut="enable",
+ ),
+ dict(
+ area_id="14",
+ area_type=dict(stub=dict(default_cost=20)),
+ network=[dict(address="192.0.12.0/24")],
+ range=[
+ dict(address="192.0.13.0/24", cost=10),
+ dict(address="192.0.14.0/24", cost=12),
+ ],
+ ),
+ ],
+ ),
+ state="merged",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_ospfv2_merged_update_existing(self):
+ set_module_args(
+ dict(
+ config=dict(
+ areas=[
+ dict(
+ area_id="12",
+ area_type=dict(normal=True),
+ authentication="plaintext-password",
+ shortcut="enable",
+ ),
+ dict(
+ area_id="14",
+ area_type=dict(stub=dict(set=False)),
+ network=[
+ dict(address="192.0.12.0/24"),
+ dict(address="192.0.22.0/24"),
+ ],
+ range=[
+ dict(address="192.0.13.0/24", cost=10),
+ dict(address="192.0.14.0/24", cost=12),
+ ],
+ ),
+ ],
+ ),
+ state="merged",
+ ),
+ )
+ commands = [
+ "delete protocols ospf area 14 area-type stub",
+ "set protocols ospf area 14 network 192.0.22.0/24",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_ospfv2_replaced(self):
+ set_module_args(
+ dict(
+ config=dict(
+ log_adjacency_changes="detail",
+ mpls_te=dict(enabled=True, router_address="192.0.11.11"),
+ auto_cost=dict(reference_bandwidth=2),
+ areas=[
+ dict(
+ area_id="12",
+ area_type=dict(normal=True),
+ authentication="plaintext-password",
+ shortcut="enable",
+ ),
+ dict(
+ area_id="15",
+ area_type=dict(stub=dict(default_cost=10)),
+ network=[dict(address="192.0.12.0/24")],
+ range=[
+ dict(address="192.0.13.0/24", cost=10),
+ dict(address="192.0.14.0/24", cost=12),
+ dict(address="192.0.15.0/24", cost=14),
+ ],
+ ),
+ ],
+ ),
+ state="replaced",
+ ),
+ )
+ commands = [
+ "set protocols ospf mpls-te enable",
+ "set protocols ospf mpls-te router-address '192.0.11.11'",
+ "set protocols ospf auto-cost reference-bandwidth '2'",
+ "set protocols ospf log-adjacency-changes 'detail'",
+ "delete protocols ospf area 14",
+ "set protocols ospf area 15 range 192.0.13.0/24 cost 10",
+ "set protocols ospf area 15 range 192.0.13.0/24",
+ "set protocols ospf area 15 range 192.0.14.0/24 cost 12",
+ "set protocols ospf area 15 range 192.0.14.0/24",
+ "set protocols ospf area 15 range 192.0.15.0/24 cost 14",
+ "set protocols ospf area 15 range 192.0.15.0/24",
+ "set protocols ospf area 15 area-type stub default-cost 10",
+ "set protocols ospf area '15'",
+ "set protocols ospf area 15 network 192.0.12.0/24",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_ospfv2_replaced_idem(self):
+ set_module_args(
+ dict(
+ config=dict(
+ areas=[
+ dict(
+ area_id="12",
+ area_type=dict(normal=True),
+ authentication="plaintext-password",
+ shortcut="enable",
+ ),
+ dict(
+ area_id="14",
+ area_type=dict(stub=dict(default_cost=20)),
+ network=[dict(address="192.0.12.0/24")],
+ range=[
+ dict(address="192.0.13.0/24", cost=10),
+ dict(address="192.0.14.0/24", cost=12),
+ ],
+ ),
+ ],
+ ),
+ state="replaced",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_ospfv2_deleted_no_config(self):
+ set_module_args(dict(config=None, state="deleted"))
+ commands = ["delete protocols ospf"]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_ospfv2_gathered(self):
+ set_module_args(dict(state="gathered"))
+ result = self.execute_module(changed=False, filename="vyos_ospfv2_config.cfg")
+ gather_dict = {
+ "areas": [
+ {
+ "area_id": "2",
+ "area_type": {"normal": True},
+ "authentication": "plaintext-password",
+ "shortcut": "enable",
+ },
+ {
+ "area_id": "14",
+ "area_type": {"stub": {"default_cost": 20, "set": True}},
+ "network": [{"address": "192.0.12.0/24"}],
+ "range": [
+ {"address": "192.0.13.0/24", "cost": 10},
+ {"address": "192.0.14.0/24", "cost": 12},
+ ],
+ },
+ ],
+ }
+ self.assertEqual(sorted(gather_dict), sorted(result["gathered"]))
+
+ def test_vyos_ospfv2_parsed(self):
+ parsed_str = """set protocols ospf area 2 area-type 'normal'
+ set protocols ospf area 2 authentication 'plaintext-password'
+ set protocols ospf area 2 shortcut 'enable'
+ set protocols ospf area 3 area-type 'nssa'
+ set protocols ospf area 4 area-type stub default-cost '20'
+ set protocols ospf area 4 network '192.0.2.0/24'
+ set protocols ospf area 4 range 192.0.3.0/24 cost '10'
+ set protocols ospf area 4 range 192.0.4.0/24 cost '12'
+ set protocols ospf default-information originate 'always'
+ set protocols ospf default-information originate metric '10'
+ set protocols ospf default-information originate metric-type '2'
+set protocols ospf auto-cost reference-bandwidth '2'
+set protocols ospf default-information originate route-map 'ingress'
+set protocols ospf log-adjacency-changes 'detail'
+set protocols ospf max-metric router-lsa 'administrative'
+set protocols ospf max-metric router-lsa on-shutdown '10'
+set protocols ospf max-metric router-lsa on-startup '10'
+set protocols ospf mpls-te 'enable'
+set protocols ospf mpls-te router-address '192.0.11.11'
+set protocols ospf neighbor 192.0.11.12 poll-interval '10'
+set protocols ospf neighbor 192.0.11.12 priority '2'
+set protocols ospf parameters abr-type 'cisco'
+set protocols ospf parameters 'opaque-lsa'
+set protocols ospf parameters 'rfc1583-compatibility'
+set protocols ospf parameters router-id '192.0.1.1'
+set protocols ospf interface 'eth1' passive
+set protocols ospf interface 'eth2' passive
+set protocols ospf redistribute bgp metric '10'
+set protocols ospf redistribute bgp metric-type '2'"""
+ set_module_args(dict(running_config=parsed_str, state="parsed"))
+ result = self.execute_module(changed=False)
+ parsed_list = {
+ "areas": [
+ {
+ "area_id": "2",
+ "area_type": {"normal": True},
+ "authentication": "plaintext-password",
+ "shortcut": "enable",
+ },
+ {"area_id": "3", "area_type": {"nssa": {"set": True}}},
+ {
+ "area_id": "4",
+ "area_type": {"stub": {"default_cost": 20, "set": True}},
+ "network": [{"address": "192.0.2.0/24"}],
+ "range": [
+ {"address": "192.0.3.0/24", "cost": 10},
+ {"address": "192.0.4.0/24", "cost": 12},
+ ],
+ },
+ ],
+ "auto_cost": {"reference_bandwidth": 2},
+ "default_information": {
+ "originate": {
+ "always": True,
+ "metric": 10,
+ "metric_type": 2,
+ "route_map": "ingress",
+ },
+ },
+ "log_adjacency_changes": "detail",
+ "max_metric": {
+ "router_lsa": {
+ "administrative": True,
+ "on_shutdown": 10,
+ "on_startup": 10,
+ },
+ },
+ "mpls_te": {"enabled": True, "router_address": "192.0.11.11"},
+ "neighbor": [
+ {
+ "neighbor_id": "192.0.11.12",
+ "poll_interval": 10,
+ "priority": 2,
+ },
+ ],
+ "parameters": {
+ "abr_type": "cisco",
+ "opaque_lsa": True,
+ "rfc1583_compatibility": True,
+ "router_id": "192.0.1.1",
+ },
+ "passive_interface": ["eth2", "eth1"],
+ "redistribute": [{"metric": 10, "metric_type": 2, "route_type": "bgp"}],
+ }
+ self.assertEqual(sorted(parsed_list), sorted(result["parsed"]))
+
+ def test_vyos_ospfv2_rendered(self):
+ set_module_args(
+ dict(
+ config=dict(
+ log_adjacency_changes="detail",
+ mpls_te=dict(enabled=True, router_address="192.0.11.11"),
+ auto_cost=dict(reference_bandwidth=2),
+ areas=[
+ dict(
+ area_id="2",
+ area_type=dict(normal=True),
+ authentication="plaintext-password",
+ shortcut="enable",
+ ),
+ dict(
+ area_id="4",
+ area_type=dict(stub=dict(default_cost=10)),
+ network=[dict(address="192.0.2.0/24")],
+ range=[
+ dict(address="192.0.3.0/24", cost=10),
+ dict(address="192.0.4.0/24", cost=12),
+ ],
+ ),
+ ],
+ ),
+ state="rendered",
+ ),
+ )
+ commands = [
+ "set protocols ospf mpls-te enable",
+ "set protocols ospf mpls-te router-address '192.0.11.11'",
+ "set protocols ospf auto-cost reference-bandwidth '2'",
+ "set protocols ospf log-adjacency-changes 'detail'",
+ "set protocols ospf area '2'",
+ "set protocols ospf area 2 authentication plaintext-password",
+ "set protocols ospf area 2 shortcut enable",
+ "set protocols ospf area 2 area-type normal",
+ "set protocols ospf area 4 range 192.0.3.0/24 cost 10",
+ "set protocols ospf area 4 range 192.0.3.0/24",
+ "set protocols ospf area 4 range 192.0.4.0/24 cost 12",
+ "set protocols ospf area 4 range 192.0.4.0/24",
+ "set protocols ospf area 4 area-type stub default-cost 10",
+ "set protocols ospf area '4'",
+ "set protocols ospf area 4 network 192.0.2.0/24",
+ ]
+ result = self.execute_module(changed=False)
+ self.assertEqual(sorted(result["rendered"]), sorted(commands), result["rendered"])
diff --git a/tests/unit/modules/network/vyos/test_vyos_ospfv3.py b/tests/unit/modules/network/vyos/test_vyos_ospfv3.py
index 1cf02601..bdd93612 100644
--- a/tests/unit/modules/network/vyos/test_vyos_ospfv3.py
+++ b/tests/unit/modules/network/vyos/test_vyos_ospfv3.py
@@ -60,6 +60,20 @@ class TestVyosOspfv3Module(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.ospfv3.ospfv3.get_os_version",
+ )
+
+ self.test_version = "1.3"
+ 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.ospfv3.ospfv3.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(TestVyosOspfv3Module, self).tearDown()
self.mock_get_resource_connection_config.stop()
@@ -94,6 +108,50 @@ class TestVyosOspfv3Module(TestVyosModule):
dict(address="2001:db20::/32"),
dict(address="2001:db30::/32"),
],
+ interfaces=[dict(name="eth0")],
+ ),
+ dict(
+ area_id="3",
+ range=[dict(address="2001:db40::/32")],
+ ),
+ ],
+ ),
+ state="merged",
+ ),
+ )
+ commands = [
+ "set protocols ospfv3 redistribute bgp",
+ "set protocols ospfv3 parameters router-id '192.0.2.10'",
+ "set protocols ospfv3 area 2 range 2001:db10::/32",
+ "set protocols ospfv3 area 2 range 2001:db20::/32",
+ "set protocols ospfv3 area 2 range 2001:db30::/32",
+ "set protocols ospfv3 area '2'",
+ "set protocols ospfv3 area 2 interface eth0",
+ "set protocols ospfv3 area 2 export-list export1",
+ "set protocols ospfv3 area 2 import-list import1",
+ "set protocols ospfv3 area '3'",
+ "set protocols ospfv3 area 3 range 2001:db40::/32",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_ospfv3_merged_new_config14(self):
+ self.get_os_version.return_value = "1.4"
+ set_module_args(
+ dict(
+ config=dict(
+ redistribute=[dict(route_type="bgp")],
+ parameters=dict(router_id="192.0.2.10"),
+ areas=[
+ dict(
+ area_id="2",
+ export_list="export1",
+ import_list="import1",
+ range=[
+ dict(address="2001:db10::/32"),
+ dict(address="2001:db20::/32"),
+ dict(address="2001:db30::/32"),
+ ],
+ interfaces=[dict(name="eth0")],
),
dict(
area_id="3",
@@ -111,6 +169,7 @@ class TestVyosOspfv3Module(TestVyosModule):
"set protocols ospfv3 area 2 range 2001:db20::/32",
"set protocols ospfv3 area 2 range 2001:db30::/32",
"set protocols ospfv3 area '2'",
+ "set protocols ospfv3 interface eth0 area 2",
"set protocols ospfv3 area 2 export-list export1",
"set protocols ospfv3 area 2 import-list import1",
"set protocols ospfv3 area '3'",
diff --git a/tests/unit/modules/network/vyos/test_vyos_route_maps.py b/tests/unit/modules/network/vyos/test_vyos_route_maps.py
index ce13dcf2..db83ea40 100644
--- a/tests/unit/modules/network/vyos/test_vyos_route_maps.py
+++ b/tests/unit/modules/network/vyos/test_vyos_route_maps.py
@@ -50,6 +50,18 @@ class TestVyosRouteMapsModule(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.route_maps.route_maps.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.route_maps.route_maps.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(TestVyosRouteMapsModule, self).tearDown()
@@ -176,21 +188,25 @@ class TestVyosRouteMapsModule(TestVyosModule):
self.execute_module(changed=True, commands=commands)
- def test_route_maps_replaced(self):
+ def test_route_maps_extras_merged(self):
set_module_args(
dict(
config=[
dict(
- route_map="test3",
+ route_map="test2",
entries=[
dict(
sequence=1,
action="permit",
+ call="2",
+ continue_sequence=2,
match=dict(
rpki="invalid",
+ interface="eth2",
metric=1,
peer="1.1.1.3",
ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ community=dict(community_list="235"),
),
set=dict(
ipv6_next_hop=dict(
@@ -198,9 +214,17 @@ class TestVyosRouteMapsModule(TestVyosModule):
value="fdda:5cc1:23:4::1f",
),
community=dict(value="internet"),
+ extcommunity_rt="22:11",
+ extcommunity_soo="220:110",
+ extcommunity_bandwidth="100",
+ extcommunity_bandwidth_non_transitive=True,
+ atomic_aggregate=True,
+ aggregator={"ip": "10.20.11.22", "as": "245"},
bgp_extcommunity_rt="22:11",
ip_next_hop="10.20.10.22",
large_community="10:20:21",
+ as_path_prepend="100 200 350",
+ as_path_exclude="150",
local_preference=4,
metric=5,
metric_type="type-2",
@@ -209,6 +233,85 @@ class TestVyosRouteMapsModule(TestVyosModule):
src="10.0.2.15",
tag=4,
weight=4,
+ table=7,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "set policy route-map test2 rule 1 action permit",
+ "set policy route-map test2 rule 1 call 2",
+ "set policy route-map test2 rule 1 set bgp-extcommunity-rt 22:11",
+ "set policy route-map test2 rule 1 set ip-next-hop 10.20.10.22",
+ "set policy route-map test2 rule 1 set ipv6-next-hop global fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 set large-community 10:20:21",
+ "set policy route-map test2 rule 1 set as-path-prepend '100 200 350'",
+ "set policy route-map test2 rule 1 set as-path-exclude 150",
+ "set policy route-map test2 rule 1 set local-preference 4",
+ "set policy route-map test2 rule 1 set metric 5",
+ "set policy route-map test2 rule 1 set metric-type type-2",
+ "set policy route-map test2 rule 1 set origin egp",
+ "set policy route-map test2 rule 1 set originator-id 10.0.2.2",
+ "set policy route-map test2 rule 1 set src 10.0.2.15",
+ "set policy route-map test2 rule 1 set tag 4",
+ "set policy route-map test2 rule 1 set weight 4",
+ "set policy route-map test2 rule 1 set table 7",
+ "set policy route-map test2 rule 1 set community internet",
+ "set policy route-map test2 rule 1 set extcommunity-rt 22:11",
+ "set policy route-map test2 rule 1 set extcommunity-soo 220:110",
+ "set policy route-map test2 rule 1 set extcommunity bandwidth 100",
+ "set policy route-map test2 rule 1 set extcommunity bandwidth-non-transitive",
+ "set policy route-map test2 rule 1 set atomic-aggregate",
+ "set policy route-map test2 rule 1 set aggregator as 245",
+ "set policy route-map test2 rule 1 set aggregator ip 10.20.11.22",
+ "set policy route-map test2 rule 1 match interface eth2",
+ "set policy route-map test2 rule 1 match metric 1",
+ "set policy route-map test2 rule 1 match peer 1.1.1.3",
+ "set policy route-map test2 rule 1 match ipv6 nexthop fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 match rpki invalid",
+ "set policy route-map test2 rule 1 match community community-list 235",
+ "set policy route-map test2 rule 1 continue 2",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
+
+ def test_route_maps_replaced(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ metric=1,
+ peer="1.1.1.3",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="100:100"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.22",
+ large_community="10:20:21",
+ local_preference=4,
+ metric=5,
+ metric_type="type-2",
+ origin="egp",
+ originator_id="10.0.2.2",
+ src="fdda:5cc1:23:4::12",
+ tag=4,
+ weight=4,
),
),
],
@@ -220,10 +323,12 @@ class TestVyosRouteMapsModule(TestVyosModule):
commands = [
"delete policy route-map test3 rule 1 match interface eth2",
"set policy route-map test3 rule 1 set ip-next-hop 10.20.10.22",
+ "set policy route-map test3 rule 1 set community 100:100",
"set policy route-map test3 rule 1 set large-community 10:20:21",
"set policy route-map test3 rule 1 set metric-type type-2",
"set policy route-map test3 rule 1 set originator-id 10.0.2.2",
"set policy route-map test3 rule 1 set tag 4",
+ "set policy route-map test3 rule 1 set src fdda:5cc1:23:4::12",
"set policy route-map test3 rule 1 match peer 1.1.1.3",
]
self.execute_module(changed=True, commands=commands)
@@ -328,6 +433,32 @@ class TestVyosRouteMapsModule(TestVyosModule):
]
self.execute_module(changed=True, commands=commands)
+ def test_route_maps__deny_overridden(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test2",
+ entries=[
+ dict(
+ sequence=1,
+ action="deny",
+ match=dict(rpki="invalid", peer="1.1.1.5"),
+ ),
+ ],
+ ),
+ ],
+ state="overridden",
+ ),
+ )
+ commands = [
+ "delete policy route-map test3",
+ "set policy route-map test2 rule 1 action deny",
+ "set policy route-map test2 rule 1 match peer 1.1.1.5",
+ "set policy route-map test2 rule 1 match rpki invalid",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
def test_vyos_route_maps_overridden_idempotent(self):
set_module_args(
dict(
diff --git a/tests/unit/modules/network/vyos/test_vyos_route_maps14.py b/tests/unit/modules/network/vyos/test_vyos_route_maps14.py
new file mode 100644
index 00000000..7bc5b74e
--- /dev/null
+++ b/tests/unit/modules/network/vyos/test_vyos_route_maps14.py
@@ -0,0 +1,717 @@
+# (c) 2021 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_route_maps
+from ansible_collections.vyos.vyos.tests.unit.modules.utils import set_module_args
+
+from .vyos_module import TestVyosModule, load_fixture
+
+
+class TestVyosRouteMapsModule(TestVyosModule):
+ module = vyos_route_maps
+
+ def setUp(self):
+ super(TestVyosRouteMapsModule, 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_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.route_maps.route_maps.Route_mapsFacts.get_config",
+ )
+
+ 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.route_maps.route_maps.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.route_maps.route_maps.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(TestVyosRouteMapsModule, self).tearDown()
+ self.mock_get_resource_connection_config.stop()
+ self.mock_get_resource_connection_facts.stop()
+ self.mock_execute_show_command.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ if filename is None:
+ filename = "vyos_route_maps_config_v14.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_route_maps_merged_idempotent(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ metric=1,
+ peer="1.1.1.2",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.20",
+ local_preference=4,
+ metric=5,
+ metric_type="type-1",
+ origin="egp",
+ originator_id="10.0.2.3",
+ src="10.0.2.15",
+ tag=5,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_route_maps_merged(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test2",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ metric=1,
+ peer="1.1.1.3",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.22",
+ large_community="10:20:21",
+ local_preference=4,
+ metric=5,
+ metric_type="type-2",
+ origin="egp",
+ originator_id="10.0.2.2",
+ src="10.0.2.15",
+ tag=4,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "set policy route-map test2 rule 1 action permit",
+ "set policy route-map test2 rule 1 set bgp-extcommunity-rt 22:11",
+ "set policy route-map test2 rule 1 set ip-next-hop 10.20.10.22",
+ "set policy route-map test2 rule 1 set ipv6-next-hop global fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 set large-community replace 10:20:21",
+ "set policy route-map test2 rule 1 set local-preference 4",
+ "set policy route-map test2 rule 1 set metric 5",
+ "set policy route-map test2 rule 1 set metric-type type-2",
+ "set policy route-map test2 rule 1 set origin egp",
+ "set policy route-map test2 rule 1 set originator-id 10.0.2.2",
+ "set policy route-map test2 rule 1 set src 10.0.2.15",
+ "set policy route-map test2 rule 1 set tag 4",
+ "set policy route-map test2 rule 1 set weight 4",
+ "set policy route-map test2 rule 1 set community replace internet",
+ "set policy route-map test2 rule 1 match interface eth2",
+ "set policy route-map test2 rule 1 match metric 1",
+ "set policy route-map test2 rule 1 match peer 1.1.1.3",
+ "set policy route-map test2 rule 1 match ipv6 nexthop fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 match rpki invalid",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
+
+ def test_route_maps_extras_merged(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test2",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ call="2",
+ continue_sequence=2,
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ metric=1,
+ peer="1.1.1.3",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ community=dict(community_list="235"),
+ protocol="bgp",
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ extcommunity_rt="22:11",
+ extcommunity_soo="220:110",
+ extcommunity_bandwidth="100",
+ extcommunity_bandwidth_non_transitive=True,
+ atomic_aggregate=True,
+ aggregator={"ip": "10.20.11.22", "as": "245"},
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.22",
+ large_community="10:20:21",
+ as_path_prepend="100 200 350",
+ as_path_exclude="150",
+ local_preference=4,
+ metric=5,
+ metric_type="type-2",
+ origin="egp",
+ originator_id="10.0.2.2",
+ src="10.0.2.15",
+ tag=4,
+ weight=4,
+ table=7,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="merged",
+ ),
+ )
+ commands = [
+ "set policy route-map test2 rule 1 action permit",
+ "set policy route-map test2 rule 1 call 2",
+ "set policy route-map test2 rule 1 set bgp-extcommunity-rt 22:11",
+ "set policy route-map test2 rule 1 set ip-next-hop 10.20.10.22",
+ "set policy route-map test2 rule 1 set ipv6-next-hop global fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 set large-community replace 10:20:21",
+ "set policy route-map test2 rule 1 set as-path prepend '100 200 350'",
+ "set policy route-map test2 rule 1 set as-path exclude 150",
+ "set policy route-map test2 rule 1 set local-preference 4",
+ "set policy route-map test2 rule 1 set metric 5",
+ "set policy route-map test2 rule 1 set metric-type type-2",
+ "set policy route-map test2 rule 1 set origin egp",
+ "set policy route-map test2 rule 1 set originator-id 10.0.2.2",
+ "set policy route-map test2 rule 1 set src 10.0.2.15",
+ "set policy route-map test2 rule 1 set tag 4",
+ "set policy route-map test2 rule 1 set weight 4",
+ "set policy route-map test2 rule 1 set table 7",
+ "set policy route-map test2 rule 1 set community replace internet",
+ "set policy route-map test2 rule 1 set extcommunity rt 22:11",
+ "set policy route-map test2 rule 1 set extcommunity soo 220:110",
+ "set policy route-map test2 rule 1 set extcommunity bandwidth 100",
+ "set policy route-map test2 rule 1 set extcommunity bandwidth-non-transitive",
+ "set policy route-map test2 rule 1 set atomic-aggregate",
+ "set policy route-map test2 rule 1 set aggregator as 245",
+ "set policy route-map test2 rule 1 set aggregator ip 10.20.11.22",
+ "set policy route-map test2 rule 1 match interface eth2",
+ "set policy route-map test2 rule 1 match metric 1",
+ "set policy route-map test2 rule 1 match peer 1.1.1.3",
+ "set policy route-map test2 rule 1 match ipv6 nexthop fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 match rpki invalid",
+ "set policy route-map test2 rule 1 match protocol bgp",
+ "set policy route-map test2 rule 1 match community community-list 235",
+ "set policy route-map test2 rule 1 continue 2",
+ ]
+
+ self.execute_module(changed=True, commands=commands)
+
+ def test_route_maps_replaced(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ metric=1,
+ peer="1.1.1.3",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="100:100"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.22",
+ large_community="10:20:21",
+ local_preference=4,
+ metric=5,
+ metric_type="type-2",
+ origin="egp",
+ originator_id="10.0.2.2",
+ src="fdda:5cc1:23:4::12",
+ tag=4,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="replaced",
+ ),
+ )
+ commands = [
+ "delete policy route-map test3 rule 1 match interface eth2",
+ "set policy route-map test3 rule 1 set ip-next-hop 10.20.10.22",
+ "set policy route-map test3 rule 1 set community replace 100:100",
+ "set policy route-map test3 rule 1 set large-community replace 10:20:21",
+ "set policy route-map test3 rule 1 set metric-type type-2",
+ "set policy route-map test3 rule 1 set originator-id 10.0.2.2",
+ "set policy route-map test3 rule 1 set tag 4",
+ "set policy route-map test3 rule 1 set src fdda:5cc1:23:4::12",
+ "set policy route-map test3 rule 1 match peer 1.1.1.3",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_route_maps_replaced_idempotent(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ metric=1,
+ peer="1.1.1.2",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.20",
+ local_preference=4,
+ metric=5,
+ metric_type="type-1",
+ origin="egp",
+ originator_id="10.0.2.3",
+ src="10.0.2.15",
+ tag=5,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="replaced",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_route_maps_overridden(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test2",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(rpki="invalid", peer="1.1.1.3"),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.22",
+ large_community="10:20:21",
+ local_preference=4,
+ metric=5,
+ metric_type="type-2",
+ origin="egp",
+ originator_id="10.0.2.2",
+ src="10.0.2.15",
+ tag=4,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="overridden",
+ ),
+ )
+ commands = [
+ "delete policy route-map test3",
+ "set policy route-map test2 rule 1 action permit",
+ "set policy route-map test2 rule 1 set bgp-extcommunity-rt 22:11",
+ "set policy route-map test2 rule 1 set ip-next-hop 10.20.10.22",
+ "set policy route-map test2 rule 1 set ipv6-next-hop global fdda:5cc1:23:4::1f",
+ "set policy route-map test2 rule 1 set large-community replace 10:20:21",
+ "set policy route-map test2 rule 1 set local-preference 4",
+ "set policy route-map test2 rule 1 set metric 5",
+ "set policy route-map test2 rule 1 set metric-type type-2",
+ "set policy route-map test2 rule 1 set origin egp",
+ "set policy route-map test2 rule 1 set originator-id 10.0.2.2",
+ "set policy route-map test2 rule 1 set src 10.0.2.15",
+ "set policy route-map test2 rule 1 set tag 4",
+ "set policy route-map test2 rule 1 set weight 4",
+ "set policy route-map test2 rule 1 set community replace internet",
+ "set policy route-map test2 rule 1 match peer 1.1.1.3",
+ "set policy route-map test2 rule 1 match rpki invalid",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_route_maps__deny_overridden(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test2",
+ entries=[
+ dict(
+ sequence=1,
+ action="deny",
+ match=dict(rpki="invalid", peer="1.1.1.5"),
+ ),
+ ],
+ ),
+ ],
+ state="overridden",
+ ),
+ )
+ commands = [
+ "delete policy route-map test3",
+ "set policy route-map test2 rule 1 action deny",
+ "set policy route-map test2 rule 1 match peer 1.1.1.5",
+ "set policy route-map test2 rule 1 match rpki invalid",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_route_maps_overridden_idempotent(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ metric=1,
+ peer="1.1.1.2",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.20",
+ local_preference=4,
+ metric=5,
+ metric_type="type-1",
+ origin="egp",
+ originator_id="10.0.2.3",
+ src="10.0.2.15",
+ tag=5,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="overridden",
+ ),
+ )
+ self.execute_module(changed=False, commands=[])
+
+ def test_vyos_route_maps_rendered(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ metric=1,
+ peer="1.1.1.2",
+ ipv6=dict(next_hop="fdda:5cc1:23:4::1f"),
+ ),
+ set=dict(
+ ipv6_next_hop=dict(
+ ip_type="global",
+ value="fdda:5cc1:23:4::1f",
+ ),
+ community=dict(value="internet"),
+ bgp_extcommunity_rt="22:11",
+ ip_next_hop="10.20.10.20",
+ local_preference=4,
+ metric=5,
+ metric_type="type-1",
+ origin="egp",
+ originator_id="10.0.2.3",
+ src="10.0.2.15",
+ tag=5,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ dict(
+ route_map="test1",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ description="test",
+ on_match=dict(next=True),
+ ),
+ dict(
+ sequence=2,
+ action="permit",
+ on_match=dict(goto=4),
+ ),
+ ],
+ ),
+ ],
+ state="rendered",
+ ),
+ )
+ rendered_cmds = [
+ "set policy route-map test3 rule 1 action permit",
+ "set policy route-map test3 rule 1 set bgp-extcommunity-rt 22:11",
+ "set policy route-map test3 rule 1 set ip-next-hop 10.20.10.20",
+ "set policy route-map test3 rule 1 set ipv6-next-hop global fdda:5cc1:23:4::1f",
+ "set policy route-map test3 rule 1 set local-preference 4",
+ "set policy route-map test3 rule 1 set metric 5",
+ "set policy route-map test3 rule 1 set metric-type type-1",
+ "set policy route-map test3 rule 1 set origin egp",
+ "set policy route-map test3 rule 1 set originator-id 10.0.2.3",
+ "set policy route-map test3 rule 1 set src 10.0.2.15",
+ "set policy route-map test3 rule 1 set tag 5",
+ "set policy route-map test3 rule 1 set weight 4",
+ "set policy route-map test3 rule 1 set community replace internet",
+ "set policy route-map test3 rule 1 match interface eth2",
+ "set policy route-map test3 rule 1 match metric 1",
+ "set policy route-map test3 rule 1 match peer 1.1.1.2",
+ "set policy route-map test3 rule 1 match ipv6 nexthop fdda:5cc1:23:4::1f",
+ "set policy route-map test3 rule 1 match rpki invalid",
+ "set policy route-map test1 rule 1 description test",
+ "set policy route-map test1 rule 1 action permit",
+ "set policy route-map test1 rule 1 on-match next",
+ "set policy route-map test1 rule 2 action permit",
+ "set policy route-map test1 rule 2 on-match goto 4",
+ ]
+ result = self.execute_module(changed=False)
+ self.assertEqual(
+ sorted(result["rendered"]),
+ sorted(rendered_cmds),
+ result["rendered"],
+ )
+
+ def test_yos_route_maps_parsed(self):
+ parsed_str = (
+ "set policy route-map test3 rule 1 action 'permit'"
+ "\nset policy route-map test3 rule 1 match interface 'eth2'\nset policy route-map test3 rule 1 match ipv6 nexthop"
+ " 'fdda:5cc1:23:4::1f'\nset policy route-map test3 rule 1 match metric '1'\nset policy route-map test3 rule 1 match peer "
+ "'1.1.1.2'\nset policy route-map test3 rule 1 match rpki 'invalid'\nset policy route-map test3 rule 1 set bgp-extcommunity-rt "
+ "'22:11'\nset policy route-map test3 rule 1 set community replace 'internet'\nset policy route-map test3 rule 1 set ipv6-next-hop global"
+ " 'fdda:5cc1:23:4::1f'\nset policy route-map test3 rule 1 set ip-next-hop '10.20.10.20'\nset policy route-map "
+ "test3 rule 1 set local-preference '4'\nset policy route-map test3 rule 1 set metric '5'\nset policy route-map test3 "
+ "rule 1 set metric-type 'type-1'\nset policy route-map test3 rule 1 set origin 'egp'\nset policy route-map test3 rule 1 set originator-id "
+ "'10.0.2.3'\nset policy route-map test3 rule 1 set src '10.0.2.15'"
+ "\nset policy route-map test3 rule 1 set tag '5'\nset policy route-map test3 rule 1 set weight '4'"
+ )
+ set_module_args(dict(running_config=parsed_str, state="parsed"))
+ result = self.execute_module(changed=False)
+ parsed_list = [
+ {
+ "entries": [
+ {
+ "action": "permit",
+ "match": {
+ "interface": "eth2",
+ "ipv6": {"next_hop": "fdda:5cc1:23:4::1f"},
+ "metric": 1,
+ "peer": "1.1.1.2",
+ "rpki": "invalid",
+ },
+ "sequence": 1,
+ "set": {
+ "bgp_extcommunity_rt": "22:11",
+ "community": {"value": "internet"},
+ "ip_next_hop": "10.20.10.20",
+ "ipv6_next_hop": {
+ "ip_type": "global",
+ "value": "fdda:5cc1:23:4::1f",
+ },
+ "local_preference": "4",
+ "metric": "5",
+ "metric_type": "type-1",
+ "origin": "egp",
+ "originator_id": "10.0.2.3",
+ "src": "10.0.2.15",
+ "tag": "5",
+ "weight": "4",
+ },
+ },
+ ],
+ "route_map": "test3",
+ },
+ ]
+ self.assertEqual(parsed_list, result["parsed"])
+
+ def test_vyos_route_maps_gathered(self):
+ set_module_args(dict(state="gathered"))
+ result = self.execute_module(changed=False)
+ gathered_list = [
+ {
+ "entries": [
+ {
+ "action": "permit",
+ "match": {
+ "interface": "eth2",
+ "ipv6": {"next_hop": "fdda:5cc1:23:4::1f"},
+ "metric": 1,
+ "peer": "1.1.1.2",
+ "rpki": "invalid",
+ },
+ "sequence": 1,
+ "set": {
+ "bgp_extcommunity_rt": "22:11",
+ "community": {"value": "internet"},
+ "ip_next_hop": "10.20.10.20",
+ "ipv6_next_hop": {
+ "ip_type": "global",
+ "value": "fdda:5cc1:23:4::1f",
+ },
+ "local_preference": "4",
+ "metric": "5",
+ "metric_type": "type-1",
+ "origin": "egp",
+ "originator_id": "10.0.2.3",
+ "src": "10.0.2.15",
+ "tag": "5",
+ "weight": "4",
+ },
+ },
+ ],
+ "route_map": "test3",
+ },
+ ]
+ self.assertEqual(gathered_list, result["gathered"])
+
+ def test_vyos_route_maps_deleted(self):
+ set_module_args(
+ dict(
+ config=[
+ dict(
+ route_map="test3",
+ entries=[
+ dict(
+ sequence=1,
+ action="permit",
+ match=dict(
+ rpki="invalid",
+ interface="eth2",
+ ),
+ set=dict(
+ origin="egp",
+ originator_id="10.0.2.3",
+ src="10.0.2.15",
+ tag=5,
+ weight=4,
+ ),
+ ),
+ ],
+ ),
+ ],
+ state="deleted",
+ ),
+ )
+ commands = ["delete policy route-map test3"]
+ self.execute_module(changed=True, commands=commands)
diff --git a/tests/unit/modules/network/vyos/test_vyos_system.py b/tests/unit/modules/network/vyos/test_vyos_system.py
index cf405cab..5edfa0df 100644
--- a/tests/unit/modules/network/vyos/test_vyos_system.py
+++ b/tests/unit/modules/network/vyos/test_vyos_system.py
@@ -45,11 +45,26 @@ class TestVyosSystemModule(TestVyosModule):
)
self.load_config = self.mock_load_config.start()
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.modules.vyos_system.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.modules.vyos_system.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(TestVyosSystemModule, self).tearDown()
self.mock_get_config.stop()
self.mock_load_config.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
def load_fixtures(self, commands=None, filename=None):
self.get_config.return_value = load_fixture("vyos_config_config.cfg")
@@ -112,3 +127,67 @@ class TestVyosSystemModule(TestVyosModule):
"delete system name-server",
]
self.execute_module(changed=True, commands=commands)
+
+
+class TestVyosSystemModule14(TestVyosModule):
+ module = vyos_system
+
+ def setUp(self):
+ super(TestVyosSystemModule14, self).setUp()
+
+ self.mock_get_config = patch(
+ "ansible_collections.vyos.vyos.plugins.modules.vyos_system.get_config",
+ )
+ self.get_config = self.mock_get_config.start()
+
+ self.mock_load_config = patch(
+ "ansible_collections.vyos.vyos.plugins.modules.vyos_system.load_config",
+ )
+ self.load_config = self.mock_load_config.start()
+
+ self.mock_get_os_version = patch(
+ "ansible_collections.vyos.vyos.plugins.modules.vyos_system.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.modules.vyos_system.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(TestVyosSystemModule14, self).tearDown()
+
+ self.mock_get_config.stop()
+ self.mock_load_config.stop()
+ self.mock_get_os_version.stop()
+ self.mock_facts_get_os_version.stop()
+
+ def load_fixtures(self, commands=None, filename=None):
+ self.get_config.return_value = load_fixture("vyos_config_config.cfg")
+
+ def test_vyos_system_domain_search(self):
+ set_module_args(dict(domain_search=["foo.example.com", "bar.example.com"]))
+ commands = [
+ "set system domain-search 'foo.example.com'",
+ "set system domain-search 'bar.example.com'",
+ ]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_system_clear_domain_search(self):
+ set_module_args(dict(domain_search=[]))
+ commands = ["delete system domain-search"]
+ self.execute_module(changed=True, commands=commands)
+
+ def test_vyos_system_clear_all(self):
+ set_module_args(dict(state="absent"))
+ commands = [
+ "delete system host-name",
+ "delete system domain-search",
+ "delete system domain-name",
+ "delete system name-server",
+ ]
+ self.execute_module(changed=True, commands=commands)
diff --git a/tests/unit/modules/utils.py b/tests/unit/modules/utils.py
index 6489f13f..e2d17abd 100644
--- a/tests/unit/modules/utils.py
+++ b/tests/unit/modules/utils.py
@@ -20,6 +20,9 @@ def set_module_args(args):
args = json.dumps({"ANSIBLE_MODULE_ARGS": args})
basic._ANSIBLE_ARGS = to_bytes(args)
+ profile = "legacy"
+ basic._ANSIBLE_PROFILE = profile
+
class AnsibleExitJson(Exception):
pass