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'