Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/modules/network/onyx/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyo

�
�Udac@`s�ddlmZmZmZeZidd6dgd6dd6ZdZd	Zd
Z	ddl
Z
ddlmZdd
l
mZddlmZddlmZdefd��YZd�Zedkr�e�ndS(i(tabsolute_importtdivisiontprint_functions1.1tmetadata_versiontpreviewtstatust	communitytsupported_bysP
---
module: onyx_bgp
version_added: "2.5"
author: "Samer Deeb (@samerd), Anas Badaha (@anasb)"
short_description: Configures BGP on Mellanox ONYX network devices
description:
  - This module provides declarative management of BGP router and neighbors
    on Mellanox ONYX network devices.
notes:
  - Tested on ONYX 3.6.4000
options:
  as_number:
    description:
      - Local AS number.
    required: true
  router_id:
    description:
      - Router IP address.
  neighbors:
    description:
      - List of neighbors. Required if I(state=present).
    suboptions:
      remote_as:
        description:
          - Remote AS number.
        required: true
      neighbor:
        description:
          - Neighbor IP address.
        required: true
      multihop:
        description:
          - multihop number.
  networks:
    description:
      - List of advertised networks.
  fast_external_fallover:
    description:
      - will configure fast_external_fallover when it is True.
    type: bool
    version_added: 2.9
  max_paths:
    description:
      - Maximum bgp paths.
    version_added: 2.9
  ecmp_bestpath:
    description:
      - Enables ECMP across AS paths.
    type: bool
    version_added: 2.9
  evpn:
    description:
      - Configure evpn peer-group.
    type: bool
    version_added: 2.9
  vrf:
    description:
      - vrf name.
    version_added: 2.9
  state:
    description:
      - BGP state.
    default: present
    choices: ['present', 'absent']
  purge:
    description:
      - will remove all neighbors when it is True.
    type: bool
    default: false
    version_added: 2.8
s�
- name: configure bgp
  onyx_bgp:
    as_number: 320
    router_id: 10.3.3.3
    neighbors:
      - remote_as: 321
        neighbor: 10.3.3.4
      - remote_as: 322
        neighbor: 10.3.3.5
        multihop: 250
    purge: True
    state: present
    networks:
      - 172.16.1.0/24
    vrf: default
    evpn: yes
    fast_external_fallover: yes
    max_paths: 32
    ecmp_bestpath: yes

s
commands:
  description: The list of configuration mode commands to send to the device.
  returned: always
  type: list
  sample:
    - router bgp 320 vrf default
    - exit
    - router bgp 320 router-id 10.3.3.3 force
    - router bgp 320 vrf default bgp fast-external-fallover
    - router bgp 320 vrf default maximum-paths 32
    - router bgp 320 vrf default bestpath as-path multipath-relax force
    - router bgp 320 vrf default neighbor evpn peer-group
    - router bgp 320 vrf default neighbor evpn send-community extended
    - router bgp 320 vrf default address-family l2vpn-evpn neighbor evpn next-hop-unchanged
    - router bgp 320 vrf default address-family l2vpn-evpn neighbor evpn activate
    - router bgp 320 vrf default address-family l2vpn-evpn auto-create
    - router bgp 320 vrf default neighbor 10.3.3.4 remote-as 321
    - router bgp 320 vrf default neighbor 10.3.3.4 ebgp-multihop 250
    - router bgp 320 vrf default neighbor 10.3.3.5 remote-as 322
    - router bgp 320 vrf default network 172.16.1.0 /24
N(t	iteritems(t
AnsibleModule(tget_bgp_summary(tBaseOnyxModulet
OnyxBgpModulecB`s�eZejd�Zejd�Zejd�Zejd�Zejd�Zejd�Z	ejd�Z
ejd�Zejd�Zejd	�Z
ejd
�Zejd�Zejd�Zejd
�ZeZdZdZdZdZdZdZdZdZdZdZeeeeegZeegZie
efe6eefe6eefe6eefe6eefe6Z d�Z!d�Z"d�Z#d�Z$d�Z%d�Z&d�Z'd�Z(d �Z)d!�Z*d"�Z+RS(#s'^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+).*s/^\s.*router bgp\s+(\d+).*router-id\s+(\S+)\s+.*s@^\s.*router bgp\s+(\d+).*neighbor\s+(\S+)\s+remote\-as\s+(\d+).*sD^\s.*router bgp\s+(\d+).*neighbor\s+(\S+)\s+ebgp\-multihop\s+(\d+).*s2^\s.*router bgp\s+(\d+).*network\s+(\S+)\s+(\S+).*sF^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+bgp fast\-external\-fallover.*s@^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+maximum\-paths\s+(\d+).*sL^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+bestpath as\-path multipath\-relax.*sM^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+neighbor\s+(\S+)\s+peer\-group evpn.*sC^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+neighbor evpn peer\-group.*sO^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+neighbor evpn send-community extended.*sg^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+address\-family l2vpn\-evpn neighbor evpn next\-hop-unchanged.*s[^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+address-family l2vpn\-evpn neighbor evpn activate.*sP^\s.*router bgp\s+(\d+)\s+vrf\s+(\S+)\s+address-family l2vpn\-evpn auto-create.*tevpn_peer_grouptevpn_send_community_extendedtevpn_next_hop_unchangedt
evpn_activatetevpn_auto_creates-router bgp %s vrf %s neighbor evpn peer-groups:router bgp %s vrf %s neighbor evpn send-community extendedsOrouter bgp %s vrf %s address-family l2vpn-evpn neighbor evpn next-hop-unchangedsErouter bgp %s vrf %s address-family l2vpn-evpn neighbor evpn activates:router bgp %s vrf %s address-family l2vpn-evpn auto-createcC`s:tdtdddt�dtdt�dtdd��}tdtdddt�dt�d	tdd
ddd
|�dtdd
dd�dtdddgdd�dtdtdd�dt�dtdd�dtdd�dtdd�dtdd��}t�}|j|�td|dt�|_dS(s initialize module
        t	remote_asttypetinttrequiredtneighbortmultihopt	as_numbert	router_idt	neighborstlisttelementstdicttoptionstnetworkststrtstatetchoicestpresenttabsenttdefaulttpurgetbooltvrftfast_external_fallovert	max_pathst
ecmp_bestpathtevpnt
argument_spectsupports_check_modeN(RtTruetFalsetupdateR	t_module(tselft
neighbor_spectelement_specR-((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pytinit_module�s,				
cC`sG|jj}t|�|_|jjdt�|_|j|j�dS(NR&(R2tparamsRt_required_configtgetR0t_purgetvalidate_param_values(R3t
module_params((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pytget_required_config�scC`s�|jd�}d|jd<d|jd<t|jd<t|jd<t|j|j<t|j|j<t|j|j<t|j|j<t|j|j<t	�}|jd<t
�}|jd<x�|D]�}|jd�r�q�n|jds=|jj
|�}|r=t|jd	��|jd<|jd
�|jd<q�q=n|jds�|jj
|�}|r�|jd
�|jd<q�q�n|jj
|�}|r�|j|jd
�t	��}t|jd��|d
<q�n|jj
|�}|r+|j|jd
�t	��}t|jd��|d<q�n|jj
|�}|rq|j|jd�t	��}t|d<q�n|jj
|�}|r�|jd
�|jd�}|j|�q�n|jj
|�}|r�t|jd<q�n|jj
|�}|rt|jd<q�n|jj
|�}|rHt|jd��|jd<q�nxGt|j�D]6\}	}
|
dj
|�}|rXt|j|	<PqXqXWq�WdS(Ns
RRR)R+RRt#iiR(iRRR,R*i(tsplittNonet_current_configR0tEVPN_PEER_GROUP_ATTRt!EVPN_SEND_COMMUNITY_EXTENDED_ATTRtEVPN_NEXT_HOP_UNCHANGED_ATTRtEVPN_AUTO_CREATE_ATTRtEVPN_ACTIVATE_ATTRRRt
startswithtLOCAL_AS_REGEXtmatchRtgrouptROUTER_ID_REGEXtNEIGHBOR_REGEXt
setdefaulttNEIGHBOR_MULTIHOP_REGEXtNEIGHBOR_EVPN_REGEXR/t
NETWORK_REGEXtappendtFAST_EXTERNAL_FALLOVER_REGEXtECMP_BESTPATH_REGEXtMAX_PATHS_REGEXRtEVPN_COMMANDS_REGEX_MAPPER(R3t
bgp_configtlinesRRtlineRIRtnetworktkeytvalue((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyt_set_bgp_config�s~





	
	




cC`s
t|j�S(N(R
R2(R3((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyt_get_bgp_summary)scC`s2t�|_|j�}|r.|j|�ndS(N(RRAR]R\(R3RV((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pytload_current_config,scC`s4|jd}|dkr&|j�n
|j�dS(NR!R#(R8t_generate_bgp_cmdst_generate_no_bgp_cmds(R3R!((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pytgenerate_commands2s

cC`s0|jjd�}|dkr'd}n|jd}|jjd�}|jjd�}t}||ksv||kr�|r�|jjd||f�t}n|jjd||f�|jjd�n|jjd�}|dk	r1|jjd�}|s||kr1|jjd|||f�q1n|jjd	�}|dk	r�|jjd	�}	|r�|sy||	kr�|jjd
||f�q�|r�|s�||	kr�|jjd||f�q�n|jjd�}
|
dk	r4|jjd�}|s|
|kr4|jjd
|||
f�q4n|jjd�}|dk	r�|jjd�}
|r�|s|||
kr�|jjd||f�q�|r�|s�||
kr�|jjd||f�q�n|jjd�}|dk	r|j|||�n|j	|||�|j
|||�dS(NR(R%Rsno router bgp %d vrf %ssrouter bgp %d vrf %stexitRs'router bgp %d vrf %s router-id %s forceR)s/router bgp %d vrf %s bgp fast-external-fallovers2router bgp %d vrf %s no bgp fast-external-falloverR*s%router bgp %d vrf %s maximum-paths %sR+s;router bgp %d vrf %s bestpath as-path multipath-relax forces>router bgp %d vrf %s no bestpath as-path multipath-relax forceR,(R8R9R@RAR0t	_commandsRQR/t_generate_evpn_cmdst_generate_neighbors_cmdst_generate_networks_cmds(R3R(Rtcurr_as_numtcurr_vrftbgp_removedt
req_router_idt
curr_route_idR)tcurrent_fast_external_falloverR*tcurrent_max_pathsR+tcurrent_ecmp_bestpathR,((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyR_9sT	
	# # c	C`sU|jd}|jjdi�}|jjd�}|jr�xD|D]9}||jd�}|jjd||||f�qDWn|dk	rQx�|D]�}	|	jd�}|j|�}
|	jd�}|	jd�}|s�|
dkrr|dk	r|jjd||||f�n|dk	rI|jjd||||f�n|rJ|jjd	|||f�qJq�|
dk	r�|
jd�}|
jd�}
|
jd�}||kr�|jjd||||f�n|dk	r||
kr|jjd||||f�n|rJ|tk	rJ|jjd	|||f�qJq�q�WndS(
NRR,Rs0router bgp %s vrf %s no neighbor %s remote-as %sRRs-router bgp %s vrf %s neighbor %s remote-as %ss1router bgp %s vrf %s neighbor %s ebgp-multihop %ss0router bgp %s vrf %s neighbor %s peer-group evpn(R8RAR9R:RcRQR@R/(R3RR(Rit
req_neighborstcurr_neighborsR,RRt
neighbor_datat
curr_neighborRtcurr_remote_ast
curr_multihoptcurr_neighbor_evpn((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyRelsJ
	

						cC`sR|jdpg}|jjdg�}|s�x�|D]}||kr5|jd�}t|�dkr�|jjdd|�n|\}}	d|||	f}
|jj|
�q5q5Wnx�|D]�}|s�||kr�|jd�}t|�dkr|jjdd|�n|\}}	d||||	f}
|jj|
�q�q�WdS(NRt/itmsgsInvalid network %ssrouter bgp %s no network %s /%ss#router bgp %s vrf %s network %s /%s(	R8RAR9R?tlenR2t	fail_jsonRcRQ(R3RR(Ritreq_networkst
curr_networksRYt	net_attrstnet_addresstnetmasktcmd((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyRf�s.

cC`sL|jd}|jjd�}|rH||krH|jjd|�ndS(NRsno router bgp %d(R8RAR9RcRQ(R3RRg((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyR`�s
cC`s�|rhx�|jD]Q}|jj|�}|tk	r|jj|jj|�d||f�qqWnl|s�xc|jD]U}|jj|�}|tk	rx|jjd|jj|�d||f�qxqxWndS(Nisno (	tEVPN_ENABLE_ATTRSRAR9R/RcRQRUtEVPN_DISABLE_ATTRSR0(R3R,RR(tattrt	curr_attr((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyRd�s4(,t__name__t
__module__tretcompileRHRKRLRNRPRRRTRSROtEVPN_PEER_GROUP_REGEXt"EVPN_SEND_COMMUNITY_EXTENDED_REGEXtEVPN_NEXT_HOP_UNCHANGED_REGEXtEVPN_ACTIVATE_REGEXtEVPN_AUTO_CREATE_REGEXR0R:RBRCRDRFREtEVPN_PEER_GROUP_CMDt EVPN_SEND_COMMUNITY_EXTENDED_CMDtEVPN_NEXT_HOP_UNCHANGED_CMDtEVPN_ACTIVATE_CMDtEVPN_AUTO_CREATE_CMDR�R�RUR6R=R\R]R^RaR_ReRfR`Rd(((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyR�sx													



			A				3	(		cC`stj�dS(s+ main entry point for module execution
    N(Rtmain(((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyR��st__main__(t
__future__RRRRt
__metaclass__tANSIBLE_METADATAt
DOCUMENTATIONtEXAMPLEStRETURNR�tansible.module_utils.sixRtansible.module_utils.basicR	t&ansible.module_utils.network.onyx.onyxR
RRR�R�(((sI/usr/lib/python2.7/site-packages/ansible/modules/network/onyx/onyx_bgp.pyt<module>s"


I�8	

Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]