From b8cd646afd256b56ddc57e1fc38b0f142232710c Mon Sep 17 00:00:00 2001 From: Ganesh Nalawade Date: Tue, 18 Jul 2017 12:14:10 +0530 Subject: [PATCH] net_lldp_interface module implementation for junos (#26915) * junos_lldp_interface module implementation * junos_lldp_interface integration test * net_lldp_interface module intgration test for junos * Add lldp configuration parameter in junos_lldp * Modify junos_lldp testcase as per above change * Add net_lldp_interface module documentation --- .../network/interface/net_lldp_interface.py | 81 ++++++++ .../modules/network/junos/junos_lldp.py | 82 +++++++- .../network/junos/junos_lldp_interface.py | 182 ++++++++++++++++++ test/integration/junos.yaml | 7 + .../junos_lldp/tests/netconf/basic.yaml | 82 +++++++- .../junos_lldp_interface/defaults/main.yaml | 2 + .../junos_lldp_interface/tasks/main.yaml | 2 + .../junos_lldp_interface/tasks/netconf.yaml | 16 ++ .../tests/netconf/basic.yaml | 104 ++++++++++ .../targets/net_lldp/tests/junos/basic.yaml | 4 +- .../net_lldp_interface/tests/junos/basic.yaml | 78 ++++++++ .../tests/netconf/basic.yaml | 3 + 12 files changed, 628 insertions(+), 15 deletions(-) create mode 100644 lib/ansible/modules/network/interface/net_lldp_interface.py create mode 100644 lib/ansible/modules/network/junos/junos_lldp_interface.py create mode 100644 test/integration/targets/junos_lldp_interface/defaults/main.yaml create mode 100644 test/integration/targets/junos_lldp_interface/tasks/main.yaml create mode 100644 test/integration/targets/junos_lldp_interface/tasks/netconf.yaml create mode 100644 test/integration/targets/junos_lldp_interface/tests/netconf/basic.yaml create mode 100644 test/integration/targets/net_lldp_interface/tests/junos/basic.yaml create mode 100644 test/integration/targets/net_lldp_interface/tests/netconf/basic.yaml diff --git a/lib/ansible/modules/network/interface/net_lldp_interface.py b/lib/ansible/modules/network/interface/net_lldp_interface.py new file mode 100644 index 00000000000..d3106915366 --- /dev/null +++ b/lib/ansible/modules/network/interface/net_lldp_interface.py @@ -0,0 +1,81 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# (c) 2017, Ansible by Red Hat, inc +# +# This file is part of Ansible by Red Hat +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . +# + +ANSIBLE_METADATA = {'metadata_version': '1.0', + 'status': ['preview'], + 'supported_by': 'core'} + +DOCUMENTATION = """ +--- +module: net_lldp_interface +version_added: "2.4" +author: "Ganesh Nalawade (@ganeshrn)" +short_description: Manage LLDP interfaces configuration on network devices +description: + - This module provides declarative management of LLDP interfaces + configuration on network devices. +options: + name: + description: + - Name of the interface LLDP should be configured on. + aggregate: + description: List of interfaces LLDP should be configured on. + purge: + description: + - Purge interfaces not defined in the aggregate parameter. + default: no + state: + description: + - State of the LLDP configuration. + default: present + choices: ['present', 'absent', 'enabled', 'disabled'] +""" + +EXAMPLES = """ +- name: Configure LLDP on specific interfaces + net_lldp_interface: + name: eth1 + state: present + +- name: Disable LLDP on specific interfaces + net_lldp_interface: + name: eth1 + state: disabled + +- name: Enable LLDP on specific interfaces + net_lldp_interface: + name: eth1 + state: enabled + +- name: Delete LLDP on specific interfaces + net_lldp_interface: + name: eth1 + state: absent +""" + +RETURN = """ +commands: + description: The list of configuration mode commands to send to the device + returned: always, except for the platforms that use Netconf transport to manage the device. + type: list + sample: + - set service lldp eth1 disable +""" diff --git a/lib/ansible/modules/network/junos/junos_lldp.py b/lib/ansible/modules/network/junos/junos_lldp.py index 313bbaa0c26..3f96ea6ad31 100644 --- a/lib/ansible/modules/network/junos/junos_lldp.py +++ b/lib/ansible/modules/network/junos/junos_lldp.py @@ -34,11 +34,34 @@ description: - This module provides declarative management of LLDP service on Juniper JUNOS network devices. options: + interval: + description: + - Frequency at which LLDP advertisements are sent (in seconds). + transmit_delay: + description: + - Specify the number of seconds the device waits before sending + advertisements to neighbors after a change is made in local system. + hold_multiplier: + description: + - Specify the number of seconds that LLDP information is held before it is + discarded. The multiplier value is used in combination with the + C(interval) value. + enable: + description: + - If value is C(True) it enable LLDP protocol on remote device, if value + is C(False) it disables LLDP protocol. + default: present + choices: [True, False] state: description: - - State of the LLDP configuration. + - Value of C(present) ensures given LLDP configuration + is present on device and LLDP is enabled, for value of C(absent) + LLDP configuration is deleted and LLDP is in disabled state. + Value C(enabled) ensures LLDP protocol is enabled and LLDP configuration + if any is configured on remote device, for value of C(disabled) it ensures + LLDP protocol is disabled any LLDP configuration if any is still present. default: present - choices: ['present', 'absent'] + choices: ['present', 'absent', 'enabled', 'disabled'] active: description: - Specifies whether or not the configuration is active or deactivated @@ -54,10 +77,24 @@ notes: EXAMPLES = """ - name: Enable LLDP service junos_lldp: - state: present + state: enabled - name: Disable LLDP service - vyos_lldp: + junos_lldp: + state: disabled + +- name: Set LLDP parameters + junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 + state: present + +- name: Delete LLDP parameters + junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 state: absent """ @@ -89,12 +126,39 @@ except ImportError: USE_PERSISTENT_CONNECTION = True +def validate_interval(value, module): + if not 5 <= value <= 32768: + module.fail_json(msg='interval must be between 5 and 32768') + + +def validate_hold_multiplier(value, module): + if not 5 <= value <= 32768: + module.fail_json(msg='hold_multiplier must be between 2 and 10') + + +def validate_transmit_delay(value, module): + if not 1 <= value <= 8192: + module.fail_json(msg='transmit_delay must be between 2 and 10') + + +def validate_param_values(module, obj): + for key in obj: + # validate the param value (if validator func exists) + validator = globals().get('validate_%s' % key) + if callable(validator): + validator(module.params.get(key), module) + + def main(): """ main entry point for module execution """ argument_spec = dict( + interval=dict(type='int'), + transmit_delay=dict(type='int'), + hold_multiplier=dict(type='int'), purge=dict(default=False, type='bool'), - state=dict(default='present', choices=['present', 'absent']), + state=dict(default='present', choices=['present', 'absent', 'enabled', 'disabled']), + active=dict(default=True, type='bool') ) argument_spec.update(junos_argument_spec) @@ -114,11 +178,17 @@ def main(): param_to_xpath_map = collections.OrderedDict() param_to_xpath_map.update([ + ('interval', {'xpath': 'advertisement-interval', 'leaf_only': True}), + ('transmit_delay', {'xpath': 'transmit-delay', 'leaf_only': True}), + ('hold_multiplier', {'xpath': 'hold-multiplier', 'leaf_only': True}), ('disable', {'xpath': 'disable', 'tag_only': True, 'is_key': True}) ]) state = module.params.get('state') - module.params['disable'] = True if state == 'absent' else False + module.params['disable'] = True if state in ('disabled', 'absent') else False + + if state in ('enabled', 'disabled'): + module.params['state'] = 'present' want = map_params_to_obj(module, param_to_xpath_map) ele = map_obj_to_ele(module, want, top) diff --git a/lib/ansible/modules/network/junos/junos_lldp_interface.py b/lib/ansible/modules/network/junos/junos_lldp_interface.py new file mode 100644 index 00000000000..999bad73957 --- /dev/null +++ b/lib/ansible/modules/network/junos/junos_lldp_interface.py @@ -0,0 +1,182 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +# (c) 2017, Ansible by Red Hat, inc +# +# This file is part of Ansible by Red Hat +# +# Ansible is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# Ansible is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with Ansible. If not, see . +# + +ANSIBLE_METADATA = {'metadata_version': '1.0', + 'status': ['preview'], + 'supported_by': 'core'} + + +DOCUMENTATION = """ +--- +module: junos_lldp_interface +version_added: "2.4" +author: "Ganesh Nalawade (@ganeshrn)" +short_description: Manage LLDP interfaces configuration on Juniper JUNOS network devices +description: + - This module provides declarative management of LLDP interfaces + configuration on Juniper JUNOS network devices. +options: + name: + description: + - Name of the interface LLDP should be configured on. + aggregate: + description: List of interfaces LLDP should be configured on. + purge: + description: + - Purge interfaces not defined in the aggregate parameter. + default: no + state: + description: + - Value of C(present) ensures given LLDP configured on given I(interfaces) + and is enabled, for value of C(absent) LLDP configuration on given I(interfaces) deleted. + Value C(enabled) ensures LLDP protocol is enabled on given I(interfaces) and + for value of C(disabled) it ensures LLDP is disabled on given I(interfaces). + default: present + choices: ['present', 'absent', 'enabled', 'disabled'] + active: + description: + - Specifies whether or not the configuration is active or deactivated + default: True + choices: [True, False] +requirements: + - ncclient (>=v0.5.2) +notes: + - This module requires the netconf system service be enabled on + the remote device being managed +""" + +EXAMPLES = """ +- name: Configure LLDP on specific interfaces + junos_lldp_interface: + name: ge-0/0/5 + state: present + +- name: Disable LLDP on specific interfaces + junos_lldp_interface: + name: ge-0/0/5 + state: disabled + +- name: Enable LLDP on specific interfaces + junos_lldp_interface: + name: ge-0/0/5 + state: enabled + +- name: Delete LLDP configuration on specific interfaces + junos_lldp_interface: + name: ge-0/0/5 + state: present + +- name: Deactivate LLDP on specific interfaces + junos_lldp_interface: + name: ge-0/0/5 + state: present + active: False + +- name: Activate LLDP on specific interfaces + junos_lldp_interface: + name: ge-0/0/5 + state: present + active: True +""" + +RETURN = """ +diff.prepared: + description: Configuration difference before and after applying change. + returned: when configuration is changed and diff option is enabled. + type: string + sample: > + [edit protocols lldp] + + interface ge-0/0/5; +""" +import collections + +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.junos import junos_argument_spec, check_args +from ansible.module_utils.junos import load_config, map_params_to_obj, map_obj_to_ele +from ansible.module_utils.junos import commit_configuration, discard_changes, locked_config + +try: + from lxml.etree import tostring +except ImportError: + from xml.etree.ElementTree import tostring + +USE_PERSISTENT_CONNECTION = True + + +def main(): + """ main entry point for module execution + """ + argument_spec = dict( + name=dict(), + aggregate=dict(type='list'), + purge=dict(default=False, type='bool'), + state=dict(default='present', choices=['present', 'absent', 'enabled', 'disabled']), + active=dict(default=True, type='bool') + ) + + argument_spec.update(junos_argument_spec) + + module = AnsibleModule(argument_spec=argument_spec, + supports_check_mode=True) + + warnings = list() + check_args(module, warnings) + + result = {'changed': False} + + if warnings: + result['warnings'] = warnings + + top = 'protocols/lldp/interface' + + param_to_xpath_map = collections.OrderedDict() + param_to_xpath_map.update([ + ('name', {'xpath': 'name', 'is_key': True}), + ('disable', {'xpath': 'disable', 'tag_only': True}) + ]) + + state = module.params.get('state') + module.params['disable'] = True if state in ('disabled', 'absent') else False + + if state in ('enabled', 'disabled'): + module.params['state'] = 'present' + + want = map_params_to_obj(module, param_to_xpath_map) + ele = map_obj_to_ele(module, want, top) + + with locked_config(module): + diff = load_config(module, tostring(ele), warnings, action='replace') + + commit = not module.check_mode + if diff: + if commit: + commit_configuration(module) + else: + discard_changes(module) + result['changed'] = True + + if module._diff: + result['diff'] = {'prepared': diff} + + module.exit_json(**result) + +if __name__ == "__main__": + main() diff --git a/test/integration/junos.yaml b/test/integration/junos.yaml index eb44bdf0dff..d0fe524d4b6 100644 --- a/test/integration/junos.yaml +++ b/test/integration/junos.yaml @@ -127,6 +127,13 @@ rescue: - set_fact: test_failed=true + - block: + - include_role: + name: junos_lldp_interface + when: "limit_to in ['*', 'junos_lldp_interface']" + rescue: + - set_fact: test_failed=true + ########### - name: Has any previous test failed? fail: diff --git a/test/integration/targets/junos_lldp/tests/netconf/basic.yaml b/test/integration/targets/junos_lldp/tests/netconf/basic.yaml index 5d6dc2ae489..1213921b2e3 100644 --- a/test/integration/targets/junos_lldp/tests/netconf/basic.yaml +++ b/test/integration/targets/junos_lldp/tests/netconf/basic.yaml @@ -1,12 +1,12 @@ --- - debug: msg="START junos_lldp netconf/basic.yaml" -- name: setup - remove lldp +- name: setup - Disable lldp and remove it's configuration junos_lldp: state: absent provider: "{{ netconf }}" -- name: configure lldp +- name: Enable lldp junos_lldp: state: present provider: "{{ netconf }}" @@ -15,9 +15,8 @@ - assert: that: - "result.changed == true" - - "'[edit]\n- protocols {\n- lldp {\n- disable;\n- }\n- }' in result.diff.prepared" -- name: configure lldp (idempotent) +- name: Enable lldp (idempotent) junos_lldp: state: present provider: "{{ netconf }}" @@ -27,8 +26,74 @@ that: - "result.changed == false" -- name: Disable lldp +- name: configure lldp parameters and enable lldp junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 + state: present + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'+ advertisement-interval 10;' in result.diff.prepared" + - "'+ transmit-delay 30;' in result.diff.prepared" + - "'+ hold-multiplier 5;' in result.diff.prepared" + +- name: configure lldp parameters and enable lldp(idempotent) + junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 + state: present + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == false" + +- name: configure lldp parameters and disable lldp + junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 + state: disabled + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'+ disable;' in result.diff.prepared" + - "'advertisement-interval 10;' not in result.diff.prepared" + - "'transmit-delay 30;' not in result.diff.prepared" + - "'hold-multiplier 5;' not in result.diff.prepared" + +- name: configure lldp parameters and enable lldp + junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 + state: enabled + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'- disable;' in result.diff.prepared" + - "'advertisement-interval 10;' not in result.diff.prepared" + - "'transmit-delay 30;' not in result.diff.prepared" + - "'hold-multiplier 5;' not in result.diff.prepared" + +- name: Remove lldp configuration and diable lldp + junos_lldp: + interval: 10 + hold_multiplier: 5 + transmit_delay: 30 state: absent provider: "{{ netconf }}" register: result @@ -36,9 +101,12 @@ - assert: that: - "result.changed == true" - - "'[edit]\n+ protocols {\n+ lldp {\n+ disable;\n+ }\n+ }' in result.diff.prepared" + - "'+ disable;' in result.diff.prepared" + - "'- advertisement-interval 10;' in result.diff.prepared" + - "'- transmit-delay 30;' in result.diff.prepared" + - "'- hold-multiplier 5;' in result.diff.prepared" -- name: Disable lldp (idempotent) +- name: Remove lldp (idempotent) junos_lldp: state: absent provider: "{{ netconf }}" diff --git a/test/integration/targets/junos_lldp_interface/defaults/main.yaml b/test/integration/targets/junos_lldp_interface/defaults/main.yaml new file mode 100644 index 00000000000..5f709c5aac1 --- /dev/null +++ b/test/integration/targets/junos_lldp_interface/defaults/main.yaml @@ -0,0 +1,2 @@ +--- +testcase: "*" diff --git a/test/integration/targets/junos_lldp_interface/tasks/main.yaml b/test/integration/targets/junos_lldp_interface/tasks/main.yaml new file mode 100644 index 00000000000..cc27f174fd8 --- /dev/null +++ b/test/integration/targets/junos_lldp_interface/tasks/main.yaml @@ -0,0 +1,2 @@ +--- +- { include: netconf.yaml, tags: ['netconf'] } diff --git a/test/integration/targets/junos_lldp_interface/tasks/netconf.yaml b/test/integration/targets/junos_lldp_interface/tasks/netconf.yaml new file mode 100644 index 00000000000..1286b354228 --- /dev/null +++ b/test/integration/targets/junos_lldp_interface/tasks/netconf.yaml @@ -0,0 +1,16 @@ +--- +- name: collect all netconf test cases + find: + paths: "{{ role_path }}/tests/netconf" + patterns: "{{ testcase }}.yaml" + register: test_cases + delegate_to: localhost + +- name: set test_items + set_fact: test_items="{{ test_cases.files | map(attribute='path') | list }}" + +- name: run test case + include: "{{ test_case_to_run }}" + with_items: "{{ test_items }}" + loop_control: + loop_var: test_case_to_run diff --git a/test/integration/targets/junos_lldp_interface/tests/netconf/basic.yaml b/test/integration/targets/junos_lldp_interface/tests/netconf/basic.yaml new file mode 100644 index 00000000000..f3ab806dc6b --- /dev/null +++ b/test/integration/targets/junos_lldp_interface/tests/netconf/basic.yaml @@ -0,0 +1,104 @@ +--- +- debug: msg="START junos_lldp_interface netconf/basic.yaml" + +- name: setup - Remove lldp interface configuration + junos_lldp_interface: + name: ge-0/0/5 + state: absent + provider: "{{ netconf }}" + +- name: lldp interface configuration + junos_lldp_interface: + name: ge-0/0/5 + state: present + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'+ interface ge-0/0/5;' in result.diff.prepared" + +- name: lldp interface configuration (idempotent) + junos_lldp_interface: + name: ge-0/0/5 + state: present + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == false" + +- name: Deactivate lldp interface configuration + junos_lldp_interface: + name: ge-0/0/5 + state: present + active: False + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'! inactive: interface ge-0/0/5' in result.diff.prepared" + +- name: Activate lldp interface configuration + junos_lldp_interface: + name: ge-0/0/5 + state: present + active: True + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'! active: interface ge-0/0/5' in result.diff.prepared" + +- name: Disable lldp on particular interface + junos_lldp_interface: + name: ge-0/0/5 + state: disabled + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'[edit protocols lldp interface ge-0/0/5]\n+ disable;' in result.diff.prepared" + +- name: Enable lldp on particular interface + junos_lldp_interface: + name: ge-0/0/5 + state: enabled + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'[edit protocols lldp interface ge-0/0/5]\n- disable;' in result.diff.prepared" + +- name: Delete lldp on particular interface + junos_lldp_interface: + name: ge-0/0/5 + state: absent + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'[edit protocols lldp]\n- interface ge-0/0/5;' in result.diff.prepared" + +- name: Delete lldp on particular interface (idempotent) + junos_lldp_interface: + name: ge-0/0/5 + state: absent + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == false" diff --git a/test/integration/targets/net_lldp/tests/junos/basic.yaml b/test/integration/targets/net_lldp/tests/junos/basic.yaml index 037765fb76a..8d42e279ea0 100644 --- a/test/integration/targets/net_lldp/tests/junos/basic.yaml +++ b/test/integration/targets/net_lldp/tests/junos/basic.yaml @@ -16,7 +16,7 @@ - assert: that: - "result.changed == true" - - "'[edit]\n- protocols {\n- lldp {\n- disable;\n- }\n- }' in result.diff.prepared" + - "'- disable;' in result.diff.prepared" - name: configure lldp (idempotent) net_lldp: @@ -37,7 +37,7 @@ - assert: that: - "result.changed == true" - - "'[edit]\n+ protocols {\n+ lldp {\n+ disable;\n+ }\n+ }' in result.diff.prepared" + - "'+ disable;' in result.diff.prepared" - name: Disable lldp (idempotent) net_lldp: diff --git a/test/integration/targets/net_lldp_interface/tests/junos/basic.yaml b/test/integration/targets/net_lldp_interface/tests/junos/basic.yaml new file mode 100644 index 00000000000..820881572bd --- /dev/null +++ b/test/integration/targets/net_lldp_interface/tests/junos/basic.yaml @@ -0,0 +1,78 @@ +--- +- debug: msg="START net_lldp_interface junos/basic.yaml" + +- name: setup - Remove lldp interface configuration + net_lldp_interface: + name: ge-0/0/5 + state: absent + provider: "{{ netconf }}" + +- name: lldp interface configuration + net_lldp_interface: + name: ge-0/0/5 + state: present + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'+ interface ge-0/0/5;' in result.diff.prepared" + +- name: lldp interface configuration (idempotent) + net_lldp_interface: + name: ge-0/0/5 + state: present + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == false" + +- name: Disable lldp on particular interface + net_lldp_interface: + name: ge-0/0/5 + state: disabled + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'[edit protocols lldp interface ge-0/0/5]\n+ disable;' in result.diff.prepared" + +- name: Enable lldp on particular interface + net_lldp_interface: + name: ge-0/0/5 + state: enabled + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'[edit protocols lldp interface ge-0/0/5]\n- disable;' in result.diff.prepared" + +- name: Delete lldp on particular interface + net_lldp_interface: + name: ge-0/0/5 + state: absent + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == true" + - "'[edit protocols lldp]\n- interface ge-0/0/5;' in result.diff.prepared" + +- name: Delete lldp on particular interface (idempotent) + net_lldp_interface: + name: ge-0/0/5 + state: absent + provider: "{{ netconf }}" + register: result + +- assert: + that: + - "result.changed == false" diff --git a/test/integration/targets/net_lldp_interface/tests/netconf/basic.yaml b/test/integration/targets/net_lldp_interface/tests/netconf/basic.yaml new file mode 100644 index 00000000000..5ff7cf5af8e --- /dev/null +++ b/test/integration/targets/net_lldp_interface/tests/netconf/basic.yaml @@ -0,0 +1,3 @@ +--- +- include: "{{ role_path }}/tests/junos/basic.yaml" + when: hostvars[inventory_hostname]['ansible_network_os'] == 'junos'