diff options
author | Rohit Thakur <rohitthakur2590@outlook.com> | 2020-04-02 00:37:06 +0530 |
---|---|---|
committer | Rohit Thakur <rohitthakur2590@outlook.com> | 2020-05-11 19:27:16 +0530 |
commit | 37289b45840129f2296fbc9cff9a3eab97bdb2a5 (patch) | |
tree | b3b80384e7e8795911562726c5d76b2789d1cda9 /plugins/modules/vyos_ospfv2.py | |
parent | 62ddab1affb33cb83b7a31ae6076e73c23dd1d0a (diff) | |
download | vyos-ansible-collection-37289b45840129f2296fbc9cff9a3eab97bdb2a5.tar.gz vyos-ansible-collection-37289b45840129f2296fbc9cff9a3eab97bdb2a5.zip |
vyos ospfv2 rm added
Signed-off-by: Rohit Thakur <rohitthakur2590@outlook.com>
Diffstat (limited to 'plugins/modules/vyos_ospfv2.py')
-rw-r--r-- | plugins/modules/vyos_ospfv2.py | 1369 |
1 files changed, 1369 insertions, 0 deletions
diff --git a/plugins/modules/vyos_ospfv2.py b/plugins/modules/vyos_ospfv2.py new file mode 100644 index 0000000..73528eb --- /dev/null +++ b/plugins/modules/vyos_ospfv2.py @@ -0,0 +1,1369 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Copyright 2019 Red Hat +# GNU General Public License v3.0+ +# (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +############################################# +# WARNING # +############################################# +# +# This file is auto generated by the resource +# module builder playbook. +# +# Do not edit this file manually. +# +# Changes to this file will be over written +# by the resource module builder. +# +# Changes should be made in the model used to +# generate this file or in the resource module +# builder template. +# +############################################# + +""" +The module file for vyos_ospfv2 +""" + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + +ANSIBLE_METADATA = { + 'metadata_version': '1.1', + 'status': ['preview'], + 'supported_by': 'network' +} + +DOCUMENTATION = """ +--- +module: vyos_ospfv2 +version_added: 2.10 +short_description: Manages attributes of OSPF IPv4 routes on VyOS network devices. +description: This module manages attributes of OSPF IPv4 routes on VyOS network devices. +author: Rohit Thakur (@rohitthakur2590) +options: + config: + description: A provided OSPF route configuration. + type: list + elements: dict + suboptions: + ospf_area: + description: OSPF area. + type: list + elements: dict + suboptions: + area: + description: Configured to discard packets. + type: str + area_type: + description: Area type. + type: dict + suboptions: + normal: + description: Normal OSPF area. + type: bool + nssa: + description: Nssa OSPF area. + type: dict + suboptions: + default_cost: + description: Summary-default cost of nssa area. + type: int + no_summary: + description: Do not inject inter-area routes into stub. + type: bool + translate: + description: Nssa-abr. + type: str + choices: ['always', 'candidate', 'never'] + stub: + description: Stub OSPF area. + type: dict + suboptions: + default_cost: + description: Summary-default cost of stub area. + type: int + no_summary: + description: Do not inject inter-area routes into stub. + type: bool + authentication: + description: OSPF area authentication type. + type: str + choices: ['plaintext-password', 'md5'] + network: + description: OSPF network. + type: list + elements: dict + suboptions: + address: + required: True + description: OSPF IPv4 network address. + type: str + range: + description: Summarize routes matching prefix (border routers only). + type: list + elements: dict + suboptions: + address: + description: border router IPv4 address. + type: str + cost: + description: Metric for this range. + type: int + not_advertise: + description: Don't advertise this range. + type: bool + substitute: + description: Announce area range (IPv4 address) as another prefix. + type: str + shortcut: + description: Area's shortcut mode. + type: str + choices: ['default', 'disable', 'enable'] + virtual_link: + description: Virtual link address. + type: list + elements: dict + suboptions: + address: + description: virtual link address. + type: str + authentication: + description: OSPF area authentication type. + type: dict + suboptions: + md5: + description: MD5 key id based authentication. + type: dict + suboptions: + key_id: + description: MD5 key id. + type: int + md5_key: + description: MD5 key. + type: str + plaintext_password: + description: Plain text password. + type: str + dead_interval: + description: Interval after which a neighbor is declared dead. + type: int + hello_interval: + description: Interval between hello packets. + type: int + retransmit_interval: + description: Interval between retransmitting lost link state advertisements. + type: int + transmit_delay: + description: Link state transmit delay. + type: int + log_adjacency_changes: + description: Log changes in adjacency state. + type: str + choices: ['detail'] + max_metric: + description: OSPF maximum/infinite-distance metric. + type: dict + suboptions: + router_lsa: + description: Advertise own Router-LSA with infinite distance (stub router). + type: dict + suboptions: + administrative: + description: Administratively apply, for an indefinite period. + type: bool + on_shutdown: + description: Time to advertise self as stub-router. + type: int + on_startup: + description: Time to advertise self as stub-router + type: int + auto_cost: + description: Calculate OSPF interface cost according to bandwidth. + type: dict + suboptions: + reference_bandwidth: + description: Reference bandwidth cost in Mbits/sec. + type: int + default_information: + description: Control distribution of default information. + type: dict + suboptions: + originate: + description: Distribute a default route. + type: dict + suboptions: + always: + description: Always advertise default route. + type: bool + metric: + description: OSPF default metric. + type: int + metric_type: + description: OSPF Metric types for default routes. + type: int + route_map: + description: Route map references. + type: str + default_metric: + description: Metric of redistributed routes + type: int + distance: + description: Administrative distance. + type: dict + suboptions: + global: + description: Global OSPF administrative distance. + type: int + ospf: + description: OSPF administrative distance. + type: dict + suboptions: + external: + description: Distance for external routes. + type: int + inter_area: + description: Distance for inter-area routes. + type: int + intra_area: + description: Distance for intra-area routes. + type: int + mpls_te: + description: MultiProtocol Label Switching-Traffic Engineering (MPLS-TE) parameters. + type: dict + suboptions: + enabled: + description: Enable MPLS-TE functionality. + type: bool + router_address: + description: Stable IP address of the advertising router. + type: str + + neighbor: + description: Neighbor IP address. + type: list + elements: dict + suboptions: + neighbor_id: + description: Identity (number/IP address) of neighbor. + type: str + poll_interval: + description: Seconds between dead neighbor polling interval. + type: int + priority: + description: Neighbor priority. + type: int + parameters: + descriptions: OSPF specific parameters. + type: dict + suboptions: + abr_type: + description: OSPF ABR Type. + type: str + choices: ['cisco', 'ibm', 'shortcut', 'standard'] + opaque_lsa: + description: Enable the Opaque-LSA capability (rfc2370). + type: bool + rfc1583_compatibility: + description: Enable rfc1583 criteria for handling AS external routes. + type: bool + router_id: + description: Override the default router identifier. + type: str + passive_interface: + description: Suppress routing updates on an interface. + type: list + passive_interface_exclude: + description: Interface to exclude when using passive-interface default. + type: list + redistribute: + description: Redistribute information from another routing protocol. + type: list + elements: dict + suboptions: + route_type: + description: Route type to redistribute. + type: str + choices: ['bgp', 'connected', 'kernel', 'rip', 'static'] + metric: + description: Metric for redistribution routes. + type: int + metric_type: + description: OSPF Metric types. + type: int + route_map: + description: Route map references. + type: str + + route_map: + description: Filter routes installed in local route map. + type: list + timers: + description: Adjust routing timers. + type: dict + suboptions: + refresh: + description: Adjust refresh parameters. + type: dict + suboptions: + timers: + description: refresh timer. + type: int + throttle: + description: Throttling adaptive timers. + type: dict + suboptions: + spf: + description: OSPF SPF timers. + type: dict + suboptions: + delay: + description: Delay (msec) from first change received till SPF calculation. + type: int + initial_holdtime: + description: Initial hold time(msec) between consecutive SPF calculations. + type: int + max_holdtime: + description: maximum hold time (sec). + type: int + state: + description: + - The state the configuration should be left in. + type: str + choices: + - merged + - replaced + - deleted + - parsed + - gathered + - rendered + default: merged +""" +EXAMPLES = """ +# Using merged +# +# Before state: +# ------------- +# +# vyos@192# run show configuration commands | grep ospf +# +- name: Merge the provided configuration with the existing running configuration + vyos_ospf_routes: + config: + - afi: 'ipv4' + ospf_area: + - area: 0 + network: 192.168.0.0/24 + default_information: + originate: + always: true + metric: 2 + metric_type: 10 + log_adjacency_changes: "details" + parameters: + router_id: 10.1.1.1 + redistribute: + - route_type: 'connected' + metric_type: 2 + route_map: 'CONNECT' + - afi: 'ipv6' + ospf_area: + - area: 0.0.0.0 + range: 2001:db8:1::/64 + parameters: + router-id 192.168.1.1 + redistribute: + - route_type: 'connected' + state: merged +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [] +# +# "commands": [ +# "set interfaces ethernet eth1 firewall in name 'INBOUND'", +# "set protocols ospf area 0 network 192.168.0.0/24", +# "set protocols ospf default-information originate always", +# "set protocols ospf default-information originate metric 10", +# "set protocols ospf default-information originate metric-type 2", +# "set protocols ospf log-adjacency-changes", +# "set protocols ospf parameters router-id 10.1.1.1", +# "set protocols ospf redistribute connected metric-type 2", +# "set protocols ospf redistribute connected route-map CONNECT", +# "set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64, +# "set protocols ospfv3 parameters router-id 192.168.1.1, +# "set protocols ospfv3 redistribute connected +# ] +# +# "after": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "connetced", +# "metric_type": 2 +# "route_map": "CONNECT" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connetced", +# } +# ] +# } +# ] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands| grep firewall +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute connected metric-type 2 +# set protocols ospf redistribute connected route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64 +# set protocols ospfv3 parameters router-id 192.168.1.1 +# set protocols ospfv3 redistribute connected + + +# Using replaced +# +# Before state: +# ------------- +# +# vyos@192# run show configuration commands | grep ospf +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute connected metric-type 2 +# set protocols ospf redistribute connected route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64 +# set protocols ospfv3 parameters router-id 192.168.1.1 +# set protocols ospfv3 redistribute connected +# +- name: Replace the provided configuration with the existing running configuration + vyos_ospf_routes: + config: + - afi: 'ipv4' + ospf_area: + - area: 0 + network: 192.168.0.0/24 + area_type: + normal: True + default_information: + originate: + always: true + metric: 2 + metric_type: 10 + log_adjacency_changes: "details" + parameters: + router_id: 10.1.1.1 + redistribute: + - route_type: 'static' + metric_type: 2 + route_map: 'STATIC' + - afi: 'ipv6' + ospf_area: + - area: 0.0.0.0 + range: 2001:db8:1::/64 + parameters: + router-id 192.168.1.1 + redistribute: + - route_type: 'connected' + state: replaced +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "connetced", +# "metric_type": 2 +# "route_map": "CONNECT" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connetced", +# } +# ] +# } +# ] +# +# "commands": [ +# "delete protocols ospf redistribute connected", +# "set protocols ospf area 0 area_type normal", +# "set protocols ospf redistribute static metric-type 2", +# "set protocols ospf redistribute static route-map CONNECT" +# ] +# +# "after": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "area_type": +# { +# normal: true +# } +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "static", +# "metric_type": 2 +# "route_map": "STATIC" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connected", +# } +# ] +# } +# ] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands| grep firewall +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute static metric-type 2 +# set protocols ospf redistribute static route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:2::/64 +# set protocols ospfv3 parameters router-id 192.168.2.1 +# set protocols ospfv3 redistribute connected + + +# Using replaced +# +# Before state: +# ------------- +# +# vyos@192# run show configuration commands | grep ospf +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute connected metric-type 2 +# set protocols ospf redistribute connected route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64 +# set protocols ospfv3 parameters router-id 192.168.1.1 +# set protocols ospfv3 redistribute connected +# +- name: Replace the provided configuration with the existing running configuration + vyos_ospf_routes: + config: + - afi: 'ipv4' + ospf_area: + - area: 0 + network: 192.168.0.0/24 + area_type: + normal: True + default_information: + originate: + always: true + metric: 2 + metric_type: 10 + log_adjacency_changes: "details" + parameters: + router_id: 10.1.1.1 + redistribute: + - route_type: 'static' + metric_type: 2 + route_map: 'STATIC' + - afi: 'ipv6' + ospf_area: + - area: 0.0.0.0 + range: 2001:db8:1::/64 + parameters: + router-id 192.168.1.1 + redistribute: + - route_type: 'connected' + state: replaced +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "connetced", +# "metric_type": 2 +# "route_map": "CONNECT" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connetced", +# } +# ] +# } +# ] +# +# "commands": [ +# "delete protocols ospf redistribute connected", +# "set protocols ospf area 0 area_type normal", +# "set protocols ospf redistribute static metric-type 2", +# "set protocols ospf redistribute static route-map CONNECT" +# ] +# +# "after": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "area_type": +# { +# normal: true +# } +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "static", +# "metric_type": 2 +# "route_map": "STATIC" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connected", +# } +# ] +# } +# ] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands| grep firewall +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute static metric-type 2 +# set protocols ospf redistribute static route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:2::/64 +# set protocols ospfv3 parameters router-id 192.168.2.1 +# set protocols ospfv3 redistribute connected + + +# Using replaced +# +# Before state: +# ------------- +# +# vyos@192# run show configuration commands | grep ospf +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute connected metric-type 2 +# set protocols ospf redistribute connected route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64 +# set protocols ospfv3 parameters router-id 192.168.1.1 +# set protocols ospfv3 redistribute connected +# +- name: Replace the provided configuration with the existing running configuration + vyos_ospf_routes: + config: + - afi: 'ipv4' + ospf_area: + - area: 0 + network: 192.168.0.0/24 + area_type: + normal: True + default_information: + originate: + always: true + metric: 2 + metric_type: 10 + log_adjacency_changes: "details" + parameters: + router_id: 10.1.1.1 + redistribute: + - route_type: 'static' + metric_type: 2 + route_map: 'STATIC' + - afi: 'ipv6' + ospf_area: + - area: 0.0.0.0 + range: 2001:db8:1::/64 + parameters: + router-id 192.168.1.1 + redistribute: + - route_type: 'connected' + state: replaced +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "connetced", +# "metric_type": 2 +# "route_map": "CONNECT" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connetced", +# } +# ] +# } +# ] +# +# "commands": [ +# "delete protocols ospf redistribute connected", +# "set protocols ospf area 0 area_type normal", +# "set protocols ospf redistribute static metric-type 2", +# "set protocols ospf redistribute static route-map CONNECT" +# ] +# +# "after": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "area_type": +# { +# normal: true +# } +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "static", +# "metric_type": 2 +# "route_map": "STATIC" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connected", +# } +# ] +# } +# ] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands| grep firewall +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute static metric-type 2 +# set protocols ospf redistribute static route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:2::/64 +# set protocols ospfv3 parameters router-id 192.168.2.1 +# set protocols ospfv3 redistribute connected + + +# Using replaced +# +# Before state: +# ------------- +# +# vyos@192# run show configuration commands | grep ospf +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute connected metric-type 2 +# set protocols ospf redistribute connected route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64 +# set protocols ospfv3 parameters router-id 192.168.1.1 +# set protocols ospfv3 redistribute connected +# +- name: Replace the provided configuration with the existing running configuration + vyos_ospf_routes: + config: + - afi: 'ipv4' + ospf_area: + - area: 0 + network: 192.168.0.0/24 + area_type: + normal: True + default_information: + originate: + always: true + metric: 2 + metric_type: 10 + log_adjacency_changes: "details" + parameters: + router_id: 10.1.1.1 + redistribute: + - route_type: 'static' + metric_type: 2 + route_map: 'STATIC' + - afi: 'ipv6' + ospf_area: + - area: 0.0.0.0 + range: 2001:db8:1::/64 + parameters: + router-id 192.168.1.1 + redistribute: + - route_type: 'connected' + state: replaced +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "connetced", +# "metric_type": 2 +# "route_map": "CONNECT" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connetced", +# } +# ] +# } +# ] +# +# "commands": [ +# "delete protocols ospf redistribute connected", +# "set protocols ospf area 0 area_type normal", +# "set protocols ospf redistribute static metric-type 2", +# "set protocols ospf redistribute static route-map CONNECT" +# ] +# +# "after": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "area_type": +# { +# normal: true +# } +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "static", +# "metric_type": 2 +# "route_map": "STATIC" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connected", +# } +# ] +# } +# ] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands| grep firewall +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute static metric-type 2 +# set protocols ospf redistribute static route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:2::/64 +# set protocols ospfv3 parameters router-id 192.168.2.1 +# set protocols ospfv3 redistribute connected + + +# Using deleted +# +# Before state: +# ------------- +# +# vyos@192# run show configuration commands | grep ospf +# set protocols ospf area 0 network 192.168.0.0/24 +# set protocols ospf default-information originate always +# set protocols ospf default-information originate metric 10 +# set protocols ospf default-information originate metric-type 2 +# set protocols ospf log-adjacency-changes details +# set protocols ospf parameters router-id 10.1.1.1 +# set protocols ospf redistribute connected metric-type 2 +# set protocols ospf redistribute connected route-map CONNECT +# set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64 +# set protocols ospfv3 parameters router-id 192.168.1.1 +# set protocols ospfv3 redistribute connected +# +- name: Delete all the configuration + vyos_ospf_routes: + config: + state: deleted +# +# +# ------------------------- +# Module Execution Result +# ------------------------- +# +# before": [ +# { +# { +# "afi": "ipv4", +# "ospf_area":[ +# { +# "area": "0", +# "network": "192.168.0.0/24" +# } +# ], +# "default_information": +# { +# "originate": +# { +# always: true, +# metric: 2, +# metric_type: 10 +# } +# }, +# "log_adjacency_changes": "details" +# "parameters": +# { +# "router_id": "10.1.1.1" +# }, +# "redistribute":[ +# { +# "route_type": "connetced", +# "metric_type": 2 +# "route_map": "CONNECT" +# } +# ] +# }, +# { +# "afi": "ipv6", +# "ospf_area":[ +# { +# "area": "0.0.0.0", +# } +# ], +# "range": "2001:db8:1::/64", +# "parameters": +# { +# "router_id": "192.168.1.1" +# }, +# "redistribute": +# [ +# { +# "route_type": "connetced", +# } +# ] +# } +# ] +# +# "commands": [ +# "delete protocols ospf", +# "delete protocols ospfv3", +# ] +# +# "after": [] +# +# After state: +# ------------- +# +# vyos@vyos:~$ show configuration commands| grep firewall + + +""" +RETURN = """ +before: + description: The configuration prior to the model invocation. + returned: always + sample: > + The configuration returned will always be in the same format + of the parameters above. +after: + description: The resulting configuration model invocation. + returned: when changed + sample: > + The configuration returned will always be in the same format + of the parameters above. +commands: + description: The set of commands pushed to the remote device. + returned: always + type: list + sample: ['command 1', 'command 2', 'command 3'] +""" + + +from ansible.module_utils.basic import AnsibleModule +from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.argspec.ospfv2.ospfv2 import Ospfv2Args +from ansible_collections.vyos.vyos.plugins.module_utils.network.vyos.config.ospfv2.ospfv2 import Ospfv2 + + +def main(): + """ + Main entry point for module execution + + :returns: the result form module invocation + """ + required_if = [ + ("state", "merged", ("config",)), + ("state", "replaced", ("config",)), + ("state", "parsed", ("running_config",)), + ] + mutually_exclusive = [("config", "running_config")] + module = AnsibleModule( + argument_spec=Ospfv2Args.argument_spec, + required_if=required_if, + supports_check_mode=True, + mutually_exclusive=mutually_exclusive, + ) + + result = Ospfv2(module).execute_module() + module.exit_json(**result) + + +if __name__ == '__main__': + main() |