diff --git a/lib/ansible/module_utils/junos.py b/lib/ansible/module_utils/junos.py index 58885dc6078..f7cb8fc0012 100644 --- a/lib/ansible/module_utils/junos.py +++ b/lib/ansible/module_utils/junos.py @@ -57,7 +57,7 @@ ARGS_DEFAULT_VALUE = { OPERATION_LOOK_UP = { 'absent': 'delete', 'active': 'active', - 'suspend': 'inactive' + 'deactivate': 'inactive' } @@ -289,18 +289,19 @@ def map_obj_to_ele(module, want, top, value_map=None): ele = SubElement(ele, item) container = ele state = module.params.get('state') + active = module.params.get('active') + if active: + oper = 'active' + else: + oper = 'inactive' # build xml subtree for obj in want: - oper = None if container.tag != top_ele[-1]: node = SubElement(container, top_ele[-1]) else: node = container - if state and state != 'present': - oper = OPERATION_LOOK_UP.get(state) - for xpath, attributes in obj.items(): for attr in attributes: tag_only = attr.get('tag_only', False) @@ -309,16 +310,20 @@ def map_obj_to_ele(module, want, top, value_map=None): is_key = attr.get('is_key', False) value = attr.get('value') - # operation (delete/active/inactive) is added as element attribute - # only if it is key or tag only or leaf only node - if oper and not (is_key or tag_only or leaf_only): + # operation 'delete' is added as element attribute + # only if it is key or leaf only node + if state == 'absent' and not (is_key or leaf_only): + continue + + # for tag only node if value is false continue to next attr + if tag_only and not value: continue # convert param value to device specific value if value_map and xpath in value_map: value = value_map[xpath].get(value) - if value or tag_only or (leaf_only and value): + if value or tag_only or leaf_only: ele = node tags = xpath.split('/') if value: @@ -328,22 +333,39 @@ def map_obj_to_ele(module, want, top, value_map=None): ele = SubElement(ele, item) if tag_only: - if not value: - ele.set('delete', 'delete') + if state == 'present': + if not value: + # if value of tag_only node is false, delete the node + ele.set('delete', 'delete') + elif leaf_only: - if oper: + if state == 'present': ele.set(oper, oper) + ele.text = value + else: + ele.set('delete', 'delete') + # Add value of leaf node if required while deleting. + # in some cases if value is present while deleting, it + # can result in error, hence the check if is_value: ele.text = value - else: - ele.text = value else: ele.text = value + if HAS_LXML: par = ele.getparent() else: module.fail_json(msg='lxml is not installed.') - if is_key and oper and not par.attrib.get(oper): - par.set(oper, oper) + + if state == 'present': + # set replace attribute at parent node + if not par.attrib.get('replace'): + par.set('replace', 'replace') + + # set active/inactive at parent node + if not par.attrib.get(oper): + par.set(oper, oper) + else: + par.set('delete', 'delete') return root diff --git a/lib/ansible/modules/network/junos/junos_banner.py b/lib/ansible/modules/network/junos/junos_banner.py index a00b6996511..9e5f00b1841 100644 --- a/lib/ansible/modules/network/junos/junos_banner.py +++ b/lib/ansible/modules/network/junos/junos_banner.py @@ -53,7 +53,12 @@ options: - Specifies whether or not the configuration is present in the current devices active running configuration. default: present - choices: ['present', 'absent', 'active', 'suspend'] + choices: ['present', 'absent'] + active: + description: + - Specifies whether or not the configuration is active or deactivated + default: True + choices: [True, False] requirements: - ncclient (>=v0.5.2) notes: @@ -79,12 +84,14 @@ EXAMPLES = """ - name: deactivate the motd banner junos_banner: banner: motd - state: suspend + state: present + active: False - name: activate the motd banner junos_banner: banner: motd - state: active + state: present + active: True - name: Configure banner from file junos_banner: @@ -133,7 +140,8 @@ def main(): argument_spec = dict( banner=dict(required=True, choices=['login', 'motd']), text=dict(), - state=dict(default='present', choices=['present', 'absent', 'active', 'suspend']) + state=dict(default='present', choices=['present', 'absent']), + active=dict(default=True, type='bool') ) argument_spec.update(junos_argument_spec) @@ -156,10 +164,9 @@ def main(): param_to_xpath_map = collections.OrderedDict() - param_to_xpath_map.update({ - 'text': {'xpath': 'message' if module.params['banner'] == 'login' else 'announcement', - 'leaf_only': True} - }) + param_to_xpath_map.update([ + ('text', {'xpath': 'message' if module.params['banner'] == 'login' else 'announcement', 'leaf_only': True}) + ]) validate_param_values(module, param_to_xpath_map) diff --git a/lib/ansible/modules/network/junos/junos_interface.py b/lib/ansible/modules/network/junos/junos_interface.py index 23bcb4304f3..2b6de72cbbc 100644 --- a/lib/ansible/modules/network/junos/junos_interface.py +++ b/lib/ansible/modules/network/junos/junos_interface.py @@ -43,10 +43,7 @@ options: - Description of Interface. enabled: description: - - Configure operational status of the interface link. - If value is I(yes/true), interface is configured in up state. - For I(no/false) interface is configured in down state. - default: yes + - Interface link status. speed: description: - Interface link speed. @@ -73,9 +70,15 @@ options: default: no state: description: - - State of the Interface configuration. + - State of the Interface configuration, C(up) means present and + operationally up and C(down) means present and operationally C(down) default: present - choices: ['present', 'absent', 'active', 'suspend'] + choices: ['present', 'absent', 'up', 'down'] + active: + description: + - Specifies whether or not the configuration is active or deactivated + default: True + choices: [True, False] requirements: - ncclient (>=v0.5.2) notes: @@ -97,24 +100,24 @@ EXAMPLES = """ - name: make interface down junos_interface: name: ge-0/0/1 - state: present - enabled: False + state: down - name: make interface up junos_interface: name: ge-0/0/1 - state: present - enabled: True + state: up - name: Deactivate interface config junos_interface: name: ge-0/0/1 - state: suspend + state: present + active: False - name: Activate interface config net_interface: name: ge-0/0/1 - state: active + state: present + active: True - name: Configure interface speed, mtu, duplex junos_interface: @@ -123,7 +126,6 @@ EXAMPLES = """ speed: 1g mtu: 256 duplex: full - enabled: True """ RETURN = """ @@ -172,7 +174,7 @@ def main(): argument_spec = dict( name=dict(required=True), description=dict(), - enabled=dict(default=True, type='bool'), + enabled=dict(), speed=dict(), mtu=dict(type='int'), duplex=dict(choices=['full', 'half', 'auto']), @@ -181,7 +183,8 @@ def main(): collection=dict(), purge=dict(default=False, type='bool'), state=dict(default='present', - choices=['present', 'absent', 'active', 'suspend']) + choices=['present', 'absent', 'up', 'down']), + active=dict(default=True, type='bool') ) argument_spec.update(junos_argument_spec) @@ -200,18 +203,26 @@ def main(): top = 'interfaces/interface' param_to_xpath_map = collections.OrderedDict() - param_to_xpath_map.update({ - 'name': {'xpath': 'name', 'is_key': True}, - 'description': 'description', - 'speed': 'speed', - 'mtu': 'mtu', - 'enabled': {'xpath': 'disable', 'tag_only': True}, - 'duplex': 'link-mode' - }) + param_to_xpath_map.update([ + ('name', {'xpath': 'name', 'is_key': True}), + ('description', 'description'), + ('speed', 'speed'), + ('mtu', 'mtu'), + ('duplex', 'link-mode'), + ('disable', {'xpath': 'disable', 'tag_only': True}) + ]) + + state = module.params.get('state') + module.params['disable'] = True if state == 'down' else False + + if state in ('present', 'up', 'down'): + module.params['state'] = 'present' + + else: + module.params['disable'] = True choice_to_value_map = { - 'link-mode': {'full': 'full-duplex', 'half': 'half-duplex', 'auto': 'automatic'}, - 'disable': {True: False, False: True} + 'link-mode': {'full': 'full-duplex', 'half': 'half-duplex', 'auto': 'automatic'} } validate_param_values(module, param_to_xpath_map) diff --git a/lib/ansible/modules/network/junos/junos_system.py b/lib/ansible/modules/network/junos/junos_system.py index d29315102b4..a1bc3427872 100644 --- a/lib/ansible/modules/network/junos/junos_system.py +++ b/lib/ansible/modules/network/junos/junos_system.py @@ -65,7 +65,12 @@ options: configuration and when set to I(absent) the values should not be in the device active configuration default: present - choices: ['present', 'absent', 'active', 'suspend'] + choices: ['present', 'absent'] + active: + description: + - Specifies whether or not the configuration is active or deactivated + default: True + choices: [True, False] requirements: - ncclient (>=v0.5.2) notes: @@ -137,8 +142,8 @@ def main(): domain_name=dict(), domain_search=dict(type='list'), name_servers=dict(type='list'), - - state=dict(choices=['present', 'absent', 'active', 'suspend'], default='present') + state=dict(choices=['present', 'absent'], default='present'), + active=dict(default=True, type='bool') ) argument_spec.update(junos_argument_spec) @@ -164,12 +169,12 @@ def main(): top = 'system' param_to_xpath_map = collections.OrderedDict() - param_to_xpath_map.update({ - 'hostname': {'xpath': 'host-name', 'leaf_only': True}, - 'domain_name': {'xpath': 'domain-name', 'leaf_only': True}, - 'domain_search': {'xpath': 'domain-search', 'leaf_only': True, 'value_req': True}, - 'name_servers': {'xpath': 'name-server/name', 'is_key': True} - }) + param_to_xpath_map.update([ + ('hostname', {'xpath': 'host-name', 'leaf_only': True}), + ('domain_name', {'xpath': 'domain-name', 'leaf_only': True}), + ('domain_search', {'xpath': 'domain-search', 'leaf_only': True, 'value_req': True}), + ('name_servers', {'xpath': 'name-server/name', 'is_key': True}) + ]) validate_param_values(module, param_to_xpath_map) diff --git a/lib/ansible/modules/network/junos/junos_vlan.py b/lib/ansible/modules/network/junos/junos_vlan.py index 25beeeb3a76..5f6ef3750e3 100644 --- a/lib/ansible/modules/network/junos/junos_vlan.py +++ b/lib/ansible/modules/network/junos/junos_vlan.py @@ -59,7 +59,12 @@ options: description: - State of the VLAN configuration. default: present - choices: ['present', 'absent', 'active', 'suspend'] + choices: ['present', 'absent'] + active: + description: + - Specifies whether or not the configuration is active or deactivated + default: True + choices: [True, False] requirements: - ncclient (>=v0.5.2) notes: @@ -82,12 +87,14 @@ EXAMPLES = """ - name: deactive VLAN configuration junos_vlan: vlan_name: test - state: suspend + state: present + active: False - name: activate VLAN configuration junos_vlan: vlan_name: test - state: active + state: present + active: True """ RETURN = """ @@ -134,8 +141,8 @@ def main(): interfaces=dict(), collection=dict(), purge=dict(default=False, type='bool'), - state=dict(default='present', - choices=['present', 'absent', 'active', 'suspend']) + state=dict(default='present', choices=['present', 'absent']), + active=dict(default=True, type='bool') ) argument_spec.update(junos_argument_spec) @@ -154,11 +161,11 @@ def main(): top = 'vlans/vlan' param_to_xpath_map = collections.OrderedDict() - param_to_xpath_map.update({ - 'name': {'xpath': 'name', 'is_key': True}, - 'vlan_id': 'vlan-id', - 'description': 'description' - }) + param_to_xpath_map.update([ + ('name', {'xpath': 'name', 'is_key': True}), + ('vlan_id', 'vlan-id'), + ('description', 'description') + ]) validate_param_values(module, param_to_xpath_map) diff --git a/test/integration/targets/junos_banner/tests/netconf/basic.yaml b/test/integration/targets/junos_banner/tests/netconf/basic.yaml index 9ca9c7f332c..6b6cad98d89 100644 --- a/test/integration/targets/junos_banner/tests/netconf/basic.yaml +++ b/test/integration/targets/junos_banner/tests/netconf/basic.yaml @@ -15,10 +15,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'this is my login banner' in result.rpc" + - "'this is my login banner' in config.xml" - name: Create login banner (idempotent) junos_banner: @@ -36,27 +42,41 @@ junos_banner: banner: login text: this is my login banner - state: suspend + 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 result.rpc" + - "'this is my login banner' in config.xml" - name: Activate login banner junos_banner: banner: login text: this is my login banner - state: active + 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" - - "'' in result.rpc" + - "'this is my login banner' in config.xml" - name: delete login banner junos_banner: @@ -65,10 +85,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'this is my login banner' not in config.xml" - name: setup - remove motd banner junos_banner: @@ -84,13 +110,16 @@ provider: "{{ netconf }}" register: result -- debug: - msg: "{{ result }}" +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config - assert: that: - "result.changed == true" - - "'this is my motd banner' in result.rpc" + - "'this is my motd banner' in config.xml" - name: Create motd banner (idempotent) junos_banner: @@ -107,26 +136,42 @@ - name: Deactivate motd banner junos_banner: banner: motd - state: suspend + text: this is my motd banner + 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 result.rpc" + - "'this is my motd banner' in config.xml" - name: Activate motd banner junos_banner: banner: motd - state: active + text: this is my motd banner + 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" - - "'' in result.rpc" + - "'this is my motd banner' in config.xml" - name: delete motd banner junos_banner: @@ -135,7 +180,13 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'this is my motd banner' not in config.xml" diff --git a/test/integration/targets/junos_interface/tests/netconf/basic.yaml b/test/integration/targets/junos_interface/tests/netconf/basic.yaml index 70f993ba058..1a84965d373 100644 --- a/test/integration/targets/junos_interface/tests/netconf/basic.yaml +++ b/test/integration/targets/junos_interface/tests/netconf/basic.yaml @@ -16,14 +16,17 @@ provider: "{{ netconf }}" register: result -- debug: - msg: "{{ result }}" +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config - assert: that: - "result.changed == true" - - "'ge-0/0/1' in result.rpc" - - "'test-interface' in result.rpc" + - "'ge-0/0/1' in config.xml" + - "'test-interface' in config.xml" - name: Create interface (idempotent) junos_interface: @@ -41,29 +44,43 @@ junos_interface: name: ge-0/0/1 description: test-interface - state: suspend + 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 result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'' 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: active + 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" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'' in config.xml" + - "'ge-0/0/1' in config.xml" - name: Configure interface attributes junos_interface: @@ -76,44 +93,60 @@ 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 result.rpc" - - "'full-duplex' in result.rpc" - - "'256' in result.rpc" - - "'1g' in result.rpc" - - "'test-interface' in result.rpc" + - "'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 - state: present - enabled: False + state: down provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'' in config.xml" + - "'ge-0/0/1' in config.xml" - name: Enable interface junos_interface: name: ge-0/0/1 description: test-interface - state: present - enabled: True + state: up provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'' not in config.xml" + - "'ge-0/0/1' in config.xml" - name: Delete interface junos_interface: @@ -123,8 +156,19 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'ge-0/0/1' not in config.xml" diff --git a/test/integration/targets/junos_system/tests/netconf/basic.yaml b/test/integration/targets/junos_system/tests/netconf/basic.yaml index 090a76467c7..81c7d6fe7c2 100644 --- a/test/integration/targets/junos_system/tests/netconf/basic.yaml +++ b/test/integration/targets/junos_system/tests/netconf/basic.yaml @@ -14,10 +14,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'vsrx01' in result.rpc" + - "'vsrx01' in config.xml" - name: Set hostname (idempotent) junos_system: @@ -33,26 +39,40 @@ - name: Deactivate hostname configuration junos_system: hostname: vsrx01 - state: suspend + 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 result.rpc" + - "'' in config.xml" - name: Activate hostname configuration junos_system: hostname: vsrx01 - state: active + 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" - - "'' in result.rpc" + - "'vsrx01' in config.xml" - name: Delete hostname configuration junos_system: @@ -64,7 +84,7 @@ - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'vsrx01' in config.xml" - name: Teardown - set hostname junos_system: @@ -85,10 +105,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'ansible.com' in result.rpc" + - "'ansible.com' in config.xml" - name: Set domain name (idempotent) junos_system: @@ -104,26 +130,40 @@ - name: Deactivate domain name junos_system: domain_name: ansible.com - state: suspend + 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 result.rpc" + - "'' in config.xml" - name: Activate domain name junos_system: domain_name: ansible.com - state: active + 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" - - "'' in result.rpc" + - "'ansible.com' in config.xml" - name: Delete domain name junos_system: @@ -132,10 +172,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'ansible.com' not in config.xml" - name: Teardown - set domain name junos_system: @@ -161,13 +207,19 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" + - "'test.com' in config.xml" + - "'sample.com' in config.xml" -- name: Set domain search +- name: Set domain search (idempotency) junos_system: domain_search: - test.com @@ -185,30 +237,44 @@ domain_search: - test.com - sample.com - state: suspend + 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" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" + - "'test.com' in config.xml" + - "'sample.com' in config.xml" - name: Activate domain search junos_system: domain_search: - test.com - sample.com - state: active + 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" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" + - "'test.com' in config.xml" + - "'sample.com' in config.xml" - name: Delete domain search junos_system: @@ -219,11 +285,17 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" + - "'test.com' not in config.xml" + - "'sample.com' not in config.xml" - name: Setup - delete name servers junos_system: @@ -243,11 +315,17 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" + - "'8.8.8.8' in config.xml" + - "'8.8.4.4' in config.xml" - name: Set name servers (idempotent) junos_system: @@ -267,30 +345,43 @@ name_servers: - 8.8.8.8 - 8.8.4.4 - state: suspend + 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" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" + - "'' in config.xml" - name: Activate name servers junos_system: name_servers: - 8.8.8.8 - 8.8.4.4 - state: active + 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" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" + - "'8.8.8.8' in config.xml" + - "'8.8.4.4' in config.xml" - name: Delete name servers junos_system: @@ -301,8 +392,14 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" + - "'8.8.8.8' not in config.xml" + - "'8.8.4.4' not in config.xml" diff --git a/test/integration/targets/junos_vlan/tests/netconf/basic.yaml b/test/integration/targets/junos_vlan/tests/netconf/basic.yaml index a090b84c051..e154e93e851 100644 --- a/test/integration/targets/junos_vlan/tests/netconf/basic.yaml +++ b/test/integration/targets/junos_vlan/tests/netconf/basic.yaml @@ -18,14 +18,17 @@ provider: "{{ netconf }}" register: result -- debug: - msg: "{{ result }}" +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config - assert: that: - "result.changed == true" - - "'test-vlan' in result.rpc" - - "'100' in result.rpc" + - "'test-vlan' in config.xml" + - "'100' in config.xml" - name: Create vlan again (idempotent) junos_vlan: @@ -44,29 +47,42 @@ junos_vlan: vlan_id: 100 name: test-vlan - state: suspend + 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 result.rpc" - - "'test-vlan' in result.rpc" + - "'' in config.xml" + - "'test-vlan' in config.xml" - name: Activate vlan junos_vlan: vlan_id: 100 name: test-vlan - state: active + 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" - - "'' in result.rpc" - - "'test-vlan' in result.rpc" + - "'test-vlan' in config.xml" - name: Delete vlan junos_vlan: @@ -76,8 +92,13 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'test-vlan' in result.rpc" + - "'test-vlan' not in config.xml" diff --git a/test/integration/targets/net_banner/tests/junos/basic.yaml b/test/integration/targets/net_banner/tests/junos/basic.yaml index 038982ebedd..145fa895952 100644 --- a/test/integration/targets/net_banner/tests/junos/basic.yaml +++ b/test/integration/targets/net_banner/tests/junos/basic.yaml @@ -15,10 +15,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'this is my login banner' in result.rpc" + - "'this is my login banner' in config.xml" - name: Create login banner (idempotent) net_banner: @@ -39,10 +45,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'this is my login banner' not in config.xml" - name: setup - remove motd banner net_banner: @@ -58,13 +70,16 @@ provider: "{{ netconf }}" register: result -- debug: - msg: "{{ result }}" +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config - assert: that: - "result.changed == true" - - "'this is my motd banner' in result.rpc" + - "'this is my motd banner' in config.xml" - name: Create motd banner (idempotent) net_banner: @@ -85,7 +100,13 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'this is my motd banner' not in config.xml" diff --git a/test/integration/targets/net_interface/tests/junos/basic.yaml b/test/integration/targets/net_interface/tests/junos/basic.yaml index ba30cc099fb..b2dfa4fbc1a 100644 --- a/test/integration/targets/net_interface/tests/junos/basic.yaml +++ b/test/integration/targets/net_interface/tests/junos/basic.yaml @@ -16,14 +16,17 @@ provider: "{{ netconf }}" register: result -- debug: - msg: "{{ result }}" +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config - assert: that: - "result.changed == true" - - "'ge-0/0/1' in result.rpc" - - "'test-interface' in result.rpc" + - "'ge-0/0/1' in config.xml" + - "'test-interface' in config.xml" - name: Create interface (idempotent) net_interface: @@ -48,44 +51,60 @@ 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 result.rpc" - - "'full-duplex' in result.rpc" - - "'256' in result.rpc" - - "'1g' in result.rpc" - - "'test-interface' in result.rpc" + - "'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 net_interface: name: ge-0/0/1 description: test-interface - state: present - enabled: False + state: down provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'' in config.xml" + - "'ge-0/0/1' in config.xml" - name: Enable interface net_interface: name: ge-0/0/1 description: test-interface - state: present - enabled: True + state: up provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'' not in config.xml" + - "'ge-0/0/1' in config.xml" - name: Delete interface net_interface: @@ -95,8 +114,13 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'ge-0/0/1' in result.rpc" + - "'ge-0/0/1' not in config.xml" diff --git a/test/integration/targets/net_system/tests/junos/basic.yaml b/test/integration/targets/net_system/tests/junos/basic.yaml index 0b0c1bec08f..ab5c0678ee8 100644 --- a/test/integration/targets/net_system/tests/junos/basic.yaml +++ b/test/integration/targets/net_system/tests/junos/basic.yaml @@ -14,10 +14,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'vsrx01' in result.rpc" + - "'vsrx01' in config.xml" - name: Set hostname (idempotent) net_system: @@ -30,30 +36,6 @@ that: - "result.changed == false" -- name: Deactivate hostname configuration - net_system: - hostname: vsrx01 - state: suspend - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'' in result.rpc" - -- name: Activate hostname configuration - net_system: - hostname: vsrx01 - state: active - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'' in result.rpc" - - name: Delete hostname configuration net_system: hostname: vsrx01 @@ -61,10 +43,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'vsrx01' not in config.xml" - name: Teardown - set hostname net_system: @@ -85,10 +73,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'ansible.com' in result.rpc" + - "'ansible.com' in config.xml" - name: Set domain name (idempotent) net_system: @@ -101,30 +95,6 @@ that: - "result.changed == false" -- name: Deactivate domain name - net_system: - domain_name: ansible.com - state: suspend - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'' in result.rpc" - -- name: Activate domain name - net_system: - domain_name: ansible.com - state: active - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'' in result.rpc" - - name: Delete domain name net_system: domain_name: ansible.com @@ -132,10 +102,16 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" + - "'ansible.com' not in config.xml" - name: Teardown - set domain name net_system: @@ -161,11 +137,17 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" + - "'test.com' in config.xml" + - "'sample.com' in config.xml" - name: Set domain search net_system: @@ -180,36 +162,6 @@ that: - "result.changed == false" -- name: Deactivate domain search - net_system: - domain_search: - - test.com - - sample.com - state: suspend - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" - -- name: Activate domain search - net_system: - domain_search: - - test.com - - sample.com - state: active - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" - - name: Delete domain search net_system: domain_search: @@ -219,11 +171,17 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'test.com' in result.rpc" - - "'sample.com' in result.rpc" + - "'test.com' not in config.xml" + - "'sample.com' not in config.xml" - name: Setup - delete name servers net_system: @@ -243,11 +201,17 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" + - "'8.8.8.8' in config.xml" + - "'8.8.4.4' in config.xml" - name: Set name servers (idempotent) net_system: @@ -262,36 +226,6 @@ that: - "result.changed == false" -- name: Deactivate name servers - net_system: - name_servers: - - 8.8.8.8 - - 8.8.4.4 - state: suspend - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" - -- name: Activate name servers - net_system: - name_servers: - - 8.8.8.8 - - 8.8.4.4 - state: active - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" - - name: Delete name servers net_system: name_servers: @@ -301,8 +235,14 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'8.8.8.8' in result.rpc" - - "'8.8.4.4' in result.rpc" + - "'8.8.8.8' not in config.xml" + - "'8.8.4.4' not in config.xml" diff --git a/test/integration/targets/net_vlan/tests/junos/basic.yaml b/test/integration/targets/net_vlan/tests/junos/basic.yaml index 697b50777ef..9bd980de8df 100644 --- a/test/integration/targets/net_vlan/tests/junos/basic.yaml +++ b/test/integration/targets/net_vlan/tests/junos/basic.yaml @@ -16,14 +16,17 @@ provider: "{{ netconf }}" register: result -- debug: - msg: "{{ result }}" +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config - assert: that: - "result.changed == true" - - "'test-vlan' in result.rpc" - - "'100' in result.rpc" + - "'test-vlan' in config.xml" + - "'100' in config.xml" - name: Create vlan again (idempotent) net_vlan: @@ -37,34 +40,6 @@ that: - "result.changed == false" -- name: Deactivate vlan - net_vlan: - vlan_id: 100 - name: test-vlan - state: suspend - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'' in result.rpc" - - "'test-vlan' in result.rpc" - -- name: Activate vlan - net_vlan: - vlan_id: 100 - name: test-vlan - state: active - provider: "{{ netconf }}" - register: result - -- assert: - that: - - "result.changed == true" - - "'' in result.rpc" - - "'test-vlan' in result.rpc" - - name: Delete vlan net_vlan: vlan_id: 100 @@ -73,8 +48,13 @@ provider: "{{ netconf }}" register: result +- name: Get running configuration + junos_rpc: + rpc: get-configuration + provider: "{{ netconf }}" + register: config + - assert: that: - "result.changed == true" - - "'' in result.rpc" - - "'test-vlan' in result.rpc" + - "'test-vlan' not in config.xml"