
    Vh!                     z    d dl mZmZmZ eZddgddZdZdZdZ	d d	l
mZ d d
lmZmZmZmZ d Zedk(  r e        yy)    )absolute_importdivisionprint_functionz1.1preview	community)metadata_versionstatussupported_bya%  
---
module: aci_l2out
short_description: Manage Layer2 Out (L2Out) objects (l2ext:Out)
description:
- Manage Layer2 Out configuration on Cisco ACI fabrics.
options:
  tenant:
    description:
    - Name of an existing tenant.
    type: str
  l2out:
    description:
    - The name of outer layer2.
    type: str
    aliases: [ 'name' ]
  description:
    description:
    - Description for the L2Out.
    type: str
  bd:
    description:
    - Name of the Bridge domain which is associted with the L2Out.
    type: str
  domain:
    description:
    - Name of the external L2 Domain that is being associated with L2Out.
    type: str
  vlan:
    description:
    - The VLAN which is being associated with the L2Out.
    type: int
  state:
    description:
    - Use C(present) or C(absent) for adding or removing.
    - Use C(query) for listing an object or multiple objects.
    type: str
    choices: [ absent, present, query ]
    default: present
  name_alias:
    description:
    - The alias for the current object. This relates to the nameAlias field in ACI.
    type: str
extends_documentation_fragment:
- cisco.aci.aci
- cisco.aci.annotation
- cisco.aci.owner

notes:
- The C(tenant) must exist before using this module in your playbook.
  The M(cisco.aci.aci_tenant) modules can be used for this.
seealso:
- name: APIC Management Information Model reference
  description: More information about the internal APIC class B(l2ext:Out).
  link: https://developer.cisco.com/docs/apic-mim-ref/
author:
- Sudhakar Shet Kudtarkar (@kudtarkar1)
- Shreyas Srish (@shrsr)
a  
- name: Add a new L2Out
  cisco.aci.aci_l2out:
    host: apic
    username: admin
    password: SomeSecretePassword
    tenant: Auto-Demo
    l2out: l2out
    description: via Ansible
    bd: bd1
    domain: l2Dom
    vlan: 3200
    state: present
    delegate_to: localhost

- name: Remove an L2Out
  cisco.aci.aci_l2out:
    host: apic
    username: admin
    password: SomeSecretePassword
    tenant: Auto-Demo
    l2out: l2out
    state: absent
    delegate_to: localhost

- name: Query an L2Out
  cisco.aci.aci_l2out:
    host: apic
    username: admin
    password: SomeSecretePassword
    tenant: Auto-Demo
    l2out: l2out
    state: query
    delegate_to: localhost
    register: query_result

- name: Query all L2Outs in a specific tenant
  cisco.aci.aci_l2out:
    host: apic
    username: admin
    password: SomeSecretePassword
    tenant: Auto-Demo
    state: query
    delegate_to: localhost
    register: query_result
a  
   current:
     description: The existing configuration from the APIC after the module has finished
     returned: success
     type: list
     sample:
       [
           {
               "fvTenant": {
                   "attributes": {
                       "descr": "Production environment",
                       "dn": "uni/tn-production",
                       "name": "production",
                       "nameAlias": "",
                       "ownerKey": "",
                       "ownerTag": ""
                   }
               }
           }
       ]
   error:
     description: The error information as returned from the APIC
     returned: failure
     type: dict
     sample:
       {
           "code": "122",
           "text": "unknown managed object class foo"
       }
   raw:
     description: The raw output returned by the APIC REST API (xml or json)
     returned: parse error
     type: str
     sample: '<?xml version="1.0" encoding="UTF-8"?><imdata totalCount="1"><error code="122" text="unknown managed object class "/></imdata>'
   sent:
     description: The actual/minimal configuration pushed to the APIC
     returned: info
     type: list
     sample:
       {
           "fvTenant": {
               "attributes": {
                   "descr": "Production environment"
               }
           }
       }
   previous:
     description: The original configuration from the APIC before the module has started
     returned: info
     type: list
     sample:
       [
           {
               "fvTenant": {
                   "attributes": {
                       "descr": "Production",
                       "dn": "uni/tn-production",
                       "name": "production",
                       "nameAlias": "",
                       "ownerKey": "",
                       "ownerTag": ""
                   }
               }
           }
       ]
   proposed:
     description: The assembled configuration from the user-provided parameters
     returned: info
     type: dict
     sample:
       {
           "fvTenant": {
               "attributes": {
                   "descr": "Production environment",
                   "name": "production"
               }
           }
       }
   filter_string:
     description: The filter string used for the request
     returned: failure or debug
     type: str
     sample: ?rsp-prop-include=config-only
   method:
     description: The HTTP method used for the request to the APIC
     returned: failure or debug
     type: str
     sample: POST
   response:
     description: The HTTP response from the APIC
     returned: failure or debug
     type: str
     sample: OK (30 bytes)
   status:
     description: The HTTP status from the APIC
     returned: failure or debug
     type: int
     sample: 200
   url:
     description: The HTTP url used for the request to the APIC
     returned: failure or debug
     type: str
     sample: https://10.11.12.13/api/mo/uni/tn-production.json
   )AnsibleModule)	ACIModuleaci_argument_specaci_annotation_specaci_owner_specc                     t               } | j                  t                      | j                  t                      | j                  t	        d      t	        ddg      t	        d      t	        d      t	        d      t	        ddg d      t	        d      t	        d      	       t        | d
ddddggddg dgg      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }|j                  j                  d      }	g d}
t        |      }|j                  t	        ddj                  |      |d|i      t	        ddj                  |      |d|i      |
       |j                          |dk(  rt	        t	        t	        dj                  |                         t	        t	        t	        |d!j                  |      "            #      g}|j                  dt	        ||d$j                  ||      |	%      |&       |j                  d'       |j                          n|dk(  r|j                          |j!                          y )(Nstr)typename)r   aliasesintpresent)absentr   query)r   defaultchoices)bdl2outdomainvlandescriptionstatetenant
name_aliasTr    r   r   r!   )r   r   r!   r   r   )argument_specsupports_check_moderequired_ifr   r   r   r   r"   )
l2extRsEBdl2extRsL2DomAttl2extLNodePfvTenantztn-{0})	aci_classaci_rnmodule_objecttarget_filterl2extOutz	l2out-{0})
root_class
subclass_1child_classeszuni/l2dom-{0})tDn)
attributes)r'   zvlan-{0})
tnFvBDNameencap)r&   zuni/tn-{0}/l2out-{1})r   descrdn	nameAlias)r*   class_configchild_configs)r*   )r   updater   r   dictr   paramsgetr   construct_urlformatget_existingpayloadget_diffpost_configdelete_config	exit_json)r#   moduler   r   r   r   r   r    r!   r"   r1   acir:   s                g/home/dcms/DCMS/lib/python3.12/site-packages/ansible_collections/cisco/aci/plugins/modules/aci_l2out.pymainrJ      s   %'M,./)*Ux0ue$y:XYU#  	 # h( 34i!LM
F 
		4	 BMMg&E--##M2K]]x(F==V$DMMg&E]]x(F""<0JDM
F
C ??6* !6*	
  %%e,!5/	
 $    	/:P:PQW:X1Y!Z[DDBjFWFWX\F],^_`

 	 5@V@]@]^dfk@l  yC  D' 	 	
 	z*	(	MMO    __main__N)
__future__r   r   r   r   __metaclass__ANSIBLE_METADATADOCUMENTATIONEXAMPLESRETURNansible.module_utils.basicr   6ansible_collections.cisco.aci.plugins.module_utils.acir   r   r   r   rJ   __name__ rK   rI   <module>rW      sh    A @(-)Vab :x-^g
R 5 E  EHV zF rK   