junos_interface intent arguments (#27947)

* junos_interface intent arguments

*  Add check for intent argument in junos_interface
*  Integration test for intent arguments

* Minor type fixes

* Add delay only if config diff is present

* add enabled configuration argument

* net_interface test case changes

* Minor doc change
This commit is contained in:
Ganesh Nalawade 2017-08-13 13:18:15 +05:30 committed by GitHub
commit 21bd7bcbb0
6 changed files with 267 additions and 37 deletions

View file

@ -111,7 +111,7 @@
junos_interface:
name: ge-0/0/1
description: test-interface
state: down
enabled: False
provider: "{{ netconf }}"
register: result
@ -124,7 +124,7 @@
junos_interface:
name: ge-0/0/1
description: test-interface
state: up
enabled: True
provider: "{{ netconf }}"
register: result
@ -202,8 +202,8 @@
- name: Disable interface on aggregate
junos_interface:
aggregate:
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: full, mtu: 512, state: down}
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: down}
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: full, mtu: 512, enabled: False}
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, enabled: False}
provider: "{{ netconf }}"
register: result
@ -215,8 +215,8 @@
- name: Enable interface on aggregate
junos_interface:
aggregate:
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: full, mtu: 512, state: up}
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, state: up}
- { name: ge-0/0/1, description: test-interface-1, speed: 1g, duplex: full, mtu: 512, enabled: True}
- { name: ge-0/0/2, description: test-interface-2, speed: 10m, duplex: full, mtu: 256, enabled: True}
provider: "{{ netconf }}"
register: result

View file

@ -0,0 +1,89 @@
---
- debug: msg="START junos_interface netconf/intent.yaml"
- name: get facts
junos_facts:
provider: "{{ netconf }}"
register: result
- name: Define interface name for vSRX
set_fact:
name: pp0
when: result['ansible_facts']['ansible_net_model'] | search("vSRX*")
- name: Define interface name for vQFX
set_fact:
name: gr-0/0/0
when: result['ansible_facts']['ansible_net_model'] | search("vqfx*")
- name: Check intent arguments
junos_interface:
name: "{{ name }}"
state: up
tx_rate: ge(0)
rx_rate: le(0)
provider: "{{ netconf }}"
register: result
- assert:
that:
- "result.failed == false"
- name: Check intent arguments (failed condition)
junos_interface:
name: "{{ name }}"
state: down
tx_rate: gt(0)
rx_rate: lt(0)
provider: "{{ netconf }}"
ignore_errors: yes
register: result
- assert:
that:
- "result.failed == true"
- "'state eq(down)' in result.failed_conditions"
- "'tx_rate gt(0)' in result.failed_conditions"
- "'rx_rate lt(0)' in result.failed_conditions"
- name: Config + intent
junos_interface:
name: "{{ name }}"
enabled: False
state: down
provider: "{{ netconf }}"
register: result
- assert:
that:
- "result.failed == false"
- result.diff.prepared | search("\+ *disable")
- name: Config + intent (fail)
junos_interface:
name: "{{ name }}"
enabled: False
state: up
provider: "{{ netconf }}"
ignore_errors: yes
register: result
- assert:
that:
- "result.failed == true"
- "'state eq(up)' in result.failed_conditions"
- name: Aggregate config + intent (pass)
junos_interface:
aggregate:
- name: "{{ name }}"
enabled: True
state: up
provider: "{{ netconf }}"
ignore_errors: yes
register: result
- assert:
that:
- "result.failed == false"