Anons79 Mini Shell

Directory : /lib/python2.7/site-packages/ansible/modules/network/cloudengine/
Upload File :
Current File : //lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pyc

�
�Udac@s�idd6dgd6dd6ZdZdZdZd	d
lZd	dlmZd	dlmZm	Z	m
Z
mZd
ZdZ
dZdZdZdZdZdZdZdZdZdZdZdZdefd��YZd�Zedkr�e�nd
S(s1.1tmetadata_versiontpreviewtstatust	communitytsupported_bysU
---
module: ce_bgp_neighbor
version_added: "2.4"
short_description: Manages BGP peer configuration on HUAWEI CloudEngine switches.
description:
    - Manages BGP peer configurations on HUAWEI CloudEngine switches.
author:
    - wangdezhuang (@QijunPan)
notes:
  - This module requires the netconf system service be enabled on the remote device being managed.
  - Recommended connection is C(netconf).
  - This module also works with C(local) connections for legacy playbooks.
options:
    state:
        description:
            - Specify desired state of the resource.
        default: present
        choices: ['present','absent']
    vrf_name:
        description:
            - Name of a BGP instance. The name is a case-sensitive string of characters.
              The BGP instance can be used only after the corresponding VPN instance is created.
        required: true
    peer_addr:
        description:
            - Connection address of a peer, which can be an IPv4 or IPv6 address.
        required: true
    remote_as:
        description:
            - AS number of a peer.
              The value is a string of 1 to 11 characters.
        required: true
    description:
        description:
            - Description of a peer, which can be letters or digits.
              The value is a string of 1 to 80 characters.
    fake_as:
        description:
            - Fake AS number that is specified for a local peer.
              The value is a string of 1 to 11 characters.
    dual_as:
        description:
            - If the value is true, the EBGP peer can use either a fake AS number or the actual AS number.
              If the value is false, the EBGP peer can only use a fake AS number.
        choices: ['no_use','true','false']
        default: no_use
    conventional:
        description:
            - If the value is true, the router has all extended capabilities.
              If the value is false, the router does not have all extended capabilities.
        choices: ['no_use','true','false']
        default: no_use
    route_refresh:
        description:
            - If the value is true, BGP is enabled to advertise REFRESH packets.
              If the value is false, the route refresh function is enabled.
        choices: ['no_use','true','false']
        default: no_use
    is_ignore:
        description:
            - If the value is true, the session with a specified peer is torn down and all related
              routing entries are cleared.
              If the value is false, the session with a specified peer is retained.
        choices: ['no_use','true','false']
        default: no_use
    local_if_name:
        description:
            - Name of a source interface that sends BGP packets.
              The value is a string of 1 to 63 characters.
    ebgp_max_hop:
        description:
            - Maximum number of hops in an indirect EBGP connection.
              The value is an ranging from 1 to 255.
    valid_ttl_hops:
        description:
            - Enable GTSM on a peer or peer group.
              The valid-TTL-Value parameter is used to specify the number of TTL hops to be detected.
              The value is an integer ranging from 1 to 255.
    connect_mode:
        description:
            - The value can be Connect-only, Listen-only, or Both.
    is_log_change:
        description:
            - If the value is true, BGP is enabled to record peer session status and event information.
              If the value is false, BGP is disabled from recording peer session status and event information.
        choices: ['no_use','true','false']
        default: no_use
    pswd_type:
        description:
            - Enable BGP peers to establish a TCP connection and perform the Message Digest 5 (MD5)
              authentication for BGP messages.
        choices: ['null','cipher','simple']
    pswd_cipher_text:
        description:
            - The character string in a password identifies the contents of the password, spaces not supported.
              The value is a string of 1 to 255 characters.
    keep_alive_time:
        description:
            - Specify the Keepalive time of a peer or peer group.
              The value is an integer ranging from 0 to 21845. The default value is 60.
    hold_time:
        description:
            - Specify the Hold time of a peer or peer group.
              The value is 0 or an integer ranging from 3 to 65535.
    min_hold_time:
        description:
            - Specify the Min hold time of a peer or peer group.
    key_chain_name:
        description:
            - Specify the Keychain authentication name used when BGP peers establish a TCP connection.
              The value is a string of 1 to 47 case-insensitive characters.
    conn_retry_time:
        description:
            - ConnectRetry interval.
              The value is an integer ranging from 1 to 65535.
    tcp_MSS:
        description:
            - Maximum TCP MSS value used for TCP connection establishment for a peer.
              The value is an integer ranging from 176 to 4096.
    mpls_local_ifnet_disable:
        description:
            - If the value is true, peer create MPLS Local IFNET disable.
              If the value is false, peer create MPLS Local IFNET enable.
        choices: ['no_use','true','false']
        default: no_use
    prepend_global_as:
        description:
            - Add the global AS number to the Update packets to be advertised.
        choices: ['no_use','true','false']
        default: no_use
    prepend_fake_as:
        description:
            - Add the Fake AS number to received Update packets.
        choices: ['no_use','true','false']
        default: no_use
    is_bfd_block:
        description:
            - If the value is true, peers are enabled to inherit the BFD function from the peer group.
              If the value is false, peers are disabled to inherit the BFD function from the peer group.
        choices: ['no_use','true','false']
        default: no_use
    multiplier:
        description:
            - Specify the detection multiplier. The default value is 3.
              The value is an integer ranging from 3 to 50.
    is_bfd_enable:
        description:
            - If the value is true, BFD is enabled.
              If the value is false, BFD is disabled.
        choices: ['no_use','true','false']
        default: no_use
    rx_interval:
        description:
            - Specify the minimum interval at which BFD packets are received.
              The value is an integer ranging from 50 to 1000, in milliseconds.
    tx_interval:
        description:
            - Specify the minimum interval at which BFD packets are sent.
              The value is an integer ranging from 50 to 1000, in milliseconds.
    is_single_hop:
        description:
            - If the value is true, the system is enabled to preferentially use the single-hop mode for
              BFD session setup between IBGP peers.
              If the value is false, the system is disabled from preferentially using the single-hop
              mode for BFD session setup between IBGP peers.
        choices: ['no_use','true','false']
        default: no_use
sd

- name: CloudEngine BGP neighbor test
  hosts: cloudengine
  connection: local
  gather_facts: no
  vars:
    cli:
      host: "{{ inventory_hostname }}"
      port: "{{ ansible_ssh_port }}"
      username: "{{ username }}"
      password: "{{ password }}"
      transport: cli

  tasks:

  - name: "Config bgp peer"
    ce_bgp_neighbor:
      state: present
      vrf_name: js
      peer_addr: 192.168.10.10
      remote_as: 500
      provider: "{{ cli }}"

  - name: "Config bgp route id"
    ce_bgp_neighbor:
      state: absent
      vrf_name: js
      peer_addr: 192.168.10.10
      provider: "{{ cli }}"
s�
changed:
    description: check to see if a change was made on the device
    returned: always
    type: bool
    sample: true
proposed:
    description: k/v pairs of parameters passed into module
    returned: always
    type: dict
    sample: {"peer_addr": "192.168.10.10", "remote_as": "500", "state": "present", "vrf_name": "js"}
existing:
    description: k/v pairs of existing aaa server
    returned: always
    type: dict
    sample: {"bgp peer": []}
end_state:
    description: k/v pairs of aaa params after module execution
    returned: always
    type: dict
    sample: {"bgp peer": [["192.168.10.10", "500"]]}
updates:
    description: command sent to the device
    returned: always
    type: list
    sample: ["peer 192.168.10.10 as-number 500"]
i����N(t
AnsibleModule(t
get_nc_configt
set_nc_configtce_argument_spect
check_ip_addrs:
    <filter type="subtree">
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer>
                  <peerAddr>%s</peerAddr>
s�
                </bgpPeer>
              </bgpPeers>
            </bgpVrf>
          </bgpVrfs>
        </bgpcomm>
      </bgp>
    </filter>
s=
    <config>
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer operation="merge">
                  <peerAddr>%s</peerAddr>
s�
                </bgpPeer>
              </bgpPeers>
            </bgpVrf>
          </bgpVrfs>
        </bgpcomm>
      </bgp>
    </config>
s>
    <config>
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer operation="create">
                  <peerAddr>%s</peerAddr>
s>
    <config>
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer operation="delete">
                  <peerAddr>%s</peerAddr>
sV
    <filter type="subtree">
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer>
                  <peerAddr>%s</peerAddr>
                  <peerBfd>
s�
                  </peerBfd>
                </bgpPeer>
              </bgpPeers>
            </bgpVrf>
          </bgpVrfs>
        </bgpcomm>
      </bgp>
    </filter>
sY
    <config>
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer>
                  <peerAddr>%s</peerAddr>
                  <peerBfd operation="merge">
s�
                  </peerBfd>
                </bgpPeer>
              </bgpPeers>
            </bgpVrf>
          </bgpVrfs>
        </bgpcomm>
      </bgp>
    </config>
sZ
    <config>
      <bgp xmlns="http://www.huawei.com/netconf/vrp" content-version="1.0" format-version="1.0">
        <bgpcomm>
          <bgpVrfs>
            <bgpVrf>
              <vrfName>%s</vrfName>
              <bgpPeers>
                <bgpPeer>
                  <peerAddr>%s</peerAddr>
                  <peerBfd operation="delete">
tBgpNeighborcBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZRS(s  Manages BGP peer configuration cKs'|d}|d}t||�}|S(s netconf_get_config tmoduletconf_str(R(tselftkwargsRRtxml_str((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytnetconf_get_config�s

cKs'|d}|d}t||�}|S(s netconf_set_config RR(R(R
RRRR((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytnetconf_set_config�s

cKs|d}t�}t}|jd}|rjt|�dksPt|�dkrj|jdd|�qjn|jd}|r�td|�s�|jdd	|�nt}n|jd
}|rt|�dks�t|�dkr�|jdd
|�nt}n||d<|S(s check_bgp_peer_args Rtvrf_nameiitmsgs1Error: The len of vrf_name %s is out of [1 - 31].t	peer_addrtipaddrs#Error: The peer_addr %s is invalid.t	remote_asiis2Error: The len of remote_as %s is out of [1 - 11].tneed_cfg(tdicttFalsetparamstlent	fail_jsonR	tTrue(R
RRtresultRRRR((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytcheck_bgp_peer_args�s,
	
$	
		
$		
c!KsC|d}t�}t}|jd}|jd}|rwt|�dks]t|�dkrw|jdd|�qwn|jd}|rQt|�d	ks�t|�d
kr�|jdd|�nt||fdt}|jd|d
|�}	d|	kr
t}qQt	j
d|	�}
|
rH|
|d<|
d|krNt}qNqQt}n|jd}|r+t|�dks�t|�d
kr�|jdd|�nt||fdt}|jd|d
|�}	d|	kr�t}q+t	j
d|	�}
|
r"|
|d<|
d|kr(t}q(q+t}n|jd}|dkr�|s]|jdd�nt||fdt}|jd|d
|�}	d|	kr�t}q�t	j
d|	�}
|
r�|
|d<|
d|kr�t}q�q�t}n|jd}
|
dkr�t||fdt}|jd|d
|�}	d|	krGt}q�t	j
d|	�}
|
r�|
|d<|
d|
kr�t}q�q�t}n|jd}|dkr3t||fdt}|jd|d
|�}	d|	kr�t}q3t	j
d|	�}
|
r*|
|d<|
d|kr0t}q0q3t}n|jd }|dkr�t||fd!t}|jd|d
|�}	d|	kr�t}q�t	j
d"|	�}
|
r�|
|d <|
d|kr�t}q�q�t}n|jd#}|dkr}t||fd$t}|jd|d
|�}	d|	kr6t}q}t	j
d%|	�}
|
rt|
|d#<|
d|krzt}qzq}t}n|jd&}|rct|�d'ks�t|�d
kr�|jdd(|�nt||fd)t}|jd|d
|�}	d|	krt}qct	j
d*|	�}
|
rZ|
|d&<|
dj�|j�kr`t}q`qct}n|jd+}|r=t|�d,ks�t|�d
kr�|jdd-|�nt||fd.t}|jd|d
|�}	d|	kr�t}q=t	j
d/|	�}
|
r4|
|d+<|
d|kr:t}q:q=t}n|jd0}|rt|�d,kstt|�d
kr�|jdd1|�nt||fd2t}|jd|d
|�}	d|	kr�t}qt	j
d3|	�}
|
r|
|d0<|
d|krt}qqt}n|jd4}|r�t||fd5t}|jd|d
|�}	d|	krot}q�t	j
d6|	�}
|
r�|
|d4<|
d|kr�t}q�q�t}n|jd7}|dkr[	t||fd8t}|jd|d
|�}	d|	kr	t}q[	t	j
d9|	�}
|
rR	|
|d7<|
d|krX	t}qX	q[	t}n|jd:}|r�	t||fd;t}|jd|d
|�}	d|	kr�	t}q�	t	j
d<|	�}
|
r�	|
|d:<|
d|kr�	t}q�	q�	t}n|jd=}|r�
t|�d,ks1
t|�d
krH
|jdd>|�nt||fd?t}|jd|d
|�}	d|	kr�
t}q�
t	j
d@|	�}
|
r�
|
|d=<|
d|kr�
t}q�
q�
t}n|jdA}|r�t|�dBkst|�dkr"|jddC|�nt||fdDt}|jd|d
|�}	d|	krgt}q�t	j
dE|	�}
|
r�|
|dA<|
d|kr�t}q�q�t}n|jdF}|r�t|�dkrt|�dGks�t|�dHkr|jddI|�nt||fdJt}|jd|d
|�}	d|	krSt}q�t	j
dK|	�}
|
r�|
|dF<|
d|kr�t}q�q�t}n|jdL}|r�
t|�dkr�t|�dGks�t|�dMkr�|jddN|�nt||fdOt}|jd|d
|�}	d|	kr?
t}q�
t	j
dP|	�}
|
r}
|
|dL<|
d|kr�
t}q�
q�
t}n|jdQ}|r`t|�dRks�
t|�d
kr�
|jddS|�nt||fdTt}|jd|d
|�}	d|	krt}q`t	j
dU|	�}
|
rW|
|dQ<|
d|kr]t}q]q`t}n|jdV}|r:t|�dGks�t|�d
kr�|jddW|�nt||fdXt}|jd|d
|�}	d|	kr�t}q:t	j
dY|	�}
|
r1|
|dV<|
d|kr7t}q7q:t}n|jdZ}|rt|�d[ksqt|�d\kr�|jdd]|�nt||fd^t}|jd|d
|�}	d|	kr�t}qt	j
d_|	�}
|
r|
|dZ<|
d|krt}qqt}n|jd`}|dkr�t||fdat}|jd|d
|�}	d|	krrt}q�t	j
db|	�}
|
r�|
|d`<|
d|kr�t}q�q�t}n|jdc}|dkrw|s�|jdd�nt||fddt}|jd|d
|�}	d|	kr0t}qwt	j
de|	�}
|
rn|
|dc<|
d|krtt}qtqwt}n|jdf} | dkr5|s�|jdd�nt||fdgt}|jd|d
|�}	d|	kr�t}q5t	j
dh|	�}
|
r,|
|df<|
d| kr2t}q2q5t}n||di<|S(js check_bgp_peer_other_args RRRiiRs1Error: The len of vrf_name %s is out of [1 - 31].tdescriptioniPis4Error: The len of description %s is out of [1 - 80].s<description></description>Rs<data/>s#.*<description>(.*)</description>.*tfake_asis0Error: The len of fake_as %s is out of [1 - 11].s<fakeAs></fakeAs>s.*<fakeAs>(.*)</fakeAs>.*tdual_astno_usesfake_as must exist.s<dualAs></dualAs>s.*<dualAs>(.*)</dualAs>.*tconventionals<conventional></conventional>s%.*<conventional>(.*)</conventional>.*t
route_refreshs<routeRefresh></routeRefresh>s%.*<routeRefresh>(.*)</routeRefresh>.*tfour_byte_ass<fourByteAs></fourByteAs>s!.*<fourByteAs>(.*)</fourByteAs>.*t	is_ignores<isIgnore></isIgnore>s.*<isIgnore>(.*)</isIgnore>.*t
local_if_namei?s6Error: The len of local_if_name %s is out of [1 - 63].s<localIfName></localIfName>s#.*<localIfName>(.*)</localIfName>.*tebgp_max_hopi�s8Error: The value of ebgp_max_hop %s is out of [1 - 255].s<ebgpMaxHop></ebgpMaxHop>s!.*<ebgpMaxHop>(.*)</ebgpMaxHop>.*tvalid_ttl_hopss:Error: The value of valid_ttl_hops %s is out of [1 - 255].s<validTtlHops></validTtlHops>s%.*<validTtlHops>(.*)</validTtlHops>.*tconnect_modes<connectMode></connectMode>s#.*<connectMode>(.*)</connectMode>.*t
is_log_changes<isLogChange></isLogChange>s#.*<isLogChange>(.*)</isLogChange>.*t	pswd_types<pswdType></pswdType>s.*<pswdType>(.*)</pswdType>.*tpswd_cipher_texts:Error: The len of pswd_cipher_text %s is out of [1 - 255].s!<pswdCipherText></pswdCipherText>s).*<pswdCipherText>(.*)</pswdCipherText>.*tkeep_alive_timeiUUs;Error: The len of keep_alive_time %s is out of [0 - 21845].s<keepAliveTime></keepAliveTime>s'.*<keepAliveTime>(.*)</keepAliveTime>.*t	hold_timei��is<Error: The value of hold_time %s is out of [0 or 3 - 65535].s<holdTime></holdTime>s.*<holdTime>(.*)</holdTime>.*t
min_hold_timeisAError: The value of min_hold_time %s is out of [0 or 20 - 65535].s<minHoldTime></minHoldTime>s#.*<minHoldTime>(.*)</minHoldTime>.*tkey_chain_namei/s7Error: The len of key_chain_name %s is out of [1 - 47].s<keyChainName></keyChainName>s%.*<keyChainName>(.*)</keyChainName>.*tconn_retry_times=Error: The value of conn_retry_time %s is out of [1 - 65535].s<connRetryTime></connRetryTime>s'.*<connRetryTime>(.*)</connRetryTime>.*ttcp_MSSii�s6Error: The value of tcp_mss %s is out of [176 - 4096].s<tcpMSS></tcpMSS>s.*<tcpMSS>(.*)</tcpMSS>.*tmpls_local_ifnet_disables/<mplsLocalIfnetDisable></mplsLocalIfnetDisable>s7.*<mplsLocalIfnetDisable>(.*)</mplsLocalIfnetDisable>.*tprepend_global_ass#<prependGlobalAs></prependGlobalAs>s+.*<prependGlobalAs>(.*)</prependGlobalAs>.*tprepend_fake_ass<prependFakeAs></prependFakeAs>s'.*<prependFakeAs>(.*)</prependFakeAs>.*R(
RRRRRtCE_GET_BGP_PEER_HEADERtCE_GET_BGP_PEER_TAILRRtretfindalltlowertint(!R
RRRRtpeeripRR Rtrecv_xmltre_findR!R"R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3ttcp_mssR5R6R7((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytcheck_bgp_peer_other_args�s�
	

$	
$		
	
$		
	
	
	
	
	
	
	
	
	
	
	
$		
	
$		
	
$		
	
	
	
	
	
	
	
$		
	
$		
	
6		
	
6		
	
$		
	
$		
	
$		
	
	
	
	
	
	
	
c	Ks)|d}t�}t}|jd}|dkr@||d<|S|jd}|r�t|�dkswt|�dkr�|jdd	|�q�n|jd
}|jd}|dkrCt||fd
t}	|jd|d|	�}
d|
kr�t}qCt	j
d|
�}|r:||d<|d|kr@t}q@qCt}n|jd}|rt|�dkszt|�dkr�|jdd|�nt||fdt}	|jd|d|	�}
d|
kr�t}qt	j
d|
�}|r||d<|d|krt}qqt}n|jd}
|
dkr�t||fdt}	|jd|d|	�}
d|
kr{t}q�t	j
d|
�}|r�||d<|d|
kr�t}q�q�t}n|jd}|r�t|�dks�t|�dkr|jdd|�nt||fdt}	|jd|d|	�}
d|
krUt}q�t	j
d|
�}|r�||d<|d|kr�t}q�q�t}n|jd}|rvt|�dks�t|�dkr�|jdd |�nt||fd!t}	|jd|d|	�}
d|
kr/t}qvt	j
d"|
�}|rm||d<|d|krst}qsqvt}n|jd#}|dkrt||fd$t}	|jd|d|	�}
d|
kr�t}qt	j
d%|
�}|r||d#<|d|krt}qqt}n||d<|S(&s check_peer_bfd_merge_args RtstatetabsentRRiiRs1Error: The len of vrf_name %s is out of [1 - 31].Rtis_bfd_blockR#s<isBfdBlock></isBfdBlock>Rs<data/>s!.*<isBfdBlock>(.*)</isBfdBlock>.*t
multiplieri2is5Error: The value of multiplier %s is out of [3 - 50].s<multiplier></multiplier>s!.*<multiplier>(.*)</multiplier>.*t
is_bfd_enables<isBfdEnable></isBfdEnable>s#.*<isBfdEnable>(.*)</isBfdEnable>.*trx_intervali�s9Error: The value of rx_interval %s is out of [50 - 1000].s<rxInterval></rxInterval>s!.*<rxInterval>(.*)</rxInterval>.*ttx_intervals9Error: The value of tx_interval %s is out of [50 - 1000].s<txInterval></txInterval>s!.*<txInterval>(.*)</txInterval>.*t
is_single_hops<isSingleHop></isSingleHop>s#.*<isSingleHop>(.*)</isSingleHop>.*(RRRRRtCE_GET_PEER_BFD_HEADERtCE_GET_PEER_BFD_TAILRRR:R;R=(R
RRRRRCRRRERR?R@RFRGRHRIRJ((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytcheck_peer_bfd_merge_args�s�
	


$	

	
	
$		
	
	
	
$		
	
$		
	
	
	
c	Ks�|d}t�}t}|jd}|dkr@||d<|S|jd}|r�t|�dkswt|�dkr�|jdd	|�q�n|jd
}|jd}|dkr7t||fd
t}	|jd|d|	�}
d|
kr�q7tj	d|
�}|r7||d<|d|kr4t
}q4q7n|jd}|rt|�dksnt|�dkr�|jdd|�nt||fdt}	|jd|d|	�}
d|
kr�qtj	d|
�}|r||d<|d|krt
}qqn|jd}
|
dkr�t||fdt}	|jd|d|	�}
d|
kr]q�tj	d|
�}|r�||d<|d|
kr�t
}q�q�n|jd}|rlt|�dks�t|�dkr�|jdd|�nt||fdt}	|jd|d|	�}
d|
kr+qltj	d|
�}|rl||d<|d|krit
}qiqln|jd}|r:t|�dks�t|�dkr�|jdd |�nt||fd!t}	|jd|d|	�}
d|
kr�q:tj	d"|
�}|r:||d<|d|kr7t
}q7q:n|jd#}|dkr�t||fd$t}	|jd|d|	�}
d|
kr�q�tj	d%|
�}|r�||d#<|d|kr�t
}q�q�n||d<|S(&s check_peer_bfd_delete_args RRCtpresentRRiiRs1Error: The len of vrf_name %s is out of [1 - 31].RRER#s<isBfdBlock></isBfdBlock>Rs<data/>s!.*<isBfdBlock>(.*)</isBfdBlock>.*RFi2is5Error: The value of multiplier %s is out of [3 - 50].s<multiplier></multiplier>s!.*<multiplier>(.*)</multiplier>.*RGs<isBfdEnable></isBfdEnable>s#.*<isBfdEnable>(.*)</isBfdEnable>.*RHi�s9Error: The value of rx_interval %s is out of [50 - 1000].s<rxInterval></rxInterval>s!.*<rxInterval>(.*)</rxInterval>.*RIs9Error: The value of tx_interval %s is out of [50 - 1000].s<txInterval></txInterval>s!.*<txInterval>(.*)</txInterval>.*RJs<isSingleHop></isSingleHop>s#.*<isSingleHop>(.*)</isSingleHop>.*(RRRRRRKRLRR:R;RR=(R
RRRRRCRRRERR?R@RFRGRHRIRJ((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytcheck_peer_bfd_delete_argsus�
	


$	



$	



$	

$	



c	Ks�|d}|jd}|jd}|rht|�dksNt|�dkrh|jdd|�qhnt||fdt}|jd|d	|�}t�}d
|kr�|Stjd|�}|r�|S|SdS(
s get_bgp_peer RRRiiRs1Error: The len of vrf_name %s is out of [1 - 31].s<remoteAs></remoteAs>Rs<data/>s<.*<peerAddr>(.*)</peerAddr>.*\s.*<remoteAs>(.*)</remoteAs>.*N(	RRRR8R9RtlistR:R;(	R
RRR>RRRRR@((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytget_bgp_peers"


$		c	Ks�|d}|jd}|jd}|rht|�dksNt|�dkrh|jdd|�qhnt||ft}|jd|d|�}t�}d	|kr�|Stjd
|�}|r�|S|SdS(s get_bgp_del_peer RRRiiRs1Error: The len of vrf_name %s is out of [1 - 31].Rs<data/>s.*<peerAddr>(.*)</peerAddr>.*N(	RRRR8R9RRPR:R;(	R
RRR>RRRRR@((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytget_bgp_del_peers"


$		c
Ks�|d}|jd}|jd}|jd}t||fd|t}|jd|d|�}d|kr�|jdd	�ng}d
||f}	|j|	�|S(s merge_bgp_peer RRRRs<remoteAs>%s</remoteAs>Rs<ok/>RsError: Merge bgp peer failed.speer %s as-number %s(RtCE_MERGE_BGP_PEER_HEADERtCE_MERGE_BGP_PEER_TAILRRtappend(
R
RRRRRRR?tcmdstcmd((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytmerge_bgp_peer:s




c
Ks�|d}|jd}|jd}|jd}t||fd|t}|jd|d|�}d|kr�|jdd	�ng}d
||f}	|j|	�|S(s create_bgp_peer RRRRs<remoteAs>%s</remoteAs>Rs<ok/>RsError: Create bgp peer failed.speer %s as-number %s(RtCE_CREATE_BGP_PEER_HEADERtCE_CREATE_BGP_PEER_TAILRRRU(
R
RRRRRRR?RVRW((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytcreate_bgp_peerPs




c	Ks�|d}|jd}|jd}t||ft}|jd|d|�}d|kro|jdd�ng}d|}|j|�|S(	s delete_bgp_peer RRRRs<ok/>RsError: Delete bgp peer failed.sundo peer %s(RtCE_DELETE_BGP_PEER_HEADERtCE_DELETE_BGP_PEER_TAILRRRU(	R
RRRRRR?RVRW((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytdelete_bgp_peerhs




c Ks�|d}|jd}|jd}t||f}g}|jd}|r{|d|7}d||f}|j|�n|jd}	|	r�|d|	7}d	||	f}|j|�n|jd
}
|
dkr"|d|
7}|
d
krd||	f}nd	||	f}|j|�n|jd}|dkr||d|7}|d
krbd|}n
d|}|j|�n|jd}|dkr�|d|7}|d
kr�d|}n
d|}|j|�n|jd}
|
dkr0|d|
7}|
d
krd|}n
d|}|j|�n|jd}|dkr�|d|7}|d
krpd|}n
d|}|j|�n|jd}|r�|d |7}d!||f}|j|�n|jd"}|r|d#|7}d$||f}|j|�n|jd%}|rM|d&|7}d'||f}|j|�n|jd(}|r|d)kr�d*|}|j|�ni|d+kr�d,|}|j|�nC|d-kr�d.}d*|}|j|�d,|}|j|�n|d/|7}n|jd0}|dkrZ|d1|7}|d
kr@d2|}n
d3|}|j|�n|jd4}|r~|d5|7}n|jd6}|r�|d7|7}|d8kr�d9||f}n|d:kr�d;||f}n|j|�n|jd<}|r.|d=|7}d>||f}|j|�n|jd?}|ro|d@|7}dA||f}|j|�n|jdB}|r�|dC|7}dD||f}|j|�n|jdE}|r�|dF|7}dG||f}|j|�n|jdH}|r2|dI|7}dJ||f}|j|�n|jdK}|rs|dL|7}dM||f}|j|�n|jdN}|dkr�|dO|7}|dPkr�dQ|}n
dR|}|j|�n|jdS}|dkr3|dT|7}|d
krdU||	f}ndV||	f}|j|�n|jdW}|dkr�|dX|7}|d
krydY||	f}ndZ||	f}|j|�n|t7}|jd|d[|�}d\|kr�|jd]d^�n|S(_s merge_bgp_peer RRRR s<description>%s</description>speer %s description %sR!s<fakeAs>%s</fakeAs>speer %s local-as %sR"R#s<dualAs>%s</dualAs>ttruespeer %s local-as %s dual-asR$s<conventional>%s</conventional>s)peer %s capability-advertise conventionals.undo peer %s capability-advertise conventionalR%s<routeRefresh>%s</routeRefresh>s*peer %s capability-advertise route-refreshs/undo peer %s capability-advertise route-refreshR&s<fourByteAs>%s</fourByteAs>s&peer %s capability-advertise 4-byte-ass+undo peer %s capability-advertise 4-byte-asR's<isIgnore>%s</isIgnore>speer %s ignoresundo peer %s ignoreR(s<localIfName>%s</localIfName>speer %s connect-interface %sR)s<ebgpMaxHop>%s</ebgpMaxHop>speer %s ebgp-max-hop %sR*s<validTtlHops>%s</validTtlHops>speer %s valid-ttl-hops %sR+t
listenOnlyspeer %s listen-onlytconnectOnlyspeer %s connect-onlytbothtnulls<connectMode>%s</connectMode>R,s<isLogChange>%s</isLogChange>speer %s log-changesundo peer %s log-changeR-s<pswdType>%s</pswdType>R.s#<pswdCipherText>%s</pswdCipherText>tcipherspeer %s password cipher %stsimplespeer %s password simple %sR/s!<keepAliveTime>%s</keepAliveTime>speer %s timer keepalive %sR0s<holdTime>%s</holdTime>speer %s timer hold %sR1s<minHoldTime>%s</minHoldTime>speer %s timer min-holdtime %sR2s<keyChainName>%s</keyChainName>speer %s keychain %sR3s!<connRetryTime>%s</connRetryTime>speer %s timer connect-retry %sR4s<tcpMSS>%s</tcpMSS>speer %s tcp-mss %sR5s1<mplsLocalIfnetDisable>%s</mplsLocalIfnetDisable>tfalses%undo peer %s mpls-local-ifnet disables peer %s mpls-local-ifnet disableR6s%<prependGlobalAs>%s</prependGlobalAs>s%peer %s local-as %s prepend-global-ass*undo peer %s local-as %s prepend-global-asR7s!<prependFakeAs>%s</prependFakeAs>s$peer %s local-as %s prepend-local-ass)undo peer %s local-as %s prepend-local-asRs<ok/>Rs#Error: Merge bgp peer other failed.(RRSRURTRR( R
RRRRRRVR RWR!R"R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3RAR5R6R7R?((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytmerge_bgp_peer_other}s:












































cKsP|d}|jd}|jd}t||f}g}|jd}|dkr�|d|7}|dkrzd|}n
d	|}|j|�n|jd
}	|	r�|d|	7}d||	f}|j|�n|jd
}
|
dkr/|d|
7}|
dkrd|}n
d|}|j|�n|jd}|rp|d|7}d||f}|j|�n|jd}|r�|d|7}d||f}|j|�n|jd}
|
dkr|d|
7}|
dkr�d|}n
d|}|j|�n|t7}|jd|d|�}d|krL|jdd�n|S(s merge_peer_bfd RRRRER#s<isBfdBlock>%s</isBfdBlock>R_speer %s bfd blocksundo peer %s bfd blockRFs<multiplier>%s</multiplier>s peer %s bfd detect-multiplier %sRGs<isBfdEnable>%s</isBfdEnable>speer %s bfd enablesundo peer %s bfd enableRHs<rxInterval>%s</rxInterval>speer %s bfd min-rx-interval %sRIs<txInterval>%s</txInterval>speer %s bfd min-tx-interval %sRJs<isSingleHop>%s</isSingleHop>s$peer %s bfd enable single-hop-prefers)undo peer %s bfd enable single-hop-preferRs<ok/>RsError: Merge peer bfd failed.(RtCE_MERGE_PEER_BFD_HEADERRUtCE_MERGE_PEER_BFD_TAILRR(R
RRRRRRVRERWRFRGRHRIRJR?((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytmerge_peer_bfdYs\















cKs|d}|jd}|jd}t||f}g}|jd}|dkr{|d|7}d|}|j|�n|jd}	|	r�|d	|	7}d
||	f}|j|�n|jd}
|
dkr�|d|
7}d
|}|j|�n|jd}|r>|d|7}d||f}|j|�n|jd}|r|d|7}d||f}|j|�n|jd}
|
dkr�|d|
7}d|}|j|�n|t7}|jd|d|�}d|kr|jdd�n|S(s delete_peer_bfd RRRRER#s<isBfdBlock>%s</isBfdBlock>sundo peer %s bfd blockRFs<multiplier>%s</multiplier>s%undo peer %s bfd detect-multiplier %sRGs<isBfdEnable>%s</isBfdEnable>sundo peer %s bfd enableRHs<rxInterval>%s</rxInterval>s#undo peer %s bfd min-rx-interval %sRIs<txInterval>%s</txInterval>s#undo peer %s bfd min-tx-interval %sRJs<isSingleHop>%s</isSingleHop>s)undo peer %s bfd enable single-hop-preferRs<ok/>RsError: Delete peer bfd failed.(RtCE_DELETE_PEER_BFD_HEADERRUtCE_DELETE_PEER_BFD_TAILRR(R
RRRRRRVRERWRFRGRHRIRJR?((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytdelete_peer_bfd�sV















(t__name__t
__module__t__doc__RRRRBRMRORQRRRXR[R^RgRjRm(((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pyR
�s"	
	
	 	��	�	�						�	Gc5KCs�tdtdddgdd�dtddd	t�d
tddd	t�dtddd	t�dtdd�d
tdd�dtddddddddg�dtddddddddg�dtddddddddg�dtddddddddg�dtddddddddg�dtdd�dtdd�dtdd�dtddddg�dtddddddddg�dtddd d!g�d"tddd#t�d$tdd�d%tdd�d&tdd�d'tdd�d(tdd�d)tdd�d*tddddddddg�d+tddddddddg�d,tddddddddg�d-tddddddddg�d.tdd�d/tddddddddg�d0tdd�d1tdd�d2tddddddddg��!}|jt�td3|d4t�}t}t�}t�}t�}g}|jd}|jd}|jd
}	|jd}
|jd}|jd
}|jd}
|jd}|jd}|jd}|jd}|jd}|jd}|jd}|jd}|jd}|jd}|jd"}|jd$}|jd%}|jd&}|jd'}|jd(}|jd)}|jd*}|jd+} |jd,}!|jd-}"|jd.}#|jd/}$|jd0}%|jd1}&|jd2}'t�}(||d<|rF||d<n|	rY|	|d
<n|
rl|
|d<n|r||d<n|r�||d
<n|
dkr�|
|d<n|dkr�||d<n|dkr�||d<n|dkr�||d<n|dkr||d<n|r"||d<n|r5||d<n|rH||d<n|r[||d<n|dkrt||d<n|r�||d<n|r�||d"<n|r�||d$<n|r�||d%<n|r�||d&<n|r�||d'<n|r�||d(<n|r||d)<n|dkr%||d*<n| dkr>| |d+<n|!dkrW|!|d,<n|"dkrp|"|d-<n|#r�|#|d.<n|$dkr�|$|d/<n|%r�|%|d0<n|&r�|&|d1<n|'dkr�|'|d2<n|(s�|jd5d6�n|(j	d7|�})|(j
d7|�}*|(jd7|�}+|(jd7|�},|)d8r�	|dkr2	|
r�	|(j
d7|�}-|-|d9<|	|
f}.t|-�d:kr�|(jd7|�}/t}xc|/D]}0|j|0�q�WnE|.|-kr�n6|(jd7|�}/t}x|/D]}0|j|0�q�W|(j
d7|�}1|1|d9<q�	q�	|(jd7|�}-|-|d9<|	}.t|-�d:kri	nE|.|-kr�	|(jd7|�}/t}x|/D]}0|j|0�q�	Wn|(jd7|�}1|1|d9<nt�}2x+|*D]#}0|0d8kr�	|*|0|2|0<q�	q�	W|2r
|2|d;<n|*d8ri
|dkri
|(jd7|�}/t}x|/D]}0|j|0�qL
Wqi
n|(j
d7|�}*t�}3x+|*D]#}0|0d8kr�
|*|0|3|0<q�
q�
W|3r�
|3|d;<n|dkr�t�}2x+|+D]#}0|0d8kr�
|+|0|2|0<q�
q�
W|2r|2|d<<n|+d8r^|(jd7|�}/t}x|/D]}0|j|0�qDWn|(jd7|�}+t�}3x+|+D]#}0|0d8kr�|+|0|3|0<q�q�W|3rc|3|d<<qcn�t�}2x+|,D]#}0|0d8kr�|,|0|2|0<q�q�W|2r|2|d<<n|(jd7|�},t�}3x+|,D]#}0|0d8kr)|,|0|3|0<q)q)W|3rc|3|d<<nt�}4||4d=<||4d><||4d?<||4d@<||4dA<|j|4�dBS(Cs main RCtchoicesRNRDtdefaultRttypetstrtrequiredRRR R!R"R#R_RfR$R%R&R'R(R)R*R+R`RaRbR,R-RcRdReR.tno_logR/R0R1R2R3R4R5R6R7RERFRGRHRIRJt
argument_spectsupports_check_modeRsError: Init module failed.RRsbgp peerisbgp peer otherspeer bfdtproposedtexistingtchangedt	end_statetupdatesN(RRtupdateRRRRR
RRRBRMRORQRR[RURXRRR^RgRjt	exit_json(5RwRR{RyRzR|R}RCRRRR R!R"R$R%R&R'R(R)R*R+R,R-R.R/R0R1R2R3RAR5R6R7RERFRGRHRIRJtce_bgp_peer_objtneed_bgp_peer_enabletneed_bgp_peer_other_rsttneed_peer_bfd_merge_rsttneed_peer_bfd_del_rsttbgp_peer_existtbgp_peer_newRWtitemtbgp_peer_endt	exist_tmptend_tmptresults((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pytmain�s�$$$$$$$$$$$'
			
































	
































						






	



			

	



			
	

			

	




t__main__(tANSIBLE_METADATAt
DOCUMENTATIONtEXAMPLEStRETURNR:tansible.module_utils.basicRt+ansible.module_utils.network.cloudengine.ceRRRR	R8R9RSRTRYRZR\R]RKRLRhRiRkRltobjectR
R�Rn(((sW/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_neighbor.pyt<module>s@


� "	
	
	
	


�����D	�

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