mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-22 20:13:59 -07:00
Add aggregate for junos modules and sub spec validation (#27726)
* Add aggregate for junos modules and sub spec validation * aggregate support of junos modules * aggregate sub spec validation * relevant changes to junos integration test * junos module boilerplate changes * Add new boilerplate for junos modules * Fix CI issues
This commit is contained in:
parent
6d59ac1bb4
commit
d3e5d30f7c
32 changed files with 1696 additions and 508 deletions
|
@ -147,13 +147,141 @@
|
|||
provider: "{{ netconf }}"
|
||||
register: config
|
||||
|
||||
- name: Get running configuration
|
||||
junos_rpc:
|
||||
rpc: get-configuration
|
||||
provider: "{{ netconf }}"
|
||||
register: config
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'<name>ge-0/0/1</name>' not in config.xml"
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/1
|
||||
junos_interface:
|
||||
name: ge-0/0/1
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/2
|
||||
junos_interface:
|
||||
name: ge-0/0/2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Set interface on aggregate
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *ge-0/0/1")
|
||||
- result.diff.prepared | search("\+ *description test-interface-1")
|
||||
- result.diff.prepared | search("\+ *speed 1g")
|
||||
- result.diff.prepared | search("\+ *mtu 512")
|
||||
- result.diff.prepared | search("\+ *link-mode half-duplex")
|
||||
- result.diff.prepared | search("\+ *description test-interface-2")
|
||||
- result.diff.prepared | search("\+ *speed 10m")
|
||||
- result.diff.prepared | search("\+ * mtu 256")
|
||||
- result.diff.prepared | search("\+ *link-mode full-duplex")
|
||||
|
||||
- name: Set interface on aggregate (idempotent)
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
||||
- name: Disable interface on aggregate
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: down}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: down}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *disable")
|
||||
|
||||
- name: Enable interface on aggregate
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: up}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: up}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *disable")
|
||||
|
||||
- name: Deactivate interface configuration on aggregate
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, active: False}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, active: False}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *inactive[:] ge-0/0/1")
|
||||
- result.diff.prepared | search("! *inactive[:] ge-0/0/2")
|
||||
|
||||
- name: Activate interface configuration on aggregate
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, active: True}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, active: True}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *active[:] ge-0/0/1")
|
||||
- result.diff.prepared | search("! *active[:] ge-0/0/2")
|
||||
|
||||
- name: Delete interface on aggregate
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: absent}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *ge-0/0/1")
|
||||
- result.diff.prepared | search("\- *description test-interface-1")
|
||||
- result.diff.prepared | search("\- *speed 1g")
|
||||
- result.diff.prepared | search("\- *mtu 512")
|
||||
- result.diff.prepared | search("\- *link-mode half-duplex")
|
||||
- result.diff.prepared | search("\- *description test-interface-2")
|
||||
- result.diff.prepared | search("\- *speed 10m")
|
||||
- result.diff.prepared | search("\- * mtu 256")
|
||||
- result.diff.prepared | search("\- *link-mode full-duplex")
|
||||
|
||||
- name: Delete interface aggregate (idempotent)
|
||||
junos_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: absent}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
|
|
@ -110,3 +110,151 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/1
|
||||
junos_l3_interface:
|
||||
name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/2
|
||||
junos_l3_interface:
|
||||
name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Configure l3 interface in aggregate
|
||||
junos_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address 1.1.1.1/32")
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address fd5d:12c9:2201:1::1/128")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address 2.2.2.2/32")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address fd5d:12c9:2201:2::2/128")
|
||||
|
||||
- name: Configure l3 interface in aggregate (idempotent)
|
||||
junos_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
active: True
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
active: True
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
||||
- name: Deactivate l3 interface configuration
|
||||
junos_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
active: False
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
active: False
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *inactive[:] address 1.1.1.1/32")
|
||||
- result.diff.prepared | search("! *inactive[:] address fd5d:12c9:2201:1::1/128")
|
||||
- result.diff.prepared | search("! *inactive[:] address 2.2.2.2/32")
|
||||
- result.diff.prepared | search("! *inactive[:] address fd5d:12c9:2201:2::2/128")
|
||||
|
||||
- name: Activate l3 interface configuration
|
||||
junos_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
active: True
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
active: True
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *active[:] address 1.1.1.1/32")
|
||||
- result.diff.prepared | search("! *active[:] address fd5d:12c9:2201:1::1/128")
|
||||
- result.diff.prepared | search("! *active[:] address 2.2.2.2/32")
|
||||
- result.diff.prepared | search("! *active[:] address fd5d:12c9:2201:2::2/128")
|
||||
|
||||
- name: Delete l3 interface configuration
|
||||
junos_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
state: absent
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address 1.1.1.1/32")
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address fd5d:12c9:2201:1::1/128")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address 2.2.2.2/32")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address fd5d:12c9:2201:2::2/128")
|
||||
|
||||
- name: Delete l3 interface configuration (idempotent)
|
||||
junos_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
state: absent
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
|
|
@ -296,3 +296,87 @@
|
|||
- "'<size>64k</size>' not in config.xml"
|
||||
- "'<files>40</files>' not in config.xml"
|
||||
- "'<log-rotate-frequency>20</log-rotate-frequency>' not in config.xml"
|
||||
|
||||
- name: Seup file logging using aggregate
|
||||
junos_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, state: absent}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Configure file logging using aggregate
|
||||
junos_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, active: True}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, active: True}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *file test-1")
|
||||
- result.diff.prepared | search("\+ *pfe critical")
|
||||
- result.diff.prepared | search("\+ *file test-2")
|
||||
- result.diff.prepared | search("\+ *kernel emergency")
|
||||
|
||||
- name: Deactivate file logging configuration using aggregate
|
||||
junos_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, active: False}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, active: False}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *inactive[:] file test-1")
|
||||
- result.diff.prepared | search("! *inactive[:] pfe")
|
||||
- result.diff.prepared | search("! *inactive[:] file test-2")
|
||||
- result.diff.prepared | search("! *inactive[:] kernel")
|
||||
|
||||
- name: activate file logging configuration using aggregate
|
||||
junos_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, active: True}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, active: True}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *active[:] file test-1")
|
||||
- result.diff.prepared | search("! *active[:] pfe")
|
||||
- result.diff.prepared | search("! *active[:] file test-2")
|
||||
- result.diff.prepared | search("! *active[:] kernel")
|
||||
|
||||
- name: Delete file logging using aggregate
|
||||
junos_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, state: absent}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *file test-1")
|
||||
- result.diff.prepared | search("\- *pfe critical")
|
||||
- result.diff.prepared | search("\- *file test-2")
|
||||
- result.diff.prepared | search("\- *kernel emergency")
|
||||
|
||||
- name: Delete file logging using aggregate (idempotent)
|
||||
junos_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, state: absent}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
|
|
@ -140,3 +140,102 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
||||
- name: Setup static route for aggegrate
|
||||
junos_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, state: absent}
|
||||
- {address: 5.5.5.0/24, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
|
||||
- name: Confgiure static route using aggegrate
|
||||
junos_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, next_hop: 3.3.3.3, preference: 10, qualified_next_hop: 5.5.5.5, qualified_preference: 30}
|
||||
- {address: 5.5.5.0/24, next_hop: 6.6.6.6, preference: 11, qualified_next_hop: 7.7.7.7, qualified_preference: 12}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *route 4.4.4.0/24")
|
||||
- result.diff.prepared | search("\+ *next-hop 3.3.3.3")
|
||||
- result.diff.prepared | search("\+ *qualified-next-hop 5.5.5.5")
|
||||
- result.diff.prepared | search("\+ *preference 30")
|
||||
- result.diff.prepared | search("\+ *preference 10")
|
||||
- result.diff.prepared | search("\+ *route 5.5.5.0/24")
|
||||
- result.diff.prepared | search("\+ *next-hop 6.6.6.6")
|
||||
- result.diff.prepared | search("\+ *qualified-next-hop 7.7.7.7")
|
||||
- result.diff.prepared | search("\+ *preference 12")
|
||||
- result.diff.prepared | search("\+ *preference 11")
|
||||
|
||||
- name: Deactivate static route configuration using aggegrate
|
||||
junos_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, next_hop: 3.3.3.3, preference: 10, qualified_next_hop: 5.5.5.5, qualified_preference: 30, active: False}
|
||||
- {address: 5.5.5.0/24, next_hop: 6.6.6.6, preference: 11, qualified_next_hop: 7.7.7.7, qualified_preference: 12, active: False}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *inactive[:] route 4.4.4.0/24")
|
||||
- result.diff.prepared | search("! *inactive[:] qualified-next-hop 5.5.5.5")
|
||||
- result.diff.prepared | search("! *inactive[:] preference")
|
||||
- result.diff.prepared | search("! *inactive[:] route 5.5.5.0/24")
|
||||
- result.diff.prepared | search("! *inactive[:] qualified-next-hop 7.7.7.7")
|
||||
- result.diff.prepared | search("! *inactive[:] preference")
|
||||
|
||||
- name: Activate static route configuration using aggegrate
|
||||
junos_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, next_hop: 3.3.3.3, preference: 10, qualified_next_hop: 5.5.5.5, qualified_preference: 30, active: True}
|
||||
- {address: 5.5.5.0/24, next_hop: 6.6.6.6, preference: 11, qualified_next_hop: 7.7.7.7, qualified_preference: 12, active: True}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *active[:] route 4.4.4.0/24")
|
||||
- result.diff.prepared | search("! *active[:] qualified-next-hop 5.5.5.5")
|
||||
- result.diff.prepared | search("! *active[:] preference")
|
||||
- result.diff.prepared | search("! *active[:] route 5.5.5.0/24")
|
||||
- result.diff.prepared | search("! *active[:] qualified-next-hop 7.7.7.7")
|
||||
- result.diff.prepared | search("! *active[:] preference")
|
||||
|
||||
- name: Delete static route configuration using aggegrate
|
||||
junos_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, state: absent}
|
||||
- {address: 5.5.5.0/24, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *route 4.4.4.0/24")
|
||||
- result.diff.prepared | search("\- *next-hop 3.3.3.3")
|
||||
- result.diff.prepared | search("\- *qualified-next-hop 5.5.5.5")
|
||||
- result.diff.prepared | search("\- *preference 30")
|
||||
- result.diff.prepared | search("\- *preference 10")
|
||||
- result.diff.prepared | search("\- *route 5.5.5.0/24")
|
||||
- result.diff.prepared | search("\- *next-hop 6.6.6.6")
|
||||
- result.diff.prepared | search("\- *qualified-next-hop 7.7.7.7")
|
||||
- result.diff.prepared | search("\- *preference 12")
|
||||
- result.diff.prepared | search("\- *preference 11")
|
||||
|
||||
- name: Delete static route configuration using aggegrate (idempotent)
|
||||
junos_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, state: absent}
|
||||
- {address: 5.5.5.0/24, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
|
|
@ -102,3 +102,83 @@
|
|||
that:
|
||||
- "result.changed == true"
|
||||
- "'<name>test-vlan</name>' not in config.xml"
|
||||
|
||||
- name: Setup vlan configuration for aggregate
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, state: absent }
|
||||
- { vlan_id: 160, name: test_vlan_2, state: absent }
|
||||
provider: "{{ netconf }}"
|
||||
|
||||
- name: Create vlan configuration using aggregate
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, description: test vlan-1, state: present }
|
||||
- { vlan_id: 160, name: test_vlan_2, description: test vlan-2, state: present }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *vlans")
|
||||
- result.diff.prepared | search("\+ *test_vlan_1")
|
||||
- result.diff.prepared | search("\+ *vlan-id 159")
|
||||
- result.diff.prepared | search("\+ *test_vlan_2")
|
||||
- result.diff.prepared | search("\+ *vlan-id 160")
|
||||
|
||||
- name: Deactivate vlan configuration using aggregate
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, description: test vlan-1, active: False }
|
||||
- { vlan_id: 160, name: test_vlan_2, description: test vlan-2, active: False }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *inactive[:] test_vlan_1")
|
||||
- result.diff.prepared | search("! *inactive[:] test_vlan_2")
|
||||
|
||||
- name: activate vlan configuration using aggregate
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, description: test vlan-1, active: True }
|
||||
- { vlan_id: 160, name: test_vlan_2, description: test vlan-2, active: True }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("! *active[:] test_vlan_1")
|
||||
- result.diff.prepared | search("! *active[:] test_vlan_2")
|
||||
|
||||
- name: Delete vlan configuration using aggregate
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, state: absent }
|
||||
- { vlan_id: 160, name: test_vlan_2, state: absent }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *test_vlan_1")
|
||||
- result.diff.prepared | search("\- *vlan-id 159")
|
||||
- result.diff.prepared | search("\- *test_vlan_2")
|
||||
- result.diff.prepared | search("\- *vlan-id 160")
|
||||
|
||||
- name: Delete vlan configuration using aggregate (idempotent)
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, state: absent }
|
||||
- { vlan_id: 160, name: test_vlan_2, state: absent }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
|
|
@ -167,3 +167,171 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
||||
- name: Setup vrf using aggregate
|
||||
junos_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
state: absent
|
||||
- name: test-2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Create vrf using aggregate
|
||||
junos_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
description: test-vrf-1
|
||||
interfaces:
|
||||
- ge-0/0/3
|
||||
- ge-0/0/2
|
||||
rd: 1.1.1.1:10
|
||||
target: target:65514:113
|
||||
state: present
|
||||
- name: test-2
|
||||
description: test-vrf-2
|
||||
interfaces:
|
||||
- ge-0/0/4
|
||||
- ge-0/0/5
|
||||
rd: 2.2.2.2:10
|
||||
target: target:65515:114
|
||||
state: present
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- result.diff.prepared | search("\+ *test-1")
|
||||
- result.diff.prepared | search("\+ *description test-vrf-1")
|
||||
- result.diff.prepared | search("\+ *instance-type vrf")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("\+ *route-distinguisher 1.1.1.1:10")
|
||||
- result.diff.prepared | search("\+ *vrf-target target:65514:113")
|
||||
- result.diff.prepared | search("\+ *test-2")
|
||||
- result.diff.prepared | search("\+ *description test-vrf-2")
|
||||
- result.diff.prepared | search("\+ *instance-type vrf")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/4.0")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("\+ *route-distinguisher 2.2.2.2:10")
|
||||
- result.diff.prepared | search("\+ *vrf-target target:65515:114")
|
||||
|
||||
- name: Deactivate vrf configuration using aggregate
|
||||
junos_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
description: test-vrf-1
|
||||
interfaces:
|
||||
- ge-0/0/3
|
||||
- ge-0/0/2
|
||||
rd: 1.1.1.1:10
|
||||
target: target:65514:113
|
||||
state: present
|
||||
active: False
|
||||
- name: test-2
|
||||
description: test-vrf-2
|
||||
interfaces:
|
||||
- ge-0/0/4
|
||||
- ge-0/0/5
|
||||
rd: 2.2.2.2:10
|
||||
target: target:65515:114
|
||||
state: present
|
||||
active: False
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'edit routing-instances test-1' in result.diff.prepared"
|
||||
- result.diff.prepared | search("! *inactive[:] interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("! *inactive[:] interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("! *inactive[:] route-distinguisher")
|
||||
- result.diff.prepared | search("! *inactive[:] vrf-target")
|
||||
- "'edit routing-instances test-2' in result.diff.prepared"
|
||||
- result.diff.prepared | search("! *inactive[:] interface ge-0/0/4.0")
|
||||
- result.diff.prepared | search("! *inactive[:] interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("! *inactive[:] route-distinguisher")
|
||||
- result.diff.prepared | search("! *inactive[:] vrf-target")
|
||||
|
||||
- name: Deactivate vrf configuration using aggregate
|
||||
junos_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
description: test-vrf-1
|
||||
interfaces:
|
||||
- ge-0/0/3
|
||||
- ge-0/0/2
|
||||
rd: 1.1.1.1:10
|
||||
target: target:65514:113
|
||||
state: present
|
||||
active: True
|
||||
- name: test-2
|
||||
description: test-vrf-2
|
||||
interfaces:
|
||||
- ge-0/0/4
|
||||
- ge-0/0/5
|
||||
rd: 2.2.2.2:10
|
||||
target: target:65515:114
|
||||
state: present
|
||||
active: True
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'edit routing-instances test-1' in result.diff.prepared"
|
||||
- result.diff.prepared | search("! *active[:] interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("! *active[:] interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("! *active[:] route-distinguisher")
|
||||
- result.diff.prepared | search("! *active[:] vrf-target")
|
||||
- "'edit routing-instances test-2' in result.diff.prepared"
|
||||
- result.diff.prepared | search("! *active[:] interface ge-0/0/4.0")
|
||||
- result.diff.prepared | search("! *active[:] interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("! *active[:] route-distinguisher")
|
||||
- result.diff.prepared | search("! *active[:] vrf-target")
|
||||
|
||||
- name: Delete vrf configuration using aggregate
|
||||
junos_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
state: absent
|
||||
- name: test-2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- result.diff.prepared | search("\- *test-1")
|
||||
- result.diff.prepared | search("\- *description test-vrf-1")
|
||||
- result.diff.prepared | search("\- *instance-type vrf")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("\- *route-distinguisher 1.1.1.1:10")
|
||||
- result.diff.prepared | search("\- *vrf-target target:65514:113")
|
||||
- result.diff.prepared | search("\- *test-2")
|
||||
- result.diff.prepared | search("\- *description test-vrf-2")
|
||||
- result.diff.prepared | search("\- *instance-type vrf")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/4.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("\- *route-distinguisher 2.2.2.2:10")
|
||||
- result.diff.prepared | search("\- *vrf-target target:65515:114")
|
||||
|
||||
- name: Delete vrf configuration using aggregate (idempotent)
|
||||
junos_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
state: absent
|
||||
- name: test-2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'<disable/>' in config.xml"
|
||||
- result.diff.prepared | search("\+ *disable")
|
||||
- "'<name>ge-0/0/1</name>' in config.xml"
|
||||
|
||||
- name: Enable interface
|
||||
|
@ -103,7 +103,7 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'<disable/>' not in config.xml"
|
||||
- result.diff.prepared | search("\- *disable")
|
||||
- "'<name>ge-0/0/1</name>' in config.xml"
|
||||
|
||||
- name: Delete interface
|
||||
|
@ -124,3 +124,109 @@
|
|||
that:
|
||||
- "result.changed == true"
|
||||
- "'<name>ge-0/0/1</name>' not in config.xml"
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/1
|
||||
net_interface:
|
||||
name: ge-0/0/1
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/2
|
||||
net_interface:
|
||||
name: ge-0/0/2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Set interface on aggregate
|
||||
net_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *ge-0/0/1")
|
||||
- result.diff.prepared | search("\+ *description test-interface-1")
|
||||
- result.diff.prepared | search("\+ *speed 1g")
|
||||
- result.diff.prepared | search("\+ *mtu 512")
|
||||
- result.diff.prepared | search("\+ *link-mode half-duplex")
|
||||
- result.diff.prepared | search("\+ *description test-interface-2")
|
||||
- result.diff.prepared | search("\+ *speed 10m")
|
||||
- result.diff.prepared | search("\+ * mtu 256")
|
||||
- result.diff.prepared | search("\+ *link-mode full-duplex")
|
||||
|
||||
- name: Set interface on aggregate (idempotent)
|
||||
net_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
||||
- name: Disable interface on aggregate
|
||||
net_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: down}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: down}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *disable")
|
||||
|
||||
- name: Enable interface on aggregate
|
||||
net_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: up}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: up}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *disable")
|
||||
|
||||
- name: Delete interface on aggregate
|
||||
net_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: absent}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *ge-0/0/1")
|
||||
- result.diff.prepared | search("\- *description test-interface-1")
|
||||
- result.diff.prepared | search("\- *speed 1g")
|
||||
- result.diff.prepared | search("\- *mtu 512")
|
||||
- result.diff.prepared | search("\- *link-mode half-duplex")
|
||||
- result.diff.prepared | search("\- *description test-interface-2")
|
||||
- result.diff.prepared | search("\- *speed 10m")
|
||||
- result.diff.prepared | search("\- * mtu 256")
|
||||
- result.diff.prepared | search("\- *link-mode full-duplex")
|
||||
|
||||
- name: Delete interface aggregate (idempotent)
|
||||
net_interface:
|
||||
aggregate:
|
||||
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: half, mtu: 512, state: absent}
|
||||
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
|
|
@ -80,3 +80,107 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/1
|
||||
net_l3_interface:
|
||||
name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Aggregate setup- delete interface ge-0/0/2
|
||||
net_l3_interface:
|
||||
name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Configure l3 interface in aggregate
|
||||
net_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address 1.1.1.1/32")
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address fd5d:12c9:2201:1::1/128")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address 2.2.2.2/32")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *address fd5d:12c9:2201:2::2/128")
|
||||
|
||||
- name: Configure l3 interface in aggregate (idempotent)
|
||||
net_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
active: True
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
active: True
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
||||
- name: Delete l3 interface configuration
|
||||
net_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
state: absent
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address 1.1.1.1/32")
|
||||
- "'edit interfaces ge-0/0/1 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address fd5d:12c9:2201:1::1/128")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address 2.2.2.2/32")
|
||||
- "'edit interfaces ge-0/0/2 unit 0 family inet6' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *address fd5d:12c9:2201:2::2/128")
|
||||
|
||||
- name: Delete l3 interface configuration (idempotent)
|
||||
net_l3_interface:
|
||||
aggregate:
|
||||
- name: ge-0/0/1
|
||||
ipv4: 1.1.1.1
|
||||
ipv6: fd5d:12c9:2201:1::1
|
||||
state: absent
|
||||
- name: ge-0/0/2
|
||||
ipv4: 2.2.2.2
|
||||
ipv6: fd5d:12c9:2201:2::2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
|
|
@ -122,3 +122,35 @@
|
|||
that:
|
||||
- "result.changed == true"
|
||||
- "'<console>' not in config.xml"
|
||||
|
||||
- name: Configure file logging using aggregate
|
||||
net_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, active: True}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, active: True}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *file test-1")
|
||||
- result.diff.prepared | search("\+ *pfe critical")
|
||||
- result.diff.prepared | search("\+ *file test-2")
|
||||
- result.diff.prepared | search("\+ *kernel emergency")
|
||||
|
||||
- name: Delete file logging using aggregate
|
||||
net_logging:
|
||||
aggregate:
|
||||
- {dest: file, name: test-1, facility: pfe, level: critical, state: absent}
|
||||
- {dest: file, name: test-2, facility: kernel, level: emergency, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *file test-1")
|
||||
- result.diff.prepared | search("\- *pfe critical")
|
||||
- result.diff.prepared | search("\- *file test-2")
|
||||
- result.diff.prepared | search("\- *kernel emergency")
|
||||
|
|
|
@ -69,3 +69,66 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
||||
- name: Setup static route for aggegrate
|
||||
net_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, state: absent}
|
||||
- {address: 5.5.5.0/24, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
|
||||
- name: Confgiure static route using aggegrate
|
||||
net_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, next_hop: 3.3.3.3, preference: 10, qualified_next_hop: 5.5.5.5, qualified_preference: 30}
|
||||
- {address: 5.5.5.0/24, next_hop: 6.6.6.6, preference: 11, qualified_next_hop: 7.7.7.7, qualified_preference: 12}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *route 4.4.4.0/24")
|
||||
- result.diff.prepared | search("\+ *next-hop 3.3.3.3")
|
||||
- result.diff.prepared | search("\+ *qualified-next-hop 5.5.5.5")
|
||||
- result.diff.prepared | search("\+ *preference 30")
|
||||
- result.diff.prepared | search("\+ *preference 10")
|
||||
- result.diff.prepared | search("\+ *route 5.5.5.0/24")
|
||||
- result.diff.prepared | search("\+ *next-hop 6.6.6.6")
|
||||
- result.diff.prepared | search("\+ *qualified-next-hop 7.7.7.7")
|
||||
- result.diff.prepared | search("\+ *preference 12")
|
||||
- result.diff.prepared | search("\+ *preference 11")
|
||||
|
||||
- name: Delete static route configuration using aggegrate
|
||||
net_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, state: absent}
|
||||
- {address: 5.5.5.0/24, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *route 4.4.4.0/24")
|
||||
- result.diff.prepared | search("\- *next-hop 3.3.3.3")
|
||||
- result.diff.prepared | search("\- *qualified-next-hop 5.5.5.5")
|
||||
- result.diff.prepared | search("\- *preference 30")
|
||||
- result.diff.prepared | search("\- *preference 10")
|
||||
- result.diff.prepared | search("\- *route 5.5.5.0/24")
|
||||
- result.diff.prepared | search("\- *next-hop 6.6.6.6")
|
||||
- result.diff.prepared | search("\- *qualified-next-hop 7.7.7.7")
|
||||
- result.diff.prepared | search("\- *preference 12")
|
||||
- result.diff.prepared | search("\- *preference 11")
|
||||
|
||||
- name: Delete static route configuration using aggegrate (idempotent)
|
||||
net_static_route:
|
||||
aggregate:
|
||||
- {address: 4.4.4.0/24, state: absent}
|
||||
- {address: 5.5.5.0/24, state: absent}
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
that:
|
||||
- "result.changed == true"
|
||||
- "'<name>test_user</name>' in config.xml"
|
||||
- "'<class>read-only</class>' in config.xml"
|
||||
- "'<class>operator</class>' in config.xml"
|
||||
|
||||
- name: Create user again (idempotent)
|
||||
net_user:
|
||||
|
|
|
@ -58,3 +58,55 @@
|
|||
that:
|
||||
- "result.changed == true"
|
||||
- "'<name>test-vlan</name>' not in config.xml"
|
||||
|
||||
- name: Setup vlan configuration for aggregate
|
||||
net_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, state: absent }
|
||||
- { vlan_id: 160, name: test_vlan_2, state: absent }
|
||||
provider: "{{ netconf }}"
|
||||
|
||||
- name: Create vlan configuration using aggregate
|
||||
net_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, description: test vlan-1, state: present }
|
||||
- { vlan_id: 160, name: test_vlan_2, description: test vlan-2, state: present }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\+ *vlans")
|
||||
- result.diff.prepared | search("\+ *test_vlan_1")
|
||||
- result.diff.prepared | search("\+ *vlan-id 159")
|
||||
- result.diff.prepared | search("\+ *test_vlan_2")
|
||||
- result.diff.prepared | search("\+ *vlan-id 160")
|
||||
|
||||
- name: Delete vlan configuration using aggregate
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, state: absent }
|
||||
- { vlan_id: 160, name: test_vlan_2, state: absent }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == true'
|
||||
- result.diff.prepared | search("\- *test_vlan_1")
|
||||
- result.diff.prepared | search("\- *vlan-id 159")
|
||||
- result.diff.prepared | search("\- *test_vlan_2")
|
||||
- result.diff.prepared | search("\- *vlan-id 160")
|
||||
|
||||
- name: Delete vlan configuration using aggregate (idempotent)
|
||||
junos_vlan:
|
||||
aggregate:
|
||||
- { vlan_id: 159, name: test_vlan_1, state: absent }
|
||||
- { vlan_id: 160, name: test_vlan_2, state: absent }
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- 'result.changed == false'
|
||||
|
|
|
@ -23,13 +23,13 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'+ test-1' in result.diff.prepared"
|
||||
- "'+ description test-vrf-1;' in result.diff.prepared"
|
||||
- "'+ instance-type vrf;' in result.diff.prepared"
|
||||
- "'+ interface ge-0/0/5.0;' in result.diff.prepared"
|
||||
- "'+ interface ge-0/0/6.0;' in result.diff.prepared"
|
||||
- "'+ route-distinguisher 3.3.3.3:10;' in result.diff.prepared"
|
||||
- "'+ vrf-target target:65513:111;' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *test-1")
|
||||
- result.diff.prepared | search("\+ *description test-vrf-1")
|
||||
- result.diff.prepared | search("\+ *instance-type vrf")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/6.0")
|
||||
- result.diff.prepared | search("\+ *route-distinguisher 3.3.3.3:10")
|
||||
- result.diff.prepared | search("\+ *vrf-target target:65513:111")
|
||||
|
||||
- name: Configure vrf and its parameter (idempotent)
|
||||
net_vrf:
|
||||
|
@ -65,69 +65,17 @@
|
|||
that:
|
||||
- "result.changed == true"
|
||||
- "'[edit routing-instances test-1]' in result.diff.prepared"
|
||||
- "'+ interface ge-0/0/2.0;' in result.diff.prepared"
|
||||
- "'+ interface ge-0/0/3.0;' in result.diff.prepared"
|
||||
- "'- interface ge-0/0/5.0;' in result.diff.prepared"
|
||||
- "'- interface ge-0/0/6.0;' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/6.0")
|
||||
- "'[edit routing-instances test-1]' in result.diff.prepared"
|
||||
- "'- route-distinguisher 3.3.3.3:10;' in result.diff.prepared"
|
||||
- "'+ route-distinguisher 1.1.1.1:10;' in result.diff.prepared"
|
||||
- "'- vrf-target target:65513:111;' in result.diff.prepared"
|
||||
- "'+ vrf-target target:65514:113;' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *route-distinguisher 3.3.3.3:10")
|
||||
- result.diff.prepared | search("\+ *route-distinguisher 1.1.1.1:10")
|
||||
- result.diff.prepared | search("\- *vrf-target target:65513:111")
|
||||
- result.diff.prepared | search("\+ *vrf-target target:65514:113")
|
||||
|
||||
|
||||
- name: Deactivate vrf
|
||||
net_vrf:
|
||||
name: test-1
|
||||
description: test-vrf-1
|
||||
interfaces:
|
||||
- ge-0/0/3
|
||||
- ge-0/0/2
|
||||
rd: 1.1.1.1:10
|
||||
target: target:65514:113
|
||||
state: present
|
||||
active: False
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'[edit routing-instances]' in result.diff.prepared"
|
||||
- "'! inactive: test-1' in result.diff.prepared"
|
||||
- "'[edit routing-instances test-1]' in result.diff.prepared"
|
||||
- "'! inactive: interface ge-0/0/2.0' in result.diff.prepared"
|
||||
- "'! inactive: interface ge-0/0/3.0' in result.diff.prepared"
|
||||
- "'[edit routing-instances test-1]' in result.diff.prepared"
|
||||
- "'! inactive: route-distinguisher' in result.diff.prepared"
|
||||
- "'! inactive: vrf-target' in result.diff.prepared"
|
||||
|
||||
- name: Activate vrf
|
||||
net_vrf:
|
||||
name: test-1
|
||||
description: test-vrf-1
|
||||
interfaces:
|
||||
- ge-0/0/3
|
||||
- ge-0/0/2
|
||||
rd: 1.1.1.1:10
|
||||
target: target:65514:113
|
||||
state: present
|
||||
active: True
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'[edit routing-instances]' in result.diff.prepared"
|
||||
- "'! active: test-1' in result.diff.prepared"
|
||||
- "'[edit routing-instances test-1]' in result.diff.prepared"
|
||||
- "'! active: interface ge-0/0/2.0' in result.diff.prepared"
|
||||
- "'! active: interface ge-0/0/3.0' in result.diff.prepared"
|
||||
- "'[edit routing-instances test-1]' in result.diff.prepared"
|
||||
- "'! active: route-distinguisher' in result.diff.prepared"
|
||||
- "'! active: vrf-target' in result.diff.prepared"
|
||||
|
||||
- name: Delete vrf
|
||||
net_vrf:
|
||||
name: test-1
|
||||
|
@ -144,14 +92,13 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- "'[edit routing-instances]' in result.diff.prepared"
|
||||
- "'- test-1' in result.diff.prepared"
|
||||
- "'- description test-vrf-1;' in result.diff.prepared"
|
||||
- "'- instance-type vrf;' in result.diff.prepared"
|
||||
- "'- interface ge-0/0/2.0;' in result.diff.prepared"
|
||||
- "'- interface ge-0/0/3.0;' in result.diff.prepared"
|
||||
- "'- route-distinguisher 1.1.1.1:10;' in result.diff.prepared"
|
||||
- "'- vrf-target target:65514:113;' in result.diff.prepared"
|
||||
- result.diff.prepared | search("\- *test-1")
|
||||
- result.diff.prepared | search("\- *description test-vrf-1")
|
||||
- result.diff.prepared | search("\- *instance-type vrf")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("\- *route-distinguisher 1.1.1.1:10")
|
||||
- result.diff.prepared | search("\- *vrf-target target:65514:113")
|
||||
|
||||
- name: Delete vrf (idempotent)
|
||||
net_vrf:
|
||||
|
@ -169,3 +116,95 @@
|
|||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
||||
- name: Setup vrf using aggregate
|
||||
net_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
state: absent
|
||||
- name: test-2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- name: Create vrf using aggregate
|
||||
net_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
description: test-vrf-1
|
||||
interfaces:
|
||||
- ge-0/0/3
|
||||
- ge-0/0/2
|
||||
rd: 1.1.1.1:10
|
||||
target: target:65514:113
|
||||
state: present
|
||||
- name: test-2
|
||||
description: test-vrf-2
|
||||
interfaces:
|
||||
- ge-0/0/4
|
||||
- ge-0/0/5
|
||||
rd: 2.2.2.2:10
|
||||
target: target:65515:114
|
||||
state: present
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- result.diff.prepared | search("\+ *test-1")
|
||||
- result.diff.prepared | search("\+ *description test-vrf-1")
|
||||
- result.diff.prepared | search("\+ *instance-type vrf")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("\+ *route-distinguisher 1.1.1.1:10")
|
||||
- result.diff.prepared | search("\+ *vrf-target target:65514:113")
|
||||
- result.diff.prepared | search("\+ *test-2")
|
||||
- result.diff.prepared | search("\+ *description test-vrf-2")
|
||||
- result.diff.prepared | search("\+ *instance-type vrf")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/4.0")
|
||||
- result.diff.prepared | search("\+ *interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("\+ *route-distinguisher 2.2.2.2:10")
|
||||
- result.diff.prepared | search("\+ *vrf-target target:65515:114")
|
||||
|
||||
- name: Delete vrf configuration using aggregate
|
||||
net_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
state: absent
|
||||
- name: test-2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == true"
|
||||
- result.diff.prepared | search("\- *test-1")
|
||||
- result.diff.prepared | search("\- *description test-vrf-1")
|
||||
- result.diff.prepared | search("\- *instance-type vrf")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/2.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/3.0")
|
||||
- result.diff.prepared | search("\- *route-distinguisher 1.1.1.1:10")
|
||||
- result.diff.prepared | search("\- *vrf-target target:65514:113")
|
||||
- result.diff.prepared | search("\- *test-2")
|
||||
- result.diff.prepared | search("\- *description test-vrf-2")
|
||||
- result.diff.prepared | search("\- *instance-type vrf")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/4.0")
|
||||
- result.diff.prepared | search("\- *interface ge-0/0/5.0")
|
||||
- result.diff.prepared | search("\- *route-distinguisher 2.2.2.2:10")
|
||||
- result.diff.prepared | search("\- *vrf-target target:65515:114")
|
||||
|
||||
- name: Delete vrf configuration using aggregate (idempotent)
|
||||
net_vrf:
|
||||
aggregate:
|
||||
- name: test-1
|
||||
state: absent
|
||||
- name: test-2
|
||||
state: absent
|
||||
provider: "{{ netconf }}"
|
||||
register: result
|
||||
|
||||
- assert:
|
||||
that:
|
||||
- "result.changed == false"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue