File: //lib/python3.9/site-packages/ansible_collections/cisco/iosxr/plugins/modules/iosxr_ospfv2.py
#
# This file is part of Ansible
#
# 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 <http://www.gnu.org/licenses/>.
#
"""
The module file for iosxr_ospfv2
"""
from __future__ import absolute_import, division, print_function
__metaclass__ = type
DOCUMENTATION = """
module: iosxr_ospfv2
short_description: Resource module to configure OSPFv2.
description: This module manages global OSPFv2 configuration on devices running Cisco
IOS-XR
version_added: 1.0.0
author:
- Rohit Thakur (@rohitthakur2590)
notes:
- This module works with connection C(network_cli). See L(the IOS-XR Platform Options,../network/user_guide/platform_iosxr.html)
options:
config:
description: A list of OSPFv2 process configuration
type: dict
suboptions:
processes:
description: A list of OSPFv2 instances configuration
type: list
elements: dict
suboptions:
address_family_unicast:
description: Enable unicast topology for ipv4 address family
type: bool
adjacency_stagger:
description: Stagger OSPFv2 adjacency bring up
type: dict
suboptions:
min_adjacency:
description: Initial number of neighbors to bring up per area (default
2)
type: int
max_adjacency:
description: Maximum simultaneous neighbors to bring up
type: int
disable:
description: Disable stagger OSPFv2 adjacency
type: bool
authentication:
description: Enable authentication
type: dict
suboptions:
keychain:
description: Specify keychain name
type: str
message_digest:
description: Use message-digest authentication
type: dict
suboptions:
set:
description: Specify message-digest selection
type: bool
keychain:
description: Specify keychain name
type: str
no_auth:
description: Use no authentication
type: bool
apply_weight:
description: Enable weights configured under interfaces for load sharing
type: dict
suboptions:
bandwidth:
description: Reference bandwidth to use for calculation (Mbits/sec)
type: int
default_weight:
description: Specify default weight value to use when it is not configured
under interface
type: int
areas:
description: Configure OSPFv2 areas' properties
type: list
elements: dict
suboptions:
area_id:
description: Area ID as IP address or integer
type: str
required: true
authentication:
description: Enable authentication
type: dict
suboptions:
keychain:
description: Specify keychain name
type: str
message_digest:
description: Use message-digest authentication
type: dict
suboptions:
keychain:
description: Specify keychain name
type: str
no_auth:
description: Use no authentication
type: bool
authentication_key:
description: Used to mention authentication password (key)
type: dict
suboptions:
password:
description: The OSPFv2 password (key)
type: str
clear:
description: Specifies an UNENCRYPTED password (key) will follow
type: str
encrypted:
description: Specifies an ENCRYPTED password (key) will follow
type: str
default_cost:
description: Set the summary default-cost of a NSSA/stub area. Stub's
advertised external route metric
type: int
cost:
description: Interface cost
type: int
dead_interval:
description: Interval after which a neighbor is declared dead
type: int
hello_interval:
description: Time between HELLO packets
type: int
transmit_delay:
description: Estimated time needed to send link-state update packet
type: int
mpls:
description: Configure MPLS routing protocol parameters
type: dict
suboptions:
traffic_eng:
description: Configure an ospf area to run MPLS Traffic Engineering
type: bool
ldp:
description: Configure LDP parameters
type: dict
suboptions:
auto_config:
description: Enable LDP IGP interface auto-configuration
type: bool
sync:
description: Enable LDP IGP synchronization
type: bool
sync_igp_shortcuts:
description: LDP sync for igp-shortcut tunnels
type: bool
mtu_ignore:
description: Enable/Disable ignoring of MTU in DBD packets
type: str
choices:
- enable
- disable
bfd:
description: Configure BFD parameters
type: dict
suboptions:
fast_detect:
description: Configure fast detection
type: dict
suboptions:
set:
description: Enable fast detection only
type: bool
strict_mode:
description: Hold down neighbor session until BFD session is up
type: bool
minimum_interval:
description: Hello interval in milli-seconds
type: int
multiplier:
description: Detect multiplier
type: int
nssa:
description:
- NSSA settings for the area
type: dict
suboptions:
set:
description: Configure area as NSSA
type: bool
default_information_originate:
description: Originate default Type 7 LSA
type: dict
suboptions:
metric:
description: OSPFv2 default metric
type: int
metric_type:
description: Metric type for default routes
type: int
no_redistribution:
description: Do not send redistributed LSAs into NSSA area
type: bool
no_summary:
description: Do not send summary LSAs into NSSA area
type: bool
translate:
description: Translate LSA
type: dict
suboptions:
type7:
description:
- Translate from Type 7 to Type 5
type: dict
suboptions:
always:
description:
- Always translate LSAs
type: bool
ranges:
description: Summarize routes matching address/mask (border routers
only)
type: list
elements: dict
suboptions:
address:
description: IP in Prefix format (x.x.x.x/len)
type: str
required: true
advertise:
description: Advertise this range (default)
type: bool
not_advertise:
description: DoNotAdvertise this range
type: bool
route_policy:
description: Specify the route-policy to filter type 3 LSAs (list
can have one inbound and/or one outbound policy only)
type: list
elements: dict
suboptions:
parameters:
description: Specify parameter values for the policy
type: list
elements: str
direction:
description: Specify inbound or outbound
type: str
choices:
- in
- out
stub:
description:
- Settings for configuring the area as a stub
type: dict
suboptions:
set:
description:
- Configure the area as a stub
type: bool
no_summary:
description:
- Do not send summary LSA into stub area
type: bool
virtual_link:
description: Define a virtual link
type: list
elements: dict
suboptions:
id:
description: Router-ID of virtual link neighbor (A.B.C.D)
type: str
required: true
authentication:
description: Enable authentication
type: dict
suboptions:
keychain:
description: Specify keychain name
type: str
message_digest:
description: Use message-digest authentication
type: dict
suboptions:
keychain:
description: Specify keychain name
type: str
no_auth:
description: Use no authentication
type: bool
authentication_key:
description: Used to mention authentication password (key)
type: dict
suboptions:
password:
description: The OSPFv2 password (key)
type: str
clear:
description: Specifies an UNENCRYPTED password (key) will
follow
type: str
encrypted:
description: Specifies an ENCRYPTED password (key) will follow
type: str
dead_interval:
description: Interval after which a neighbor is declared dead
type: int
hello_interval:
description: Time between HELLO packets
type: int
retransmit_interval:
description: Delay between LSA retransmissions
type: int
transmit_delay:
description: Link state transmit delay
type: int
message_digest_key:
description: Message digest authentication password (key)
type: dict
suboptions:
id:
description: Key ID (1-255)
type: int
required: true
md5:
description: Use MD5 Algorithm
type: dict
suboptions:
password:
description: The OSPFv2 password (key)
type: str
clear:
description: Specifies an UNENCRYPTED password (key) will
follow
type: bool
encrypted:
description: Specifies an ENCRYPTED password (key) will
follow
type: bool
authentication_key:
description: Used to mention authentication password (key)
type: dict
suboptions:
password:
description: The OSPFv2 password (key)
type: str
clear:
description: Specifies an UNENCRYPTED password (key) will follow
type: bool
encrypted:
description: Specifies an ENCRYPTED password (key) will follow
type: bool
auto_cost:
description: Calculate OSPFv2 interface cost according to bandwidth
type: dict
suboptions:
reference_bandwidth:
description: Specify reference bandwidth in megabits per sec
type: int
disable:
description: Assign OSPFv2 cost based on interface type
type: bool
bfd:
description: Configure BFD parameters
type: dict
suboptions:
fast_detect:
description: Configure fast detection
type: dict
suboptions:
set:
description: Enable fast detection only
type: bool
strict_mode:
description: Hold down neighbor session until BFD session is up
type: bool
minimum_interval:
description: Hello interval in milli-seconds
type: int
multiplier:
description: Detect multiplier
type: int
capability:
description: Enable specific OSPFv2 feature
type: dict
suboptions:
type7:
description: NSSA capability
type: str
opaque:
description: Configure opaque LSA
type: dict
suboptions:
disable:
description: Disable Opaque LSA capability
type: bool
set:
description: Enable opaque LSA
type: bool
cost:
description: Interface cost (1-65535)
type: int
database_filter:
description: Filter OSPFv2 LSA during synchronization and flooding (all
outgoing LSA). Enable/Disable filtering
type: str
choices: [enable, disable]
dead_interval:
description: Interval after which a neighbor is declared dead
type: int
default_information_originate:
description: Distribute default route
type: dict
suboptions:
always:
description: Always advertise default route
type: bool
metric:
description: OSPFv2 default metric
type: int
metric_type:
description: OSPFv2 metric type for default routes
type: int
route_policy:
description: Apply route-policy to default-information origination
type: str
set:
description: Enable distribution of default route
type: bool
default_metric:
description: Set metric of redistributed routes
type: int
demand_circuit:
description: Enable/Disable OSPFv2 demand circuit
type: str
choices: [enable, disable]
distance:
description: Define an administrative distance
type: dict
suboptions:
admin_distance:
description: Administrative distance
type: list
elements: dict
suboptions:
value:
description: Distance value
type: int
source:
description: Source IP address
type: str
wildcard:
description: IP wild card bits (A.B.C.D)
type: str
access_list:
description: Access list name
type: str
ospf_distance:
description: OSPFv2 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
distribute_link_state:
description: Enable Distribution of LSAs to external services
type: dict
suboptions:
instance_id:
description: Set distribution process instance identifier
type: int
throttle:
description: Throttle time between successive LSA updates
type: int
distribute_bgp_ls:
description: Enable Distribution of LSAs to external services
type: dict
suboptions:
instance_id:
description: Set distribution process instance identifier
type: int
throttle:
description: Throttle time between successive LSA updates
type: int
distribute_list:
description: Filter networks in routing updates (list can have one inbound
and/or one outbound policy only)
type: list
elements: dict
suboptions:
access_list:
description: Inbound/outbound access-list
type: str
direction:
description: Filter incoming/outgoing routing updates
type: str
choices:
- in
- out
outgoing_params:
description: Specify additional parameters for outgoing updates only
type: dict
suboptions:
route_type:
description: Type of routes
type: str
choices:
- bgp
- connected
- dagr
- ospf
- static
id:
description:
- For BGP, specify AS number. 2-byte AS number (or) 4-byte AS
number in asdot (X.Y) format (or) 4-byte AS number in asplain
format
- For OSPF, specify OSPFv2 instance name
type: str
route_policy:
description: Route Policy to filter OSPFv2 prefixes (for incoming
updates only)
type: str
external_out:
description: Enable/Disable advertisement of intra-area prefixes as external
type: str
choices:
- enable
- disable
flood_reduction:
description: Enable/Disable OSPFv2 Flood Reduction
type: str
choices:
- enable
- disable
hello_interval:
description: Time between HELLO packets (<1-65535> seconds)
type: int
ignore_lsa_mospf:
description: Do not complain upon receiving MOSPFv2 Type 6 LSA
type: bool
link_down_fast_detect:
description: Enable fast or early detection of link-down events
type: bool
log_adjacency_changes:
description: Log adjacency state changes
type: dict
suboptions:
set:
description: Set log adjacency
type: bool
disable:
description: Disable log adjacency changes
type: bool
detail:
description: Log all state changes
type: bool
loopback_stub_network:
description: Advertise loopback as a stub network
type: str
choices:
- enable
- disable
max_lsa:
description:
- Feature to limit the number of non-self-originated LSAs
type: dict
suboptions:
threshold:
description:
- Threshold value (%) at which to generate a warning message
type: int
ignore_count:
description:
- Set count on how many times adjacencies can be suppressed
type: int
ignore_time:
description:
- Set number of minutes during which all adjacencies are suppressed
type: int
reset_time:
description:
- Set number of minutes after which ignore-count is reset to zero
type: int
warning_only:
description:
- Log a warning message when limit is exceeded
type: bool
max_metric:
description: Set maximum metric
type: dict
suboptions:
router_lsa:
description: Maximum metric in self-originated router-LSAs
type: dict
suboptions:
set:
description: Set router-lsa attribute
type: bool
external_lsa:
description: External LSA configuration
type: dict
suboptions:
set:
description: Set external-lsa attribute
type: bool
max_metric_value:
description: Set max metric value for external LSAs
type: int
include_stub:
description:
- Advertise Max metric for Stub links as well
type: bool
on_startup:
description:
- Effective only at startup
type: dict
suboptions:
set:
description:
- Set on-startup attribute
type: bool
wait_period:
description:
- Wait period in seconds after startup
type: int
wait_for_bgp_asn:
description:
- ASN of BGP to wait for
type: int
summary_lsa:
description:
- Summary LSAs configuration
type: dict
suboptions:
set:
description:
- Set summary-lsa attribute
type: bool
max_metric_value:
description:
- Max metric value for summary LSAs
type: int
message_digest_key:
description: Message digest authentication password (key)
type: dict
suboptions:
id:
description: Key ID
type: int
required: true
md5:
description: Use MD5 Algorithm
type: dict
required: true
suboptions:
password:
description: The OSPFv2 password (key)
type: str
clear:
description: Specifies an UNENCRYPTED password (key) will follow
type: bool
encrypted:
description: Specifies an ENCRYPTED password (key) will follow
type: bool
microloop_avoidance:
description: Avoid microloops
type: dict
suboptions:
protected:
description: Avoid microloops for protected prefixes only)
type: bool
rib_update_delay:
description: Delay to introduce between SPF and RIB updates
type: int
segment_routing:
description: Enable segment routing microloop avoidance
type: bool
monitor_convergence:
description: Enables OSPFv2 route convergence monitoring
type: dict
suboptions:
prefix_list:
description: Enables Individual Prefix Monitoring
type: str
track_external_routes:
description: Enables Tracking External(Type-5/7) Prefix monitoring
type: bool
track_ip_frr:
description: Enables Tracking IP-Frr Convergence
type: bool
track_summary_routes:
description: Enables Tracking Summary(Inter-Area) Prefix monitoring
type: bool
mpls:
description: Configure MPLS routing protocol parameters
type: dict
suboptions:
traffic_eng:
description: Routing protocol commands for MPLS Traffic Engineering
type: dict
suboptions:
autoroute_exclude:
description: Exclude IP address destinations from using TE tunnels
type: dict
suboptions:
route_policy:
description: Policy name
type: str
parameters:
description: Specify parameter values for the policy
type: list
elements: str
igp_intact:
description: Retain one or more IPv4 nexthops with tunnel nexthops
type: bool
ldp_sync_update:
description: Enable LDP sync induced metric propagation
type: bool
multicast_intact:
description: Publish multicast-intact paths to RIB
type: bool
router_id:
description: Traffic Engineering stable IP address for system
type: str
ldp:
description: Configure LDP parameters
type: dict
suboptions:
auto_config:
description: Enable LDP IGP interface auto-configuration
type: bool
sync:
description: Enable LDP IGP synchronization
type: bool
sync_igp_shortcuts:
description: LDP sync for igp-shortcut tunnels
type: bool
mtu_ignore:
description: Enable/Disable ignoring of MTU in DBD packets
type: str
choices:
- enable
- disable
network:
description: Network type
type: dict
suboptions:
broadcast:
description: Specify OSPFv2 broadcast multi-access network
type: bool
non_broadcast:
description: Specify OSPFv2 NBMA network
type: bool
point_to_multipoint:
description: Specify OSPFv2 point-to-multipoint network
type: bool
point_to_point:
description: Specify OSPFv2 point-to-point network
type: bool
nsf:
description: Non-stop forwarding
type: dict
suboptions:
cisco:
description: Cisco Non-stop forwarding
type: dict
suboptions:
enforce_global:
description: Cancel NSF restart when non-NSF-aware neighbors detected
for the whole OSPFv2 process
type: bool
set:
description: Enable Cisco NSF
type: bool
flush_delay_time:
description: Maximum time allowed for external route learning
type: int
ietf:
description: IETF graceful restart
type: dict
suboptions:
helper_disable:
description: Disable router's helper support level
type: bool
set:
description: Only enable ietf option
type: bool
interval:
description: Minimum interval between NSF restarts (<90-3600> seconds)
type: int
lifetime:
description: Maximum route lifetime following restart (<90-1800> seconds)
type: int
nsr:
description: Enable NSR for all VRFs in this process. 'False' option to
disable NSR for all VRFs in this process
type: bool
packet_size:
description: Size of OSPFv2 packets to use. min=576 max=MTU bytes
type: int
passive:
description: Enable/Disable passive
type: str
choices:
- enable
- disable
prefix_suppression:
description: Suppress advertisement of the prefixes
type: dict
suboptions:
set:
description: Set the suppression option
type: bool
secondary_address:
description: Enable/Disable secondary address suppression
type: bool
priority:
description: Router priority
type: int
process_id:
description: The OSPFv2 Process ID
type: str
required: true
protocol_shutdown:
description: Protocol specific configuration
type: dict
suboptions:
host_mode:
description: Only traffic destined for this box allowed(cisco-support)
type: bool
on_reload:
description: Shutdown post reload only
type: bool
set:
description: Shutdown the OSPFv2 Protocol
type: bool
limit:
description: High watermark for incoming priority events
type: dict
suboptions:
high:
description: Hello events are dropped when incoming event queue
exceeds this value
type: int
low:
description: DBD/LS Update/Req packets are dropped when incoming
event queue exceeds this value
type: int
medium:
description: LSA ACKs are dropped when incoming event queue exceeds
this value
type: int
redistribute:
description: Redistribute information from another routing Protocol
type: dict
suboptions:
route_type:
description: Route type to redistribute
type: str
choices: [application, bgp, connected, dagr, eigrp, isis, mobile,
ospf, rip, static, subscriber]
id:
description: OnePK application name for application routes (or) AS
number for bgp and eigrp (or) instance name for isis and ospf
type: str
level:
description: ISIS levels
choices: [1, 2, 12]
type: int
lsa_type_summary:
description: LSA type 3 for redistributed routes
type: bool
match:
description: Redistribution of routes. For OSPFv2 - external/internal/nssa-external
1/2. For EIGRP - external/internal
type: str
metric:
description: Metric for redistributed routes
type: int
metric_type:
description: OSPFv2 exterior metric type for redistributed routes
type: int
choices: [1, 2]
route_policy:
description: Apply route-policy to redistribution
type: dict
suboptions:
name:
description: Name of the policy
type: str
parameters:
description: Specify parameter values for the policy
type: list
elements: str
nssa_only:
description: Redistribute to NSSA areas only
type: bool
preserve_med:
description: Preserve med of BGP routes
type: bool
tag:
description: Set tag for routes redistributed into OSPFv2
type: int
retransmit_interval:
description: Delay between LSA retransmissions
type: int
router_id:
description: OSPFv2 router-id in IPv4 address format (A.B.C.D)
type: str
security_ttl:
description: Enable security
type: dict
suboptions:
set:
description: Enable ttl security
type: bool
hops:
description: Maximum number of IP hops allowed <1-254>
type: int
summary_in:
description: Enable/Disable advertisement of external prefixes as inter-area
type: str
choices: [enable, disable]
summary_prefix:
description: Configure IP address summaries
type: list
elements: dict
suboptions:
prefix:
description: IP summary address/mask (A.B.C.D/prefix)
type: str
required: true
not_advertise:
description: Suppress routes that match the specified prefix/mask
pair
type: bool
tag:
description: Set tag
type: int
timers:
description: Configure timer related constants
type: dict
suboptions:
graceful_shutdown:
description: Timers for graceful shutdown(cisco-support)
type: dict
suboptions:
initial_delay:
description: Delay before starting graceful shutdown
type: int
retain_routes:
description: Time to keep routes active after graceful shutdown
type: int
lsa:
description: OSPFv2 global LSA timers
type: dict
suboptions:
group_pacing:
description: OSPFv2 LSA group pacing timer. Interval between group
of LSA being refreshed or maxaged
type: int
min_arrival:
description: OSPFv2 MinLSArrival timer. The minimum interval in
millisec between accepting the same LSA
type: int
refresh:
description: OSPFv2 LSA refresh interval. How often self-originated
LSAs should be refreshed, in seconds
type: int
throttle:
description: OSPFv2 throttle timers
type: dict
suboptions:
lsa_all:
description: LSA throttle timers for all types of OSPFv2 LSAs
type: dict
suboptions:
initial_delay:
description: Delay to generate first occurance of LSA in milliseconds
type: int
min_delay:
description: Minimum delay between originating the same LSA
in milliseconds
type: int
max_delay:
description: Maximum delay between originating the same LSA
in milliseconds
type: int
spf:
description: OSPFv2 SPF throttle timers
type: dict
suboptions:
change_delay:
description: Delay between receiving a change to SPF calculation
in milliseconds
type: int
second_delay:
description: Delay between first and second SPF calculation
in milliseconds
type: int
max_wait:
description: Maximum wait time in milliseconds for SPF calculations
type: int
fast_reroute:
description: Fast-reroute throttle timer. Delay between end of
SPF and start of the fast-reroute computation in milliseconds
type: int
pacing_flood:
description: OSPFv2 flood pacing timer. Interval in msec to pace flooding
on all interfaces
type: int
transmit_delay:
description: Estimated time needed to send link-state update packet
type: int
weight:
description: Interface weight
type: int
running_config:
description:
- This option is used only with state I(parsed).
- The value of this option should be the output received from the IOS-XR device
by executing the command B(show running-config router ospf).
- The state I(parsed) reads the configuration from C(running_config) option and
transforms it into Ansible structured data as per the resource module's argspec
and the value is then returned in the I(parsed) key within the result.
type: str
state:
description:
- The state the configuration should be left in.
type: str
choices:
- merged
- replaced
- deleted
- parsed
- gathered
- rendered
- overridden
default: merged
"""
EXAMPLES = """
# Using merged
# Before state:
# -------------
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 15:54:44.569 UTC
# % No such configuration item(s)
#
- name: Merge provided OSPFv2 configuration with the existing configuration
cisco.iosxr.iosxr_ospfv2:
config:
processes:
- process_id: '27'
areas:
- area_id: '10'
hello_interval: 2
authentication:
keychain: ansi11393
- process_id: '26'
adjacency_stagger:
max_adjacency: 20
min_adjacency: 10
- process_id: '10'
authentication:
keychain: ansible_test1102
areas:
- area_id: '11'
default_cost: 5
cost: 11
- area_id: 22
default_cost: 6
- process_id: '30'
areas:
- area_id: 11
default_cost: 5
- area_id: 22
default_cost: 6
cost: 2
default_metric: 10
transmit_delay: 2
hello_interval: 1
dead_interval: 2
retransmit_interval: 2
weight: 2
packet_size: 577
priority: 1
router_id: 2.2.2.2
demand_circuit: enable
passive: disable
summary_in: enable
flood_reduction: disable
mtu_ignore: enable
external_out: disable
state: merged
#
#
# ------------------------
# Module Execution Result
# ------------------------
#
# "before": {}
#
# "commands": [
# "router ospf 30",
# "cost 2",
# "weight 2",
# "passive disable",
# "priority 1",
# "flood-reduction disable",
# "default-metric 10",
# "router-id 2.2.2.2",
# "demand-circuit enable",
# "packet-size 577",
# "transmit-delay 2",
# "summary-in enable",
# "external-out disable",
# "dead-interval 2",
# "hello-interval 1",
# "retransmit-interval 2",
# "mtu-ignore enable",
# "area 11 default-cost 5",
# "area 22 default-cost 6",
# "router ospf 26",
# "adjacency stagger 10 20",
# "authentication message-digest keychain ansible1101pass",
# "router ospf 27",
# "area 10 authentication keychain ansi11393",
# "area 10 hello-interval 2",
# "router ospf 10",
# "authentication keychain ansible_test1102",
# "area 11 default-cost 5",
# "area 11 cost 11",
# "area 22 default-cost 6"
# ]
#
# "after": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# }
#
#
# ------------
# After state
# ------------
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:06:44.406 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
# Using replaced
#
# ------------
# Before state
# ------------
#
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:06:44.406 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
- name: Replace OSPFv2 routes configurations from the device
cisco.iosxr.iosxr_ospfv2:
config:
processes:
- process_id: 27
areas:
- area_id: 10
hello_interval: 2
- area_id: 20
cost: 2
default_cost: 2
authentication:
keychain: ansi11393
- process_id: 26
adjacency_stagger:
min_adjacency: 10
max_adjacency: 20
state: replaced
#
#
# ------------------------
# Module Execution Result
# ------------------------
#
# "before": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# }
#
# "commands": [
# "router ospf 27",
# "no area 10 authentication keychain ansi11393",
# "area 20 authentication keychain ansi11393",
# "area 20 default-cost 2",
# "area 20 cost 2"
# ]
#
# "after": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "hello_interval": 2
# },
# {
# "area_id": "20",
# "authentication": {
# "keychain": "ansi11393"
# },
# "cost": 2,
# "default_cost": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# }
#
#
# -----------
# After state
# -----------
#
# RP/0/RP0/CPU0:anton(config)#do show running-config router ospf
# Thu Jun 11 16:40:31.038 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# hello-interval 2
# !
# area 20
# cost 2
# authentication keychain ansi11393
# default-cost 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
# Using overridden
#
# ------------
# Before state
# ------------
#
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:06:44.406 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
- name: Override existing OSPFv2 configurations from the device
cisco.iosxr.iosxr_ospfv2:
config:
processes:
- process_id: 27
areas:
- area_id: 10
hello_interval: 2
authentication:
keychain: ansi11393
- area_id: 20
cost: 2
default_cost: 2
authentication:
keychain: ansi11393
- process_id: 26
adjacency_stagger:
min_adjacency: 10
max_adjacency: 20
state: overridden
#
#
# ------------------------
# Module Execution Result
# ------------------------
#
# "before": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# }
#
# "commands": [
# "router ospf 10",
# "no authentication keychain ansible_test1102",
# "no area 11 default-cost 5",
# "no area 11 cost 11",
# "no area 22 default-cost 6",
# "router ospf 30",
# "no cost 2",
# "no weight 2",
# "no passive disable",
# "no priority 1",
# "no flood-reduction disable",
# "no default-metric 10",
# "no router-id 2.2.2.2",
# "no demand-circuit enable",
# "no packet-size 577",
# "no transmit-delay 2",
# "no summary-in enable",
# "no external-out disable",
# "no dead-interval 2",
# "no hello-interval 1",
# "no retransmit-interval 2",
# "no mtu-ignore enable",
# "no area 11 default-cost 5",
# "no area 22 default-cost 6",
# "router ospf 27",
# "area 20 authentication keychain ansi11393",
# "area 20 default-cost 2",
# "area 20 cost 2"
# ]
#
# "after": {
# "processes": [
# {
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# },
# {
# "area_id": "20",
# "authentication": {
# "keychain": "ansi11393"
# },
# "cost": 2,
# "default_cost": 2
# }
# ],
# "process_id": "27"
# },
# {
# "process_id": "30"
# }
# ]
# }
#
#
# -----------
# After state
# -----------
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:50:36.332 UTC
# router ospf 10
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# area 20
# cost 2
# authentication keychain ansi11393
# default-cost 2
# !
# !
# router ospf 30
# !
#
# Using deleted
#
# ------------
# Before state
# ------------
#
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:06:44.406 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
- name: Deleted existing OSPFv2 configurations from the device
cisco.iosxr.iosxr_ospfv2:
config:
processes:
- process_id: '10'
- process_id: '26'
- process_id: '27'
- process_id: '30'
state: deleted
#
#
# ------------------------
# Module Execution Result
# ------------------------
#
# "before": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# },
#
# "commands": [
# "router ospf 10",
# "no authentication keychain ansible_test1102",
# "no area 11 default-cost 5",
# "no area 11 cost 11",
# "no area 22 default-cost 6",
# "router ospf 26",
# "no adjacency stagger 10 20",
# "no authentication message-digest keychain ansible1101pass",
# "router ospf 27",
# "no area 10 authentication keychain ansi11393",
# "no area 10 hello-interval 2",
# "router ospf 30",
# "no cost 2",
# "no weight 2",
# "no passive disable",
# "no priority 1",
# "no flood-reduction disable",
# "no default-metric 10",
# "no router-id 2.2.2.2",
# "no demand-circuit enable",
# "no packet-size 577",
# "no transmit-delay 2",
# "no summary-in enable",
# "no external-out disable",
# "no dead-interval 2",
# "no hello-interval 1",
# "no retransmit-interval 2",
# "no mtu-ignore enable",
# "no area 11 default-cost 5",
# "no area 22 default-cost 6"
# ]
#
# "after": {
# "processes": [
# {
# "process_id": "10"
# },
# {
# "process_id": "26"
# },
# {
# "process_id": "27"
# },
# {
# "process_id": "30"
# }
# ]
# }
#
#
# -----------
# After state
# -----------
#
# RP/0/RP0/CPU0:anton(config)#show running-config router ospf
# Thu Jun 11 17:07:34.218 UTC
# router ospf 10
# !
# router ospf 26
# !
# router ospf 27
# !
# router ospf 30
# !
# Using parsed
# parsed.cfg
# ------------
# Thu Jun 11 17:28:51.918 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
- name: Parsed the device configuration to get output commands
cisco.iosxr.iosxr_ospfv2:
running_config: "{{ lookup('file', './parsed.cfg') }}"
state: parsed
#
#
# -------------------------
# Module Execution Result
# -------------------------
#
#
# "parsed": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# }
# Using rendered
#
#
- name: Render the commands for provided configuration
cisco.iosxr.iosxr_ospfv2:
config:
processes:
- process_id: 27
areas:
- area_id: 10
hello_interval: 2
authentication:
keychain: ansi11393
- process_id: 26
adjacency_stagger:
min_adjacency: 10
max_adjacency: 20
- process_id: 10
authentication:
keychain: ansible_test1102
areas:
- area_id: 11
default_cost: 5
cost: 11
- area_id: 22
default_cost: 6
- process_id: 30
areas:
- area_id: 11
default_cost: 5
- area_id: 22
default_cost: 6
cost: 2
default_metric: 10
transmit_delay: 2
hello_interval: 1
dead_interval: 2
retransmit_interval: 2
weight: 2
packet_size: 577
priority: 1
router_id: 2.2.2.2
demand_circuit: enable
passive: disable
summary_in: enable
flood_reduction: disable
mtu_ignore: enable
external_out: disable
state: rendered
#
#
# -------------------------
# Module Execution Result
# -------------------------
#
#
# "rendered": [
# "router ospf 27",
# "area 10 authentication keychain ansi11393",
# "area 10 hello-interval 2",
# "router ospf 26",
# "adjacency stagger 10 20",
# "authentication message-digest keychain ansible1101pass",
# "router ospf 10",
# "authentication keychain ansible_test1102",
# "area 11 default-cost 5",
# "area 11 cost 11",
# "area 22 default-cost 6",
# "router ospf 30",
# "cost 2",
# "weight 2",
# "passive disable",
# "priority 1",
# "flood-reduction disable",
# "default-metric 10",
# "router-id 2.2.2.2",
# "demand-circuit enable",
# "packet-size 577",
# "transmit-delay 2",
# "summary-in enable",
# "external-out disable",
# "dead-interval 2",
# "hello-interval 1",
# "retransmit-interval 2",
# "mtu-ignore enable",
# "area 11 default-cost 5",
# "area 22 default-cost 6"
# ]
# Using gathered
#
# Before state:
# -------------
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:06:44.406 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
- name: Gather ospfv2 routes configuration
cisco.iosxr.iosxr_ospfv2:
state: gathered
#
#
# -------------------------
# Module Execution Result
# -------------------------
#
# "gathered": {
# "processes": [
# {
# "areas": [
# {
# "area_id": "11",
# "cost": 11,
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "authentication": {
# "keychain": "ansible_test1102"
# },
# "process_id": "10"
# },
# {
# "adjacency_stagger": {
# "max_adjacency": 20,
# "min_adjacency": 10
# },
# "authentication": {
# "message_digest": {
# "keychain": "ansible1101pass"
# }
# },
# "process_id": "26"
# },
# {
# "areas": [
# {
# "area_id": "10",
# "authentication": {
# "keychain": "ansi11393"
# },
# "hello_interval": 2
# }
# ],
# "process_id": "27"
# },
# {
# "areas": [
# {
# "area_id": "11",
# "default_cost": 5
# },
# {
# "area_id": "22",
# "default_cost": 6
# }
# ],
# "cost": 2,
# "dead_interval": 2,
# "default_metric": 10,
# "demand_circuit": "enable",
# "external_out": "disable",
# "flood_reduction": "disable",
# "hello_interval": 1,
# "mtu_ignore": "enable",
# "packet_size": 577,
# "passive": "disable",
# "priority": 1,
# "process_id": "30",
# "retransmit_interval": 2,
# "router_id": "2.2.2.2",
# "summary_in": "enable",
# "transmit_delay": 2,
# "weight": 2
# }
# ]
# }
#
# After state:
# -------------
#
# RP/0/RP0/CPU0:anton#show running-config router ospf
# Thu Jun 11 16:06:44.406 UTC
# router ospf 10
# authentication keychain ansible_test1102
# area 11
# cost 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
# router ospf 26
# authentication message-digest keychain ansible1101pass
# adjacency stagger 10 20
# !
# router ospf 27
# area 10
# authentication keychain ansi11393
# hello-interval 2
# !
# !
# router ospf 30
# router-id 2.2.2.2
# summary-in enable
# external-out disable
# cost 2
# packet-size 577
# weight 2
# passive disable
# priority 1
# mtu-ignore enable
# flood-reduction disable
# dead-interval 2
# retransmit-interval 2
# demand-circuit enable
# hello-interval 1
# transmit-delay 2
# default-metric 10
# area 11
# default-cost 5
# !
# area 22
# default-cost 6
# !
# !
#
#
"""
RETURN = """
before:
description: The configuration prior to the model invocation.
returned: always
type: dict
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
type: dict
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:
- "router ospf 30"
- "authentication message-digest keychain 'ansible1101pass'"
"""
from ansible.module_utils.basic import AnsibleModule
from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.argspec.ospfv2.ospfv2 import (
Ospfv2Args,
)
from ansible_collections.cisco.iosxr.plugins.module_utils.network.iosxr.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", "overridden", ("config",)),
("state", "rendered", ("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()