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_af.pyo

�
�Udac@sIidd6dgd6dd6ZdZdZdZd	d
lZd	dlmZd	dlmZm	Z	m
Z
mZd
ZdZ
dZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$e'fd%��YZ(d&�Z)e*d'krEe)�nd
S((s1.1tmetadata_versiontpreviewtstatust	communitytsupported_bys�8
---
module: ce_bgp_af
version_added: "2.4"
short_description: Manages BGP Address-family configuration on HUAWEI CloudEngine switches.
description:
    - Manages BGP Address-family 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.
              The value is a string of 1 to 31 case-sensitive characters.
        required: true
    af_type:
        description:
            - Address family type of a BGP instance.
        required: true
        choices: ['ipv4uni','ipv4multi', 'ipv4vpn', 'ipv6uni', 'ipv6vpn', 'evpn']
    max_load_ibgp_num:
        description:
            - Specify the maximum number of equal-cost IBGP routes.
              The value is an integer ranging from 1 to 65535.
    ibgp_ecmp_nexthop_changed:
        description:
            - If the value is true, the next hop of an advertised route is changed to the advertiser itself in IBGP
              load-balancing scenarios.
              If the value is false, the next hop of an advertised route is not changed to the advertiser itself in
              IBGP load-balancing scenarios.
        choices: ['no_use','true','false']
        default: no_use
    max_load_ebgp_num:
        description:
            - Specify the maximum number of equal-cost EBGP routes.
              The value is an integer ranging from 1 to 65535.
    ebgp_ecmp_nexthop_changed:
        description:
            - If the value is true, the next hop of an advertised route is changed to the advertiser itself in EBGP
              load-balancing scenarios.
              If the value is false, the next hop of an advertised route is not changed to the advertiser itself in
              EBGP load-balancing scenarios.
        choices: ['no_use','true','false']
        default: no_use
    maximum_load_balance:
        description:
            - Specify the maximum number of equal-cost routes in the BGP routing table.
              The value is an integer ranging from 1 to 65535.
    ecmp_nexthop_changed:
        description:
            - If the value is true, the next hop of an advertised route is changed to the advertiser itself in BGP
              load-balancing scenarios.
              If the value is false, the next hop of an advertised route is not changed to the advertiser itself
              in BGP load-balancing scenarios.
        choices: ['no_use','true','false']
        default: no_use
    default_local_pref:
        description:
            - Set the Local-Preference attribute. The value is an integer.
              The value is an integer ranging from 0 to 4294967295.
    default_med:
        description:
            - Specify the Multi-Exit-Discriminator (MED) of BGP routes.
              The value is an integer ranging from 0 to 4294967295.
    default_rt_import_enable:
        description:
            - If the value is true, importing default routes to the BGP routing table is allowed.
              If the value is false, importing default routes to the BGP routing table is not allowed.
        choices: ['no_use','true','false']
        default: no_use
    router_id:
        description:
            - ID of a router that is in IPv4 address format.
              The value is a string of 0 to 255 characters.
              The value is in dotted decimal notation.
    vrf_rid_auto_sel:
        description:
            - If the value is true, VPN BGP instances are enabled to automatically select router IDs.
              If the value is false, VPN BGP instances are disabled from automatically selecting router IDs.
        choices: ['no_use','true','false']
        default: no_use
    nexthop_third_party:
        description:
            - If the value is true, the third-party next hop function is enabled.
              If the value is false, the third-party next hop function is disabled.
        choices: ['no_use','true','false']
        default: no_use
    summary_automatic:
        description:
            - If the value is true, automatic aggregation is enabled for locally imported routes.
              If the value is false, automatic aggregation is disabled for locally imported routes.
        choices: ['no_use','true','false']
        default: no_use
    auto_frr_enable:
        description:
            - If the value is true, BGP auto FRR is enabled.
              If the value is false, BGP auto FRR is disabled.
        choices: ['no_use','true','false']
        default: no_use
    load_balancing_as_path_ignore:
        description:
            - Load balancing as path ignore.
        choices: ['no_use','true','false']
        default: no_use
    rib_only_enable:
        description:
            - If the value is true, BGP routes cannot be advertised to the IP routing table.
              If the value is false, Routes preferred by BGP are advertised to the IP routing table.
        choices: ['no_use','true','false']
        default: no_use
    rib_only_policy_name:
        description:
            - Specify the name of a routing policy.
              The value is a string of 1 to 40 characters.
    active_route_advertise:
        description:
            - If the value is true, BGP is enabled to advertise only optimal routes in the RM to peers.
              If the value is false, BGP is not enabled to advertise only optimal routes in the RM to peers.
        choices: ['no_use','true','false']
        default: no_use
    as_path_neglect:
        description:
            - If the value is true, the AS path attribute is ignored when BGP selects an optimal route.
              If the value is false, the AS path attribute is not ignored when BGP selects an optimal route.
              An AS path with a smaller length has a higher priority.
        choices: ['no_use','true','false']
        default: no_use
    med_none_as_maximum:
        description:
            - If the value is true, when BGP selects an optimal route, the system uses 4294967295 as the
              MED value of a route if the route's attribute does not carry a MED value.
              If the value is false, the system uses 0 as the MED value of a route if the route's attribute
              does not carry a MED value.
        choices: ['no_use','true','false']
        default: no_use
    router_id_neglect:
        description:
            - If the value is true, the router ID attribute is ignored when BGP selects the optimal route.
              If the value is false, the router ID attribute is not ignored when BGP selects the optimal route.
        choices: ['no_use','true','false']
        default: no_use
    igp_metric_ignore:
        description:
            - If the value is true, the metrics of next-hop IGP routes are not compared when BGP selects
              an optimal route.
              If the value is false, the metrics of next-hop IGP routes are not compared when BGP selects
              an optimal route.
              A route with a smaller metric has a higher priority.
        choices: ['no_use','true','false']
        default: no_use
    always_compare_med:
        description:
            - If the value is true, the MEDs of routes learned from peers in different autonomous systems
              are compared when BGP selects an optimal route.
              If the value is false, the MEDs of routes learned from peers in different autonomous systems
              are not compared when BGP selects an optimal route.
        choices: ['no_use','true','false']
        default: no_use
    determin_med:
        description:
            - If the value is true, BGP deterministic-MED is enabled.
              If the value is false, BGP deterministic-MED is disabled.
        choices: ['no_use','true','false']
        default: no_use
    preference_external:
        description:
            - Set the protocol priority of EBGP routes.
              The value is an integer ranging from 1 to 255.
    preference_internal:
        description:
            - Set the protocol priority of IBGP routes.
              The value is an integer ranging from 1 to 255.
    preference_local:
        description:
            - Set the protocol priority of a local BGP route.
              The value is an integer ranging from 1 to 255.
    prefrence_policy_name:
        description:
            - Set a routing policy to filter routes so that a configured priority is applied to
              the routes that match the specified policy.
              The value is a string of 1 to 40 characters.
    reflect_between_client:
        description:
            - If the value is true, route reflection is enabled between clients.
              If the value is false, route reflection is disabled between clients.
        choices: ['no_use','true','false']
        default: no_use
    reflector_cluster_id:
        description:
            - Set a cluster ID. Configuring multiple RRs in a cluster can enhance the stability of the network.
              The value is an integer ranging from 1 to 4294967295.
    reflector_cluster_ipv4:
        description:
            - Set a cluster ipv4 address. The value is expressed in the format of an IPv4 address.
    rr_filter_number:
        description:
            - Set the number of the extended community filter supported by an RR group.
              The value is a string of 1 to 51 characters.
    policy_vpn_target:
        description:
            - If the value is true, VPN-Target filtering function is performed for received VPN routes.
              If the value is false, VPN-Target filtering function is not performed for received VPN routes.
        choices: ['no_use','true','false']
        default: no_use
    next_hop_sel_depend_type:
        description:
            - Next hop select depend type.
        choices: ['default','dependTunnel', 'dependIp']
        default: default
    nhp_relay_route_policy_name:
        description:
            - Specify the name of a route-policy for route iteration.
              The value is a string of 1 to 40 characters.
    ebgp_if_sensitive:
        description:
            - If the value is true, after the fast EBGP interface awareness function is enabled,
              EBGP sessions on an interface are deleted immediately when the interface goes Down.
              If the value is false, after the fast EBGP interface awareness function is enabled,
              EBGP sessions on an interface are not deleted immediately when the interface goes Down.
        choices: ['no_use','true','false']
        default: no_use
    reflect_chg_path:
        description:
            - If the value is true, the route reflector is enabled to modify route path attributes
              based on an export policy.
              If the value is false, the route reflector is disabled from modifying route path attributes
              based on an export policy.
        choices: ['no_use','true','false']
        default: no_use
    add_path_sel_num:
        description:
            - Number of Add-Path routes.
              The value is an integer ranging from 2 to 64.
    route_sel_delay:
        description:
            - Route selection delay.
              The value is an integer ranging from 0 to 3600.
    allow_invalid_as:
        description:
            - Allow routes with BGP origin AS validation result Invalid to be selected.
              If the value is true, invalid routes can participate in route selection.
              If the value is false, invalid routes cannot participate in route selection.
        choices: ['no_use','true','false']
        default: no_use
    policy_ext_comm_enable:
        description:
            - If the value is true, modifying extended community attributes is allowed.
              If the value is false, modifying extended community attributes is not allowed.
        choices: ['no_use','true','false']
        default: no_use
    supernet_uni_adv:
        description:
            - If the value is true, the function to advertise supernetwork unicast routes is enabled.
              If the value is false, the function to advertise supernetwork unicast routes is disabled.
        choices: ['no_use','true','false']
        default: no_use
    supernet_label_adv:
        description:
            - If the value is true, the function to advertise supernetwork label is enabled.
              If the value is false, the function to advertise supernetwork label is disabled.
        choices: ['no_use','true','false']
        default: no_use
    ingress_lsp_policy_name:
        description:
            - Ingress lsp policy name.
    originator_prior:
        description:
            - Originator prior.
        choices: ['no_use','true','false']
        default: no_use
    lowest_priority:
        description:
            - If the value is true, enable reduce priority to advertise route.
              If the value is false, disable reduce priority to advertise route.
        choices: ['no_use','true','false']
        default: no_use
    relay_delay_enable:
        description:
            - If the value is true, relay delay enable.
              If the value is false, relay delay disable.
        choices: ['no_use','true','false']
        default: no_use
    import_protocol:
        description:
            - Routing protocol from which routes can be imported.
        choices: ['direct', 'ospf', 'isis', 'static', 'rip', 'ospfv3', 'ripng']
    import_process_id:
        description:
            - Process ID of an imported routing protocol.
              The value is an integer ranging from 0 to 4294967295.
    network_address:
        description:
            - Specify the IP address advertised by BGP.
              The value is a string of 0 to 255 characters.
    mask_len:
        description:
            - Specify the mask length of an IP address.
              The value is an integer ranging from 0 to 128.
s=
- name: CloudEngine BGP address family 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 Address_Family"
    ce_bgp_af:
      state: present
      vrf_name: js
      af_type: ipv4uni
      provider: "{{ cli }}"
  - name: "Undo BGP Address_Family"
    ce_bgp_af:
      state: absent
      vrf_name: js
      af_type: ipv4uni
      provider: "{{ cli }}"
  - name: "Config import route"
    ce_bgp_af:
      state: present
      vrf_name: js
      af_type: ipv4uni
      import_protocol: ospf
      import_process_id: 123
      provider: "{{ cli }}"
  - name: "Undo import route"
    ce_bgp_af:
      state: absent
      vrf_name: js
      af_type: ipv4uni
      import_protocol: ospf
      import_process_id: 123
      provider: "{{ cli }}"
  - name: "Config network route"
    ce_bgp_af:
      state: present
      vrf_name: js
      af_type: ipv4uni
      network_address: 1.1.1.1
      mask_len: 24
      provider: "{{ cli }}"
  - name: "Undo network route"
    ce_bgp_af:
      state: absent
      vrf_name: js
      af_type: ipv4uni
      network_address: 1.1.1.1
      mask_len: 24
      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: {"af_type": "ipv4uni",
             "state": "present", "vrf_name": "js"}
existing:
    description: k/v pairs of existing aaa server
    returned: always
    type: dict
    sample: {}
end_state:
    description: k/v pairs of aaa params after module execution
    returned: always
    type: dict
    sample: {"af_type": "ipv4uni", "vrf_name": "js"}
updates:
    description: command sent to the device
    returned: always
    type: list
    sample: ["ipv4-family vpn-instance js"]
i����N(t
AnsibleModule(t
get_nc_configt
set_nc_configtce_argument_spect
check_ip_addrs8
    <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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
s�
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF operation="merge">
                  <afType>%s</afType>
s�
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF operation="delete">
                  <afType>%s</afType>
s�
    <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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <importRoutes>
                    <importRoute>
                      <importProtocol></importProtocol>
                      <importProcessId></importProcessId>
                    </importRoute>
                  </importRoutes>
                  <networkRoutes>
                    <networkRoute>
                      <networkAddress></networkAddress>
                      <maskLen></maskLen>
                    </networkRoute>
                  </networkRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <importRoutes>
                    <importRoute operation="merge">
                      <importProtocol>%s</importProtocol>
                      <importProcessId>%s</importProcessId>
s�
                    </importRoute>
                  </importRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <importRoutes>
                    <importRoute operation="create">
                      <importProtocol>%s</importProtocol>
                      <importProcessId>%s</importProcessId>
                    </importRoute>
                  </importRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <importRoutes>
                    <importRoute operation="delete">
                      <importProtocol>%s</importProtocol>
                      <importProcessId>%s</importProcessId>
                    </importRoute>
                  </importRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </bgpVrf>
          </bgpVrfs>
        </bgpcomm>
      </bgp>
    </config>
s�
    <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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <networkRoutes>
                    <networkRoute>
                      <networkAddress></networkAddress>
                      <maskLen></maskLen>
s�
                    </networkRoute>
                  </networkRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <networkRoutes>
                    <networkRoute operation="merge">
                      <networkAddress>%s</networkAddress>
                      <maskLen>%s</maskLen>
s�
                    </networkRoute>
                  </networkRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <networkRoutes>
                    <networkRoute operation="create">
                      <networkAddress>%s</networkAddress>
                      <maskLen>%s</maskLen>
                    </networkRoute>
                  </networkRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
                  <networkRoutes>
                    <networkRoute operation="delete">
                      <networkAddress>%s</networkAddress>
                      <maskLen>%s</maskLen>
                    </networkRoute>
                  </networkRoutes>
                </bgpVrfAF>
              </bgpVrfAFs>
            </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>
              <bgpVrfAFs>
                <bgpVrfAF>
                  <afType>%s</afType>
s
                  <importRoutes>
                    <importRoute operation="merge">
                      <importProtocol>%s</importProtocol>
                      <importProcessId>%s</importProcessId>
                    </importRoute>
                  </importRoutes>
s
                  <importRoutes>
                    <importRoute operation="create">
                      <importProtocol>%s</importProtocol>
                      <importProcessId>%s</importProcessId>
                    </importRoute>
                  </importRoutes>
s
                  <importRoutes>
                    <importRoute operation="delete">
                      <importProtocol>%s</importProtocol>
                      <importProcessId>%s</importProcessId>
                    </importRoute>
                  </importRoutes>
s
                  <networkRoutes>
                    <networkRoute operation="merge">
                      <networkAddress>%s</networkAddress>
                      <maskLen>%s</maskLen>
                    </networkRoute>
                  </networkRoutes>
s
                  <networkRoutes>
                    <networkRoute operation="create">
                      <networkAddress>%s</networkAddress>
                      <maskLen>%s</maskLen>
                    </networkRoute>
                  </networkRoutes>
s
                  <networkRoutes>
                    <networkRoute operation="delete">
                      <networkAddress>%s</networkAddress>
                      <maskLen>%s</maskLen>
                    </networkRoute>
                  </networkRoutes>
tBgpAfcBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�ZRS(s* Manages BGP Address-family configuration cKs'|d}|d}t||�}|S(s netconf_get_config tmoduletconf_str(R(tselftkwargsRRtxml_str((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytnetconf_get_config's

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

cKs�|d}t�}t}|jd}|jd}|rwt|�dks]t|�dkr�|jdd|�q�n|jdd�|jd	}|jd}t||ft}|jd|d
|�}	|dkr?d|	kr�t}q�t	j
d
|	�}
|
r6|
|d<||d<|
d|kr<t}q<q�t}nWd|	krNnHt	j
d
|	�}
|
r�|
|d<||d<|
d|kr�t}q�n||d<|S(s check_bgp_af_args Rtvrf_nametaf_typeiitmsgs1Error: The len of vrf_name %s is out of [1 - 31].sError: Please input vrf_name.tstateRtpresents<data/>s.*<afType>(.*)</afType>.*tneed_cfg(tdicttFalsetparamstlent	fail_jsont CE_GET_BGP_ADDRESS_FAMILY_HEADERtCE_GET_BGP_ADDRESS_FAMILY_TAILRtTruetretfindall(R
RRtresultRRRRRtrecv_xmltre_find((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytcheck_bgp_af_args;sJ
	

$	


	

	


cKs%|d}t�}t}|jd}|jd}|jd}|jd}|rPt|�dkr||jdd|�nt||fd	t}	|jd|d
|	�}
|dkr
d|
kr�t}qMt	j
d
|
�}|r|d|krt}qqMt}qPd|
krqPt	j
d
|
�}|rP|d|krMt}qMqPn|jd}|dkr=t||fdt}	|jd|d
|	�}
|dkr�d|
kr�t}q:t	j
d|
�}|r�|d|kr�t}q�q:t}q=d|
krq=t	j
d|
�}|r=|d|kr:t}q:q=n|jd}
|
dkr*t||fdt}	|jd|d
|	�}
|dkr�d|
kr�t}q't	j
d|
�}|r�|d|
kr�t}q�q't}q*d|
kr�q*t	j
d|
�}|r*|d|
kr't}q'q*n|jd}|dkrt||fdt}	|jd|d
|	�}
|dkr�d|
kr�t}qt	j
d|
�}|r�|d|kr�t}q�qt}qd|
kr�qt	j
d|
�}|r|d|krt}qqn||d<|S(s check_bgp_af_other_can_del RRRRt	router_idi�Rs3Error: The len of router_id %s is out of [0 - 255].s<routerId></routerId>RRs<data/>s.*<routerId>(.*)</routerId>.*itdetermin_medtno_uses<determinMed></determinMed>s#.*<determinMed>(.*)</determinMed>.*tebgp_if_sensitives#<ebgpIfSensitive></ebgpIfSensitive>s+.*<ebgpIfSensitive>(.*)</ebgpIfSensitive>.*trelay_delay_enables%<relayDelayEnable></relayDelayEnable>s-.*<relayDelayEnable>(.*)</relayDelayEnable>.*R(RRRRRRRRRR R!(R
RRR"RRRRR&RR#R$R'R)R*((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytcheck_bgp_af_other_can_delps�
	



			
		
		
		
c9Ks�#|d}t�}t}|jd}|jd}|jd}|rt|�dksjt|�dkr�|jdd|�nt||fd	t}|jd|d
|�}	d|	kr�t}qt	j
d|	�}
|
r|
|d<||d<|
d
|krt}qqt}n|jd}|dkr�t||fdt}|jd|d
|�}	d|	krut}q�t	j
d|	�}
|
r�|
|d<||d<|
d
|kr�t}q�q�t}n|jd}|r�t|�dks�t|�dkr|jdd|�nt||fdt}|jd|d
|�}	d|	krYt}q�t	j
d|	�}
|
r�|
|d<||d<|
d
|kr�t}q�q�t}n|jd}
|
dkrYt||fdt}|jd|d
|�}	d|	krt}qYt	j
d|	�}
|
rP|
|d<||d<|
d
|
krVt}qVqYt}n|jd}|r=t|�dks�t|�dkr�|jdd|�nt||fdt}|jd|d
|�}	d|	kr�t}q=t	j
d|	�}
|
r4|
|d<||d<|
d
|kr:t}q:q=t}n|jd}|dkr�t||fdt}|jd|d
|�}	d|	kr�t}q�t	j
d|	�}
|
r�|
|d<||d<|
d
|kr�t}q�q�t}n|jd }|r�t|�d
kr(|jdd!|�nt||fd"t}|jd|d
|�}	d|	krmt}q�t	j
d#|	�}
|
r�|
|d <||d<|
d
|kr�t}q�q�t}n|jd$}|r�t|�d
kr�|jdd%|�nt||fd&t}|jd|d
|�}	d|	kr?t}q�t	j
d'|	�}
|
r�|
|d$<||d<|
d
|kr�t}q�q�t}n|jd(}|dkr?t||fd)t}|jd|d
|�}	d|	kr�t}q?t	j
d*|	�}
|
r6|
|d(<||d<|
d
|kr<t}q<q?t}n|jd+}|rt|�d,kr{|jdd-|�nt||fd.t}|jd|d
|�}	d|	kr�t}qt	j
d/|	�}
|
r|
|d+<||d<|
d
|krt}qqt}n|jd0}|dkr�t||fd1t}|jd|d
|�}	d|	krot}q�t	j
d2|	�}
|
r�|
|d0<||d<|
d
|kr�t}q�q�t}n|jd3}|dkro	t||fd4t}|jd|d
|�}	d|	kr	t}qo	t	j
d5|	�}
|
rf	|
|d3<||d<|
d
|krl	t}ql	qo	t}n|jd6}|dkr
t||fd7t}|jd|d
|�}	d|	kr�	t}q
t	j
d8|	�}
|
r
|
|d6<||d<|
d
|kr
t}q
q
t}n|jd9}|dkr�
t||fd:t}|jd|d
|�}	d|	kr|
t}q�
t	j
d;|	�}
|
r�
|
|d9<||d<|
d
|kr�
t}q�
q�
t}n|jd<}|dkr|t||fd=t}|jd|d
|�}	d|	kr+t}q|t	j
d>|	�}
|
rs|
|d<<||d<|
d
|kryt}qyq|t}n|jd?}|dkr+t||fd@t}|jd|d
|�}	d|	kr�t}q+t	j
dA|	�}
|
r"|
|d?<||d<|
d
|kr(t}q(q+t}n|jdB}|r
t|�dCksbt|�dkry|jddD|�nt||fdEt}|jd|d
|�}	d|	kr�t}q
t	j
dF|	�}
|
r
|
|dB<||d<|
d
|kr
t}q
q
t}n|jdG}|dkr�
t||fdHt}|jd|d
|�}	d|	krm
t}q�
t	j
dI|	�}
|
r�
|
|dG<||d<|
d
|kr�
t}q�
q�
t}n|jdJ}|dkrmt||fdKt}|jd|d
|�}	d|	krt}qmt	j
dL|	�}
|
rd|
|dJ<||d<|
d
|krjt}qjqmt}n|jdM}|dkrt||fdNt}|jd|d
|�}	d|	kr�t}qt	j
dO|	�}
|
r|
|dM<||d<|
d
|krt}qqt}n|jdP}|dkr�t||fdQt}|jd|d
|�}	d|	krzt}q�t	j
dR|	�}
|
r�|
|dP<||d<|
d
|kr�t}q�q�t}n|jdS}|dkrzt||fdTt}|jd|d
|�}	d|	kr)t}qzt	j
dU|	�}
|
rq|
|dS<||d<|
d
|krwt}qwqzt}n|jdV} | dkr)t||fdWt}|jd|d
|�}	d|	kr�t}q)t	j
dX|	�}
|
r |
|dV<||d<|
d
| kr&t}q&q)t}n|jdY}!|!dkr�t||fdZt}|jd|d
|�}	d|	kr�t}q�t	j
d[|	�}
|
r�|
|dY<||d<|
d
|!kr�t}q�q�t}n|jd\}"|"r�t|"�d,kst|"�dkr&|jdd]|"�nt||fd^t}|jd|d
|�}	d|	krkt}q�t	j
d_|	�}
|
r�|
|d\<||d<|
d
|"kr�t}q�q�t}n|jd`}#|#r�t|#�d,ks�t|#�dkr
|jdda|#�nt||fdbt}|jd|d
|�}	d|	krOt}q�t	j
dc|	�}
|
r�|
|d`<||d<|
d
|#kr�t}q�q�t}n|jdd}$|$r�t|$�d,ks�t|$�dkr�|jdde|$�nt||fdft}|jd|d
|�}	d|	kr3t}q�t	j
dg|	�}
|
r{|
|dd<||d<|
d
|$kr�t}q�q�t}n|jdh}%|%rht|%�dCks�t|%�dkr�|jddi|%�nt||fdjt}|jd|d
|�}	d|	krt}qht	j
dk|	�}
|
r_|
|dh<||d<|
d
|%kret}qeqht}n|jdl}&|&dkrt||fdmt}|jd|d
|�}	d|	kr�t}qt	j
dn|	�}
|
r|
|dl<||d<|
d
|&krt}qqt}n|jdo}'|'r�t|'�d
krS|jddp|'�nt||fdqt}|jd|d
|�}	d|	kr�t}q�t	j
dr|	�}
|
r�|
|do<||d<|
d
|'kr�t}q�q�t}n|jds}(|(r�t|(�d,kr%|jddt|(�nt||fdut}|jd|d
|�}	d|	krjt}q�t	j
dv|	�}
|
r�|
|ds<||d<|
d
|(kr�t}q�q�t}n|jdw})|)r�t|)�dxks�t|)�dkr	|jddy|)�nt||fdzt}|jd|d
|�}	d|	krNt}q�t	j
d{|	�}
|
r�|
|dw<||d<|
d
|)kr�t}q�q�t}n|jd|}*|*dkrNt||fd}t}|jd|d
|�}	d|	kr�t}qNt	j
d~|	�}
|
rE|
|d|<||d<|
d
|*krKt}qKqNt}n|jd}+|+r�t||fd�t}|jd|d
|�}	d|	kr�t}q�t	j
d�|	�}
|
r�|
|d<||d<|
d
|+kr�t}q�q�t}n|jd�},|,r�t|,�dCks.t|,�dkrE|jdd�|,�nt||fd�t}|jd|d
|�}	d|	kr�t}q�t	j
d�|	�}
|
r�|
|d�<||d<|
d
|,kr�t}q�q�t}n|jd�}-|-dkr�t||fd�t}|jd|d
|�}	d|	kr9t}q�t	j
d�|	�}
|
r�|
|d�<||d<|
d
|-kr�t}q�q�t}n|jd�}.|.dkr9t||fd�t}|jd|d
|�}	d|	kr�t}q9t	j
d�|	�}
|
r0|
|d�<||d<|
d
|.kr6t}q6q9t}n|jd�}/|/rt|/�d�kspt|/�d�kr�|jdd�|/�nt||fd�t}|jd|d
|�}	d|	kr�t}qt	j
d�|	�}
|
r|
|d�<||d<|
d
|/krt}qqt}n|jd�}0|0rt|0�d�ksTt|0�d
krk|jdd�|0�nt||fd�t}|jd|d
|�}	d|	kr�t}qt	j
d�|	�}
|
r�|
|d�<||d<|
d
|0kr�t}q�qt}n|jd�}1|1dkr�t||fd�t}|jd|d
|�}	d|	kr_t}q�t	j
d�|	�}
|
r�|
|d�<||d<|
d
|1kr�t}q�q�t}n|jd�}2|2dkr_t||fd�t}|jd|d
|�}	d|	krt}q_t	j
d�|	�}
|
rV|
|d�<||d<|
d
|2kr\t}q\q_t}n|jd�}3|3dkr t||fd�t}|jd|d
|�}	d|	kr�t}q t	j
d�|	�}
|
r |
|d�<||d<|
d
|3kr t}q q t}n|jd�}4|4dkr� t||fd�t}|jd|d
|�}	d|	krl t}q� t	j
d�|	�}
|
r� |
|d�<||d<|
d
|4kr� t}q� q� t}n|jd�}5|5r�!t|5�dCks� t|5�dkr!|jdd�|5�nt||fd�t}|jd|d
|�}	d|	krP!t}q�!t	j
d�|	�}
|
r�!|
|d�<||d<|
d
|5kr�!t}q�!q�!t}n|jd�}6|6dkrP"t||fd�t}|jd|d
|�}	d|	kr�!t}qP"t	j
d�|	�}
|
rG"|
|d�<||d<|
d
|6krM"t}qM"qP"t}n|jd�}7|7dkr�"t||fd�t}|jd|d
|�}	d|	kr�"t}q�"t	j
d�|	�}
|
r�"|
|d�<||d<|
d
|7kr�"t}q�"q�"t}n|jd�}8|8dkr�#t||fd�t}|jd|d
|�}	d|	kr]#t}q�#t	j
d�|	�}
|
r�#|
|d�<||d<|
d
|8kr�#t}q�#q�#t}n||d�<|S(�s check_bgp_af_other_args RRRtmax_load_ibgp_numi��iRs?Error: The value of max_load_ibgp_num %s is out of [1 - 65535].s!<maxLoadIbgpNum></maxLoadIbgpNum>Rs<data/>s).*<maxLoadIbgpNum>(.*)</maxLoadIbgpNum>.*itibgp_ecmp_nexthop_changedR(s1<ibgpEcmpNexthopChanged></ibgpEcmpNexthopChanged>s9.*<ibgpEcmpNexthopChanged>(.*)</ibgpEcmpNexthopChanged>.*tmax_load_ebgp_nums?Error: The value of max_load_ebgp_num %s is out of [1 - 65535].s!<maxLoadEbgpNum></maxLoadEbgpNum>s).*<maxLoadEbgpNum>(.*)</maxLoadEbgpNum>.*tebgp_ecmp_nexthop_changeds1<ebgpEcmpNexthopChanged></ebgpEcmpNexthopChanged>s9.*<ebgpEcmpNexthopChanged>(.*)</ebgpEcmpNexthopChanged>.*tmaximum_load_balancesBError: The value of maximum_load_balance %s is out of [1 - 65535].s)<maximumLoadBalance></maximumLoadBalance>s1.*<maximumLoadBalance>(.*)</maximumLoadBalance>.*tecmp_nexthop_changeds)<ecmpNexthopChanged></ecmpNexthopChanged>s1.*<ecmpNexthopChanged>(.*)</ecmpNexthopChanged>.*tdefault_local_prefsEError: The value of default_local_pref %s is out of [0 - 4294967295].s%<defaultLocalPref></defaultLocalPref>s-.*<defaultLocalPref>(.*)</defaultLocalPref>.*tdefault_meds>Error: The value of default_med %s is out of [0 - 4294967295].s<defaultMed></defaultMed>s!.*<defaultMed>(.*)</defaultMed>.*tdefault_rt_import_enables/<defaultRtImportEnable></defaultRtImportEnable>s7.*<defaultRtImportEnable>(.*)</defaultRtImportEnable>.*R&i�s3Error: The len of router_id %s is out of [0 - 255].s<routerId></routerId>s.*<routerId>(.*)</routerId>.*tvrf_rid_auto_sels<vrfRidAutoSel></vrfRidAutoSel>s'.*<vrfRidAutoSel>(.*)</vrfRidAutoSel>.*tnexthop_third_partys'<nexthopThirdParty></nexthopThirdParty>s/.*<nexthopThirdParty>(.*)</nexthopThirdParty>.*tsummary_automatics%<summaryAutomatic></summaryAutomatic>s-.*<summaryAutomatic>(.*)</summaryAutomatic>.*tauto_frr_enables<autoFrrEnable></autoFrrEnable>s'.*<autoFrrEnable>(.*)</autoFrrEnable>.*tload_balancing_as_path_ignores7<loadBalancingAsPathIgnore></loadBalancingAsPathIgnore>s?.*<loadBalancingAsPathIgnore>(.*)</loadBalancingAsPathIgnore>.*trib_only_enables<ribOnlyEnable></ribOnlyEnable>s'.*<ribOnlyEnable>(.*)</ribOnlyEnable>.*trib_only_policy_namei(s=Error: The len of rib_only_policy_name %s is out of [1 - 40].s'<ribOnlyPolicyName></ribOnlyPolicyName>s/.*<ribOnlyPolicyName>(.*)</ribOnlyPolicyName>.*tactive_route_advertises-<activeRouteAdvertise></activeRouteAdvertise>s5.*<activeRouteAdvertise>(.*)</activeRouteAdvertise>.*tas_path_neglects<asPathNeglect></asPathNeglect>s'.*<asPathNeglect>(.*)</asPathNeglect>.*tmed_none_as_maximums%<medNoneAsMaximum></medNoneAsMaximum>s-.*<medNoneAsMaximum>(.*)</medNoneAsMaximum>.*trouter_id_neglects#<routerIdNeglect></routerIdNeglect>s+.*<routerIdNeglect>(.*)</routerIdNeglect>.*tigp_metric_ignores#<igpMetricIgnore></igpMetricIgnore>s+.*<igpMetricIgnore>(.*)</igpMetricIgnore>.*talways_compare_meds%<alwaysCompareMed></alwaysCompareMed>s-.*<alwaysCompareMed>(.*)</alwaysCompareMed>.*R's<determinMed></determinMed>s#.*<determinMed>(.*)</determinMed>.*tpreference_externals?Error: The value of preference_external %s is out of [1 - 255].s)<preferenceExternal></preferenceExternal>s1.*<preferenceExternal>(.*)</preferenceExternal>.*tpreference_internals?Error: The value of preference_internal %s is out of [1 - 255].s)<preferenceInternal></preferenceInternal>s1.*<preferenceInternal>(.*)</preferenceInternal>.*tpreference_locals<Error: The value of preference_local %s is out of [1 - 255].s#<preferenceLocal></preferenceLocal>s+.*<preferenceLocal>(.*)</preferenceLocal>.*tprefrence_policy_names>Error: The len of prefrence_policy_name %s is out of [1 - 40].s+<prefrencePolicyName></prefrencePolicyName>s3.*<prefrencePolicyName>(.*)</prefrencePolicyName>.*treflect_between_clients-<reflectBetweenClient></reflectBetweenClient>s5.*<reflectBetweenClient>(.*)</reflectBetweenClient>.*treflector_cluster_idsGError: The value of reflector_cluster_id %s is out of [1 - 4294967295].s)<reflectorClusterId></reflectorClusterId>s1.*<reflectorClusterId>(.*)</reflectorClusterId>.*treflector_cluster_ipv4s@Error: The len of reflector_cluster_ipv4 %s is out of [0 - 255].s-<reflectorClusterIpv4></reflectorClusterIpv4>s5.*<reflectorClusterIpv4>(.*)</reflectorClusterIpv4>.*trr_filter_numberi3s9Error: The len of rr_filter_number %s is out of [1 - 51].s!<rrFilterNumber></rrFilterNumber>s).*<rrFilterNumber>(.*)</rrFilterNumber>.*tpolicy_vpn_targets#<policyVpnTarget></policyVpnTarget>s+.*<policyVpnTarget>(.*)</policyVpnTarget>.*tnext_hop_sel_depend_types-<nextHopSelDependType></nextHopSelDependType>s5.*<nextHopSelDependType>(.*)</nextHopSelDependType>.*tnhp_relay_route_policy_namesDError: The len of nhp_relay_route_policy_name %s is out of [1 - 40].s3<nhpRelayRoutePolicyName></nhpRelayRoutePolicyName>s;.*<nhpRelayRoutePolicyName>(.*)</nhpRelayRoutePolicyName>.*R)s#<ebgpIfSensitive></ebgpIfSensitive>s+.*<ebgpIfSensitive>(.*)</ebgpIfSensitive>.*treflect_chg_paths!<reflectChgPath></reflectChgPath>s).*<reflectChgPath>(.*)</reflectChgPath>.*tadd_path_sel_numi@is;Error: The value of add_path_sel_num %s is out of [2 - 64].s<addPathSelNum></addPathSelNum>s'.*<addPathSelNum>(.*)</addPathSelNum>.*troute_sel_delayis<Error: The value of route_sel_delay %s is out of [0 - 3600].s<routeSelDelay></routeSelDelay>s'.*<routeSelDelay>(.*)</routeSelDelay>.*tallow_invalid_ass!<allowInvalidAs></allowInvalidAs>s).*<allowInvalidAs>(.*)</allowInvalidAs>.*tpolicy_ext_comm_enables+<policyExtCommEnable></policyExtCommEnable>s3.*<policyExtCommEnable>(.*)</policyExtCommEnable>.*tsupernet_uni_advs!<supernetUniAdv></supernetUniAdv>s).*<supernetUniAdv>(.*)</supernetUniAdv>.*tsupernet_label_advs%<supernetLabelAdv></supernetLabelAdv>s-.*<supernetLabelAdv>(.*)</supernetLabelAdv>.*tingress_lsp_policy_names@Error: The len of ingress_lsp_policy_name %s is out of [1 - 40].s-<ingressLspPolicyName></ingressLspPolicyName>s5.*<ingressLspPolicyName>(.*)</ingressLspPolicyName>.*toriginator_priors#<originatorPrior></originatorPrior>s+.*<originatorPrior>(.*)</originatorPrior>.*tlowest_prioritys!<lowestPriority></lowestPriority>s).*<lowestPriority>(.*)</lowestPriority>.*R*s%<relayDelayEnable></relayDelayEnable>s-.*<relayDelayEnable>(.*)</relayDelayEnable>.*R(RRRtintRRRRRR R!R(9R
RRR"RRRR,RR#R$R-R.R/R0R1R2R3R4R&R5R6R7R8R9R:R;R<R=R>R?R@RAR'RBRCRDRERFRGRHRIRJRKRLR)RMRNRORPRQRRRSRTRURVR*((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytcheck_bgp_af_other_argss�
	


$		

	
	

	
$		

	
	

	
$		

	
	

	
		

	
		

	
	

	
		

	
	

	
	

	
	

	
	

	
	

	
	

	
$		

	
	

	
	

	
	

	
	

	
	

	
	

	
	

	
$		

	
$		

	
$		

	
$		

	
	

	
		

	
		

	
$		

	
	

	
	

	$		

	
	

	
	

	
$		

	
$		

	
	

	
	

	
	

	
	

	
$		

	
	

	
	

	
	

	
c	Ks�|d}t�}t}t}|jd}|jd}|jd}|jd}	|jd}
|	r�|	dkr�|	dkr�|
s�|jd	d
�q�t|
�dkr�|jd	d|
�q�n|
r�|	s�|jd	d
�q�n|jd
}|jd}|r!|s!|jd	d�q!n|rC|sC|jd	d�qCnt||f}
|jd|d|
�}|	r�|	dks�|	dkr�d}
n&|
s�|
dkr�|jd	d�n|	|
f}|dkr2d|kr�t}q�tj	d|�}|r)||d<||d<||kr/t}q/q�t}q�d|krAq�tj	d|�}|r�||d<||d<||kr�t}q�q�n|r�|r�||f}t
d|�s�|jd	d|�nt|�dkr�|jd	d|�n|dkr]d|krt}q�tj	d|�}|rT||d<||d<||krZt}qZq�t}q�d|krlq�tj	d|�}|r�||d<||d<||kr�t}q�q�n||d<||d<|S(s  check_bgp_import_network_route RRRRtimport_protocoltimport_process_idtdirecttstaticRsQError: Please input import_protocol and import_process_id value at the same time.isDError: The value of import_process_id %s is out of [0 - 4294967295].tnetwork_addresstmask_lensHError: Please input network_address and mask_len value at the same time.Rt0seError: Please input import_process_id not 0 when import_protocol is [ospf, isis, rip, ospfv3, ripng].Rs<data/>sV.*<importProtocol>(.*)</importProtocol>.*\s.*<importProcessId>(.*)</importProcessId>.*tbgp_import_routetipaddrs)Error: The network_address %s is invalid.i�s2Error: The len of mask_len %s is out of [0 - 128].sF.*<networkAddress>(.*)</networkAddress>.*\s.*<maskLen>(.*)</maskLen>.*tbgp_network_routetimport_need_cfgtnetwork_need_cfg(RRRRRWt#CE_GET_BGP_IMPORT_AND_NETWORK_ROUTERRR R!R	R(R
RRR"RcRdRRRRYRZR]R^RR#tbgp_import_route_newR$tbgp_network_route_new((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytcheck_bgp_import_network_route#s�
	




	
		


	
	
		
		

		

			

	



c	Ks|d}|jd}|jd}t||ft}|jd|d|�}d|kro|jdd�ng}d|}|d	kr�d
}nm|dkr�d}nX|d
kr�d|}|dkrd}qn*|dkr�d}n|dkrd}n|j|�|S(s merge_bgp_af RRRRs<ok/>Rs'Error: Merge bgp address family failed.sipv4-family vpn-instance %st	ipv4multisipv4-family multicasttipv4vpnsipv4-family vpnv4tipv6unisipv6-family vpn-instance %st_public_sipv6-family unicasttipv6vpnsipv6-family vpnv6tevpnsl2vpn-family evpn(Rt"CE_MERGE_BGP_ADDRESS_FAMILY_HEADERt CE_MERGE_BGP_ADDRESS_FAMILY_TAILRRtappend(	R
RRRRRR#tcmdstcmd((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytmerge_bgp_af�s0



		
		
c	Ks|d}|jd}|jd}t||ft}|jd|d|�}d|kro|jdd�ng}d|}|d	kr�d
}nm|dkr�d}nX|d
kr�d|}|dkrd}qn*|dkr�d}n|dkrd}n|j|�|S(s create_bgp_af RRRRs<ok/>Rs(Error: Create bgp address family failed.sipv4-family vpn-instance %sRisipv4-family multicastRjsipv4-family vpnv4Rksipv6-family vpn-instance %sRlsipv6-family unicastRmsipv6-family vpnv6Rnsl2vpn-family evpn(Rt#CE_CREATE_BGP_ADDRESS_FAMILY_HEADERt!CE_CREATE_BGP_ADDRESS_FAMILY_TAILRRRq(	R
RRRRRR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pyt
create_bgp_af�s0



		
		
c	Ks|d}|jd}|jd}t||ft}|jd|d|�}d|kro|jdd�ng}d|}|d	kr�d
}nm|dkr�d}nX|d
kr�d|}|dkrd}qn*|dkr�d}n|dkrd}n|j|�|S(s delete_bgp_af RRRRs<ok/>Rs(Error: Delete bgp address family failed.s undo ipv4-family vpn-instance %sRisundo ipv4-family multicastRjsundo ipv4-family vpnv4Rks undo ipv6-family vpn-instance %sRlsundo ipv6-family unicastRmsundo ipv6-family vpnv6Rnsl2vpn-family evpn(Rt#CE_DELETE_BGP_ADDRESS_FAMILY_HEADERt!CE_DELETE_BGP_ADDRESS_FAMILY_TAILRRRq(	R
RRRRRR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pyt
delete_bgp_af�s0



		
		
c9	KsO|d}|jd}|jd}t||f}g}|jd}|ru|d|7}d|}|j|�n|jd}	|	dkr�|d	|	7}|	d
kr�d|}|j|�q�d|}|j|�n|jd
}
|
r|d|
7}d|
}|j|�n|jd}|dkrq|d|7}|d
krWd|
}n
d|
}|j|�n|jd}|r�|d|7}d|}|j|�n|jd}
|
dkr|d|
7}|
d
kr�d|}n
d|}|j|�n|jd}|rA|d|7}d|}|j|�n|jd}|r||d|7}d |}|j|�n|jd!}|dkr�|d"|7}|d
kr�d#}nd$}|j|�n|jd%}|r	|d&|7}d'|}|j|�n|jd(}|dkr�|d)|7}d*}|d+krKd,}n|d
kr�d-||f}|j|�d.}|j|�q�d-||f}|j|�d/}|j|�n|jd0}|dkr|d1|7}|d
kr�d2}nd3}|j|�n|jd4}|dkra|d5|7}|d
krKd6}nd7}|j|�n|jd8}|dkr�|d9|7}|d
kr�d:}nd;}|j|�n|jd<}|dkr|d=|7}|d
kr�d>}nd?}|j|�n|jd@}|dkrW|dA|7}|d
krAdB}ndC}|j|�n|jdD}|r�|d
kr�|dE|7}dF|}|j|�n|jdG}|dkr�|dH|7}|d
kr�dI}ndJ}|j|�n|jdK}|dkrB|dL|7}|d
kr,dM}ndN}|j|�n|jdO}|dkr�|dP|7}|d
kr~dQ}ndR}|j|�n|jdS}|dkr�|dT|7}|d
kr�dU}ndV}|j|�n|jdW}|dkrE|dX|7}|d
kr/dY}|j|�qEdZ}|j|�n|jd[}|dkr�|d\|7}|d
kr�d]}|j|�q�d^}|j|�n|jd_} | dkr|d`| 7}| d
kr�da}|j|�qdb}|j|�n|jdc}!|jdd}"|jde}#t|!|"|#g�r�|!pHdf}!|"pTdf}"|#p`df}#|dg|!7}|dh|"7}|di|#7}dj|!|"|#f}|j|�n|jdk}$|$r�|dl|$7}dm|$}|j|�n|jdn}%|%dkr=	|do|%7}|%d
kr'	dp}ndq}|j|�n|jdr}&|&rx	|ds|&7}dt|&}|j|�n|jdu}'|'r�	|dv|'7}dt|'}|j|�n|jdw}(|(r�	|dx|(7}dy|(}|j|�n|jdz})|)dkr@
|d{|)7}|)d
kr*
d|}nd}}|j|�n|jd~}*|*rd
|d|*7}n|jd�}+|+r�
|d�|+7}d�|+}|j|�n|jd�},|,dkr�
|d�|,7}|,d
kr�
d�}nd�}|j|�n|jd�}-|-dkrC|d�|-7}|-d
kr-d�}nd�}|j|�n|jd�}.|.r~|d�|.7}d�|.}|j|�n|jd�}/|/r�|d�|/7}d�|/}|j|�n|jd�}0|0dkr�|d�|07}n|jd�}1|1dkr5|d�|17}|1d
krd�}nd�}|j|�n|jd�}2|2dkr�|d�|27}|2d
krqd�}nd�}|j|�n|jd�}3|3dkr�|d�|37}|3d
kr�d�}nd�}|j|�n|jd�}4|4r
|d�|47}d�|4}|j|�n|jd�}5|5dkrf
|d�|57}|5d
krP
d�}nd�}|j|�n|jd�}6|6dkr�
|d�|67}|6d
kr�
d�}nd�}|j|�n|jd�}7|7dkr
|d�|77}|7d
kr�
d�}nd�}|j|�n|t7}|jd|d�|�}8d�|8krK|jd�d��n|S(�s merge_bgp_af_other RRRR,s#<maxLoadIbgpNum>%s</maxLoadIbgpNum>smaximum load-balancing ibgp %sR-R(s3<ibgpEcmpNexthopChanged>%s</ibgpEcmpNexthopChanged>ttrues3maximum load-balancing ibgp %s ecmp-nexthop-changeds8undo maximum load-balancing ibgp %s ecmp-nexthop-changedR.s#<maxLoadEbgpNum>%s</maxLoadEbgpNum>smaximum load-balancing ebgp %sR/s3<ebgpEcmpNexthopChanged>%s</ebgpEcmpNexthopChanged>s3maximum load-balancing ebgp %s ecmp-nexthop-changeds8undo maximum load-balancing ebgp %s ecmp-nexthop-changedR0s+<maximumLoadBalance>%s</maximumLoadBalance>smaximum load-balancing %sR1s+<ecmpNexthopChanged>%s</ecmpNexthopChanged>s.maximum load-balancing %s ecmp-nexthop-changeds3undo maximum load-balancing %s ecmp-nexthop-changedR2s'<defaultLocalPref>%s</defaultLocalPref>sdefault local-preference %sR3s<defaultMed>%s</defaultMed>sdefault med %sR4s1<defaultRtImportEnable>%s</defaultRtImportEnable>sdefault-route importedsundo default-route importedR&s<routerId>%s</routerId>srouter-id %sR5s!<vrfRidAutoSel>%s</vrfRidAutoSel>sipv4-familyRksipv6-familys%s vpn-instance %ssrouter-id auto-selectsundo router-id auto-selectR6s)<nexthopThirdParty>%s</nexthopThirdParty>snexthop third-partysundo nexthop third-partyR7s'<summaryAutomatic>%s</summaryAutomatic>ssummary automaticsundo summary automaticR8s!<autoFrrEnable>%s</autoFrrEnable>sauto-frrs
undo auto-frrR9s9<loadBalancingAsPathIgnore>%s</loadBalancingAsPathIgnore>sload-balancing as-path-ignores"undo load-balancing as-path-ignoreR:s!<ribOnlyEnable>%s</ribOnlyEnable>srouting-table rib-onlysundo routing-table rib-onlyR;s)<ribOnlyPolicyName>%s</ribOnlyPolicyName>s&routing-table rib-only route-policy %sR<s/<activeRouteAdvertise>%s</activeRouteAdvertise>sactive-route-advertisesundo active-route-advertiseR=s!<asPathNeglect>%s</asPathNeglect>sbestroute as-path-ignoresundo bestroute as-path-ignoreR>s'<medNoneAsMaximum>%s</medNoneAsMaximum>sbestroute med-none-as-maximums"undo bestroute med-none-as-maximumR?s%<routerIdNeglect>%s</routerIdNeglect>sbestroute router-id-ignoresundo bestroute router-id-ignoreR@s%<igpMetricIgnore>%s</igpMetricIgnore>sbestroute igp-metric-ignores undo bestroute igp-metric-ignoreRAs'<alwaysCompareMed>%s</alwaysCompareMed>scompare-different-as-medsundo compare-different-as-medR's<determinMed>%s</determinMed>sdeterministic-medsundo deterministic-medRBRCRDt255s+<preferenceExternal>%s</preferenceExternal>s+<preferenceInternal>%s</preferenceInternal>s%<preferenceLocal>%s</preferenceLocal>spreference %s %s %sREs-<prefrencePolicyName>%s</prefrencePolicyName>spreference route-policy %sRFs/<reflectBetweenClient>%s</reflectBetweenClient>sreflect between-clientssundo reflect between-clientsRGs+<reflectorClusterId>%s</reflectorClusterId>sreflector cluster-id %sRHs/<reflectorClusterIpv4>%s</reflectorClusterIpv4>RIs#<rrFilterNumber>%s</rrFilterNumber>srr-filter %sRJs%<policyVpnTarget>%s</policyVpnTarget>spolicy vpn-targetsundo policy vpn-targetRKs/<nextHopSelDependType>%s</nextHopSelDependType>RLs5<nhpRelayRoutePolicyName>%s</nhpRelayRoutePolicyName>s(nexthop recursive-lookup route-policy %sR)s%<ebgpIfSensitive>%s</ebgpIfSensitive>sebgp-interface-sensitivesundo ebgp-interface-sensitiveRMs#<reflectChgPath>%s</reflectChgPath>sreflect change-path-attributes"undo reflect change-path-attributeRNs!<addPathSelNum>%s</addPathSelNum>s!bestroute add-path path-number %sROs!<routeSelDelay>%s</routeSelDelay>sroute-select delay %sRPs#<allowInvalidAs>%s</allowInvalidAs>RQs-<policyExtCommEnable>%s</policyExtCommEnable>sext-community-change enables undo ext-community-change enableRRs#<supernetUniAdv>%s</supernetUniAdv>s!supernet unicast advertise enables&undo supernet unicast advertise enableRSs'<supernetLabelAdv>%s</supernetLabelAdv>s%supernet label-route advertise enables*undo supernet label-route advertise enableRTs/<ingressLspPolicyName>%s</ingressLspPolicyName>s#ingress-lsp trigger route-policy %sRUs%<originatorPrior>%s</originatorPrior>s$bestroute routerid-prior-clusterlists)undo bestroute routerid-prior-clusterlistRVs#<lowestPriority>%s</lowestPriority>s$advertise lowest-priority on-startups)undo advertise lowest-priority on-startupR*s'<relayDelayEnable>%s</relayDelayEnable>s(nexthop recursive-lookup restrain enables)nexthop recursive-lookup restrain disableRs<ok/>Rs3Error: Merge bgp address family other agrus failed.(RRoRqtanyRpRR(9R
RRRRRRrR,RsR-R.R/R0R1R2R3R4R&R5tfamilyR6R7R8R9R:R;R<R=R>R?R@RAR'RBRCRDRERFRGRHRIRJRKRLR)RMRNRORPRQRRRSRTRURVR*R#((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytmerge_bgp_af_other	sh






















	


	


	
	
		
	


	
	
	
	








	






	


	
	





	
	
	


	
	
	
	
c
KsN|d}|jd}|jd}t||f}g}|jd}|rq|d7}d|}|j|�n|jd}	|	dkr�|d	7}d
}|j|�n|jd}
|
dkr�|d7}d
}|j|�n|jd}|dkr	|d7}n|t7}|jd|d|�}d|krJ|jdd�n|S(s delete_bgp_af_other RRRR&s<routerId></routerId>sundo router-id %sR'R(s<determinMed></determinMed>sundo deterministic-medR)s#<ebgpIfSensitive></ebgpIfSensitive>sundo ebgp-interface-sensitiveR*s%<relayDelayEnable></relayDelayEnable>Rs<ok/>Rs3Error: Merge bgp address family other agrus failed.(RRoRqRpRR(
R
RRRRRRrR&RsR'R)R*R#((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytdelete_bgp_af_other�
s:












	
cKs�|d}|jd}|jd}|jd}|jd}|dksV|dkr_d}nt||||ft}|jd|d	|�}d
|kr�|jdd�ng}	d
||f}
|dks�|dkr�d|}
n|	j|
�|	S(s merge_bgp_import_route RRRRYRZR[R\R_Rs<ok/>Rs%Error: Merge bgp import route failed.simport-route %s %ssimport-route %s(Rt CE_MERGE_BGP_IMPORT_ROUTE_HEADERtCE_MERGE_BGP_IMPORT_ROUTE_TAILRRRq(R
RRRRRYRZRR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytmerge_bgp_import_route�
s$




	

cKs�|d}|jd}|jd}|jd}|jd}|dksV|dkr_d}nt||||f}|jd|d	|�}d
|kr�|jdd�ng}	d
||f}
|dks�|dkr�d|}
n|	j|
�|	S(s create_bgp_import_route RRRRYRZR[R\R_Rs<ok/>Rs&Error: Create bgp import route failed.simport-route %s %ssimport-route %s(RtCE_CREATE_BGP_IMPORT_ROUTERRRq(R
RRRRRYRZRR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytcreate_bgp_import_routes$




	

cKs�|d}|jd}|jd}|jd}|jd}|dksV|dkr_d}nt||||f}|jd|d	|�}d
|kr�|jdd�ng}	d
||f}
|dks�|dkr�d|}
n|	j|
�|	S(s delete_bgp_import_route RRRRYRZR[R\R_Rs<ok/>Rs&Error: Delete bgp import route failed.sundo import-route %s %ssundo import-route %s(RtCE_DELETE_BGP_IMPORT_ROUTERRRq(R
RRRRRYRZRR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytdelete_bgp_import_route#s$




	

cKs�|d}|jd}|jd}|jd}|jd}t||||ft}|jd|d|�}d|kr�|jdd	�ng}	d
||f}
|	j|
�|	S(s merge_bgp_network_route RRRR]R^Rs<ok/>Rs&Error: Merge bgp network route failed.s
network %s %s(Rt!CE_MERGE_BGP_NETWORK_ROUTE_HEADERtCE_MERGE_BGP_NETWORK_ROUTE_TAILRRRq(R
RRRRR]R^RR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytmerge_bgp_network_routeAs





cKs�|d}|jd}|jd}|jd}|jd}t||||f}|jd|d|�}d|kr�|jdd	�ng}	d
||f}
|	j|
�|	S(s create_bgp_network_route RRRR]R^Rs<ok/>Rs'Error: Create bgp network route failed.s
network %s %s(RtCE_CREATE_BGP_NETWORK_ROUTERRRq(R
RRRRR]R^RR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytcreate_bgp_network_routeZs





cKs�|d}|jd}|jd}|jd}|jd}t||||f}|jd|d|�}d|kr�|jdd	�ng}	d
||f}
|	j|
�|	S(s delete_bgp_network_route RRRR]R^Rs<ok/>Rs'Error: Delete bgp network route failed.sundo network %s %s(RtCE_DELETE_BGP_NETWORK_ROUTERRRq(R
RRRRR]R^RR#RrRs((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytdelete_bgp_network_routess





(t__name__t
__module__t__doc__RRR%R+RXRhRtRwRzRR�R�R�R�R�R�R�(((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pyR
$s.	
	
	5	�	����'	�	%	%	%	��	-					cIoCs�tdtdddgdd�dtddd	t�d
tdddd
dddgd	t�dtdd�dtddddddddg�dtdd�dtddddddddg�dtdd�dtddddddddg�dtdd�dtdd�dtddddddddg�dtdd�dtddddddddg�dtddddddddg�d tddddddddg�d!tddddddddg�d"tddddddddg�d#tddddddddg�d$tdd�d%tddddddddg�d&tddddddddg�d'tddddddddg�d(tddddddddg�d)tddddddddg�d*tddddddddg�d+tddddddddg�d,tdd�d-tdd�d.tdd�d/tdd�d0tddddddddg�d1tdd�d2tdd�d3tdd�d4tddddddddg�d5tddd6d7g�d8tdd�d9tddddddddg�d:tddddddddg�d;tdd�d<tdd�d=tddddddddg�d>tddddddddg�d?tddddddddg�d@tddddddddg�dAtdd�dBtddddddddg�dCtddddddddg�dDtddddddddg�dEtddFdGdHdIdJdKdLg�dMtdd�dNtdd�dOtdd��6}|jt�tdP|dQt�}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.}$|jd/}%|jd0}&|jd1}'|jd2}(|jd3})|jd4}*|jd5}+|jd8},|jd9}-|jd:}.|jd;}/|jd<}0|jd=}1|jd>}2|jd?}3|jd@}4|jdA}5|jdB}6|jdC}7|jdD}8|jdE}9|jdM}:|jdN};|jdO}<t�}=|=s�|jdRdS�n||d<|r
	||d<n|	r 	|	|d
<n|
r3	|
|d<n|dkrL	||d<n|r_	||d<n|
dkrx	|
|d<n|r�	||d<n|dkr�	||d<n|r�	||d<n|r�	||d<n|dkr�	||d<n|r�	||d<n|dkr
||d<n|dkr(
||d<n|dkrA
||d <n|dkrZ
||d!<n|dkrs
||d"<n|dkr�
||d#<n|r�
||d$<n|dkr�
||d%<n|dkr�
||d&<n|dkr�
||d'<n|dkr||d(<n|dkr||d)<n| dkr5| |d*<n|!dkrN|!|d+<n|"ra|"|d,<n|#rt|#|d-<n|$r�|$|d.<n|%r�|%|d/<n|&dkr�|&|d0<n|'r�|'|d1<n|(r�|(|d2<n|)r�|)|d3<n|*dkr|*|d4<n|+r|+|d5<n|,r+|,|d8<n|-dkrD|-|d9<n|.dkr]|.|d:<n|/rp|/|d;<n|0r�|0|d<<n|1dkr�|1|d=<n|2dkr�|2|d><n|3dkr�|3|d?<n|4dkr�|4|d@<n|5r�|5|dA<n|6dkr
|6|dB<n|7dkr,
|7|dC<n|8dkrE
|8|dD<n|9rX
|9|dE<n|:rk
|:|dM<n|;r~
|;|dN<n|<r�
|<|dO<n|=j	dT|�}>|=j
dT|�}?|=jdT|�}@|=jdT|�}At�}Bx+|>D]#}C|CdUkr�
|>|C|B|C<q�
q�
W|Br#|B|dV<nt�}Bx+|?D]#}C|CdUkr3|?|C|B|C<q3q3W|Brm|B|dW<nt�}Bx+|AD]#}C|CdUkr}|A|C|B|C<q}q}W|Br�|B|dX<n|dkr&|>dUr|AdYr|AdZrt}d
|>j
�krt||	f}Dnt||	f}Dd[|Aj
�krE|Dt|9|:f7}Dn|Dt|9|:f7}Dd\|Aj
�kr�|Dt|;|<f7}Dn|Dt|;|<f7}D|Dt7}D|=jdT|d]|D�}Ed^|Ekr�|jdRd_�nd`|9|:f}F|j|F�da|;|<f}F|j|F�q|AdYr6|AdZr6t}t||	f}Dd[|Aj
�krg|Dt|9|:f7}Dn|Dt|9|:f7}Dd\|Aj
�kr�|Dt|;|<f7}Dn|Dt|;|<f7}D|Dt7}D|=jdT|d]|D�}Ed^|Ekr�|jdRdb�nd`|9|:f}F|j|F�da|;|<f}F|j|F�q|>dUr�d
|>j
�kr�|=jdT|�}Ft}xT|FD]}C|j|C�qqWq�|=jdT|�}Ft}x|FD]}C|j|C�q�Wn|?dUr|=jdT|�}Ft}x|FD]}C|j|C�q�Wn|AdYr�d[|Aj
�kr\|=jdT|�}Ft}xT|FD]}C|j|C�qBWq�|=jdT|�}Ft}x|FD]}C|j|C�q{Wn|AdZrd\|Aj
�kr�|=jdT|�}Ft}xT|FD]}C|j|C�q�Wq#|=jdT|�}Ft}x|FD]}C|j|C�q	Wqn�|AdYr�|AdZr�t}t||	f}D|Dt |9|:f7}D|Dt!|;|<f7}D|Dt7}D|=jdT|d]|D�}Ed^|Ekr�|jdRdc�ndd|9|:f}F|j|F�de|;|<f}F|j|F�n�|AdYr9|=j"dT|�}Ft}x|FD]}C|j|C�qWn|AdZr||=j#dT|�}Ft}x|FD]}C|j|C�qbWn|@dUr�|=j$dT|�}Ft}x|FD]}C|j|C�q�Wn|>dUr
|@dUr
|=j%dT|�}Ft}x|FD]}C|j|C�q�Wn|?dUrn|=j	dT|�}>t�}Gx+|>D]#}C|CdUkr<|>|C|G|C<q<q<W|Grv|G|dV<n|=j
dT|�}?t�}Gx+|?D]#}C|CdUkr�|?|C|G|C<q�q�W|Gr�|G|dW<n|=jdT|�}At�}Gx+|AD]#}C|CdUkr�|A|C|G|C<q�q�W|Gr.|G|dX<n||krLt}t&�}nt�}H||Hdf<||Hdg<||Hdh<||Hdi<||Hdj<|j'|H�dkS(ls main RtchoicesRtabsenttdefaultRttypetstrtrequiredRtipv4uniRiRjRkRmRnR,R-R(R{tfalseR.R/R0R1R2R3R4R&R5R6R7R8R9R:R;R<R=R>R?R@RAR'RBRCRDRERFRGRHRIRJRKtdependTunneltdependIpRLR)RMRNRORPRQRRRSRTRURVR*RYR[tospftisisR\triptospfv3tripngRZR]R^t
argument_spectsupports_check_modeRsError: Init module failed.RRsbgp afsbgp af othersbgp import & network routeRcRdR`RbRs<ok/>s;Error: Present bgp af_type import and network route failed.simport-route %s %ss
network %s %ss3Error: Present bgp import and network route failed.s2Error: Absent bgp import and network route failed.sundo import-route %s %ssundo network %s %stproposedtexistingtchangedt	end_statetupdatesN((RRtupdateRRRRR
RR%RXR+RhtkeysRoRutCE_BGP_MERGE_IMPORT_UNITtCE_BGP_CREATE_IMPORT_UNITtCE_BGP_MERGE_NETWORK_UNITtCE_BGP_CREATE_NETWORK_UNITRpRRqt"CE_BGP_IMPORT_NETWORK_ROUTE_HEADERt CE_BGP_IMPORT_NETWORK_ROUTE_TAILRtRwRR�R�R�R�tCE_BGP_DELETE_IMPORT_UNITtCE_BGP_DELETE_NETWORK_UNITR�R�R�Rztlistt	exit_json(IR�RR�R�R�R�R�RRRR,R-R.R/R0R1R2R3R4R&R5R6R7R8R9R:R;R<R=R>R?R@RAR'RBRCRDRERFRGRHRIRJRKRLR)RMRNRORPRQRRRSRTRURVR*RYRZR]R^t
ce_bgp_af_objt
bgp_af_rsttbgp_af_other_rsttbgp_af_other_can_del_rsttbgp_import_network_route_rstt	exist_tmptitemRR#Rstend_tmptresults((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pytmain�s:$$$$$$$$$$$$$$$$$$$$$$$$$$$$
			




















































	





















































					

	

	




		


		













		










	

	

			

	




t__main__(+tANSIBLE_METADATAt
DOCUMENTATIONtEXAMPLEStRETURNR tansible.module_utils.basicRt+ansible.module_utils.network.cloudengine.ceRRRR	RRRoRpRuRvRxRyReR�R�R�R�tCE_GET_BGP_NETWORK_ROUTE_HEADERtCE_GET_BGP_NETWORK_ROUTE_TAILR�R�R�R�R�R�R�R�R�R�R�R�tobjectR
R�R�(((sQ/usr/lib/python2.7/site-packages/ansible/modules/network/cloudengine/ce_bgp_af.pyt<module>sb


�7;"
	
	
	
	 
	��������q	��

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