summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan <dan.murarasu@gmail.com>2018-09-25 07:08:39 +0100
committerTrishna Guha <trishnaguha17@gmail.com>2018-09-25 11:38:39 +0530
commita6c20488d3f5aa36dd770d7d3ca51f8a0b63335b (patch)
tree8766ef2bd801aa67f7238cf0cc739bd9a596a263
parentd5f8738bf2dcdbc370b113e77653c78d38845410 (diff)
downloadansible-a6c20488d3f5aa36dd770d7d3ca51f8a0b63335b.tar.gz
Add ospf net type (#45904)
* Added ospf network type option to nxos_interface_ospf module * Added documentation and example for the 'network' parameter * adding version
-rw-r--r--lib/ansible/modules/network/nxos/nxos_interface_ospf.py25
-rw-r--r--test/integration/targets/nxos_interface_ospf/tests/common/sanity.yaml2
-rw-r--r--test/units/modules/network/nxos/test_nxos_interface_ospf.py2
3 files changed, 28 insertions, 1 deletions
diff --git a/lib/ansible/modules/network/nxos/nxos_interface_ospf.py b/lib/ansible/modules/network/nxos/nxos_interface_ospf.py
index 9ee212fa07..306f56805b 100644
--- a/lib/ansible/modules/network/nxos/nxos_interface_ospf.py
+++ b/lib/ansible/modules/network/nxos/nxos_interface_ospf.py
@@ -36,6 +36,7 @@ notes:
- To remove an existing authentication configuration you should use
C(message_digest_key_id=default) plus all other options matching their
existing values.
+ - Loopback interfaces only support ospf network type 'point-to-point'.
- C(state=absent) removes the whole OSPF interface configuration.
options:
interface:
@@ -69,6 +70,11 @@ options:
- Setting to true will prevent this interface from receiving
HELLO packets.
type: bool
+ network:
+ description:
+ - Specifies interface ospf network type. Valid values are 'point-to-point' or 'broadcast'.
+ choices: ['point-to-point', 'broadcast']
+ version_added: "2.8"
message_digest:
description:
- Enables or disables the usage of message digest authentication.
@@ -105,6 +111,13 @@ EXAMPLES = '''
ospf: 1
area: 1
cost: default
+
+- nxos_interface_ospf:
+ interface: loopback0
+ ospf: prod
+ area: 0.0.0.0
+ network: point-to-point
+ state: present
'''
RETURN = '''
@@ -141,6 +154,7 @@ PARAM_TO_COMMAND_KEYMAP = {
'message_digest_algorithm_type': 'ip ospf message-digest-key',
'message_digest_encryption_type': 'ip ospf message-digest-key',
'message_digest_password': 'ip ospf message-digest-key',
+ 'network': 'ip ospf network',
}
@@ -249,6 +263,12 @@ def get_custom_command(existing_cmd, proposed, key, module):
if command not in existing_cmd:
commands.append(command)
+ if key == 'ip ospf network':
+ command = '{0} {1}'.format(key, proposed['network'])
+
+ if command not in existing_cmd:
+ commands.append(command)
+
elif key.startswith('ip ospf message-digest-key'):
if (proposed['message_digest_key_id'] != 'default' and
'options' not in key):
@@ -281,6 +301,8 @@ def state_present(module, existing, proposed, candidate):
if key == 'ip ospf passive-interface' and module.params.get('interface').upper().startswith('LO'):
module.fail_json(msg='loopback interface does not support passive_interface')
+ if key == 'ip ospf network' and value == 'broadcast' and module.params.get('interface').upper().startswith('LO'):
+ module.fail_json(msg='loopback interface does not support ospf network type broadcast')
if value is True:
commands.append(key)
elif value is False:
@@ -325,7 +347,7 @@ def state_absent(module, existing, proposed, candidate):
existing['message_digest_password'])
commands.append(command)
elif key in ['ip ospf authentication message-digest',
- 'ip ospf passive-interface']:
+ 'ip ospf passive-interface', 'ip ospf network']:
if value:
commands.append('no {0}'.format(key))
elif key == 'ip router ospf':
@@ -359,6 +381,7 @@ def main():
hello_interval=dict(required=False, type='str'),
dead_interval=dict(required=False, type='str'),
passive_interface=dict(required=False, type='bool'),
+ network=dict(required=False, type='str', choices=['broadcast', 'point-to-point']),
message_digest=dict(required=False, type='bool'),
message_digest_key_id=dict(required=False, type='str'),
message_digest_algorithm_type=dict(required=False, type='str', choices=['md5', 'default']),
diff --git a/test/integration/targets/nxos_interface_ospf/tests/common/sanity.yaml b/test/integration/targets/nxos_interface_ospf/tests/common/sanity.yaml
index 9a9c35d743..98b0030b4b 100644
--- a/test/integration/targets/nxos_interface_ospf/tests/common/sanity.yaml
+++ b/test/integration/targets/nxos_interface_ospf/tests/common/sanity.yaml
@@ -55,6 +55,7 @@
passive_interface: true
hello_interval: 15
dead_interval: 75
+ network: point-to-point
provider: "{{ connection }}"
state: present
register: result
@@ -80,6 +81,7 @@
passive_interface: false
hello_interval: 17
dead_interval: 70
+ network: broadcast
provider: "{{ connection }}"
state: present
register: result
diff --git a/test/units/modules/network/nxos/test_nxos_interface_ospf.py b/test/units/modules/network/nxos/test_nxos_interface_ospf.py
index 7d9e9d9598..525d88e267 100644
--- a/test/units/modules/network/nxos/test_nxos_interface_ospf.py
+++ b/test/units/modules/network/nxos/test_nxos_interface_ospf.py
@@ -54,3 +54,5 @@ class TestNxosInterfaceOspfModule(TestNxosModule):
def test_loopback_interface_failed(self):
set_module_args(dict(interface='loopback0', ospf=1, area=0, passive_interface=True))
self.execute_module(failed=True, changed=False)
+ set_module_args(dict(interface='loopback0', ospf=1, area=0, network='broadcast'))
+ self.execute_module(failed=True, changed=False)