--- - debug: msg="START junos_interface netconf/basic.yaml on connection={{ ansible_connection }}" - name: setup remove interface junos_interface: name: ge-0/0/1 description: test-interface state: absent provider: "{{ netconf }}" - name: Create interface junos_interface: name: ge-0/0/1 description: test-interface state: present provider: "{{ netconf }}" register: result - name: Get running configuration junos_rpc: rpc: get-configuration provider: "{{ netconf }}" register: config - assert: that: - "result.changed == true" - "'ge-0/0/1' in config.xml" - "'test-interface' in config.xml" - name: Create interface (idempotent) junos_interface: name: ge-0/0/1 description: test-interface state: present provider: "{{ netconf }}" register: result - assert: that: - "result.changed == false" - name: Deactivate interface configuration junos_interface: name: ge-0/0/1 description: test-interface state: present active: False provider: "{{ netconf }}" register: result - name: Get running configuration junos_rpc: rpc: get-configuration provider: "{{ netconf }}" register: config - assert: that: - "result.changed == true" - "'' in config.xml" - "'ge-0/0/1' in config.xml" - name: Activate interface configuration junos_interface: name: ge-0/0/1 description: test-interface state: present active: True provider: "{{ netconf }}" register: result - name: Get running configuration junos_rpc: rpc: get-configuration provider: "{{ netconf }}" register: config - assert: that: - "result.changed == true" - "'ge-0/0/1' in config.xml" - name: Configure interface attributes junos_interface: name: ge-0/0/1 description: test-interface state: present speed: 1g mtu: 256 duplex: full provider: "{{ netconf }}" register: result - name: Get running configuration junos_rpc: rpc: get-configuration provider: "{{ netconf }}" register: config - assert: that: - "result.changed == true" - "'ge-0/0/1' in config.xml" - "'full-duplex' in config.xml" - "'256' in config.xml" - "'1g' in config.xml" - "'test-interface' in config.xml" - name: Disable interface junos_interface: name: ge-0/0/1 description: test-interface enabled: False provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - result.diff.prepared is search("\+ *disable") - name: Enable interface junos_interface: name: ge-0/0/1 description: test-interface enabled: True provider: "{{ netconf }}" register: result - assert: that: - "result.changed == true" - result.diff.prepared is search("\- *disable") - name: Delete interface junos_interface: name: ge-0/0/1 description: test-interface state: absent provider: "{{ netconf }}" register: result - name: Get running configuration junos_rpc: rpc: get-configuration provider: "{{ netconf }}" register: config - assert: that: - "result.changed == true" - "'ge-0/0/1' 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, mtu: 512} - { name: ge-0/0/2, description: test-interface-2, speed: 10m, mtu: 256} duplex: full provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == true' - result.diff.prepared is search("\+ *ge-0/0/1") - result.diff.prepared is search("\+ *description test-interface-1") - result.diff.prepared is search("\+ *speed 1g") - result.diff.prepared is search("\+ *mtu 512") - result.diff.prepared is search("\+ *link-mode full-duplex") - result.diff.prepared is search("\+ *description test-interface-2") - result.diff.prepared is search("\+ *speed 10m") - result.diff.prepared is search("\+ * mtu 256") - result.diff.prepared is 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, mtu: 512 } - { name: ge-0/0/2, description: test-interface-2, speed: 10m, mtu: 256 } duplex: full provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == false' - name: Disable interface on aggregate junos_interface: aggregate: - name: ge-0/0/1 - name: ge-0/0/2 enabled: False provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == true' - result.diff.prepared is search("\+ *disable") - name: Enable interface on aggregate junos_interface: aggregate: - name: ge-0/0/1 - name: ge-0/0/2 enabled: True provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == true' - result.diff.prepared is search("\- *disable") - name: Deactivate interface configuration on aggregate junos_interface: aggregate: - { name: ge-0/0/1, description: test-interface-1, speed: 1g, mtu: 512 } - { name: ge-0/0/2, description: test-interface-2, speed: 10m, mtu: 256 } duplex: full active: False provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == true' - result.diff.prepared is search("! *inactive[:] ge-0/0/1") - result.diff.prepared is 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, mtu: 512 } - { name: ge-0/0/2, description: test-interface-2, speed: 10m, mtu: 256 } duplex: full active: True provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == true' - result.diff.prepared is search("! *active[:] ge-0/0/1") - result.diff.prepared is search("! *active[:] ge-0/0/2") - name: Delete interface on aggregate junos_interface: aggregate: - name: ge-0/0/1 - name: ge-0/0/2 state: absent provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == true' - result.diff.prepared is search("\- *ge-0/0/1") - result.diff.prepared is search("\- *description test-interface-1") - result.diff.prepared is search("\- *speed 1g") - result.diff.prepared is search("\- *mtu 512") - result.diff.prepared is search("\- *link-mode full-duplex") - result.diff.prepared is search("\- *description test-interface-2") - result.diff.prepared is search("\- *speed 10m") - result.diff.prepared is search("\- * mtu 256") - result.diff.prepared is search("\- *link-mode full-duplex") - name: Delete interface on aggregate (idempotent) junos_interface: aggregate: - name: ge-0/0/1 - name: ge-0/0/2 state: absent provider: "{{ netconf }}" register: result - assert: that: - 'result.changed == false' - debug: msg="END junos_interface netconf/basic.yaml on connection={{ ansible_connection }}"