From 076562e5c2c690ecd2d4ecccb0a1da370ef60420 Mon Sep 17 00:00:00 2001 From: Dag Wieers Date: Tue, 26 Feb 2019 14:55:40 +0100 Subject: [PATCH] ACI: Various changes and doc updates (#52957) * ACI: Various changes and doc updates * Fix typos --- .../modules/network/aci/aci_aaa_user.py | 34 ++++---- .../network/aci/aci_aaa_user_certificate.py | 26 +++--- .../aci_access_port_block_to_access_port.py | 18 ++-- ...s_port_to_interface_policy_leaf_profile.py | 14 +-- lib/ansible/modules/network/aci/aci_aep.py | 14 +-- .../modules/network/aci/aci_aep_to_domain.py | 24 ++--- lib/ansible/modules/network/aci/aci_ap.py | 26 +++--- lib/ansible/modules/network/aci/aci_bd.py | 22 ++--- .../modules/network/aci/aci_bd_subnet.py | 38 ++++---- .../modules/network/aci/aci_bd_to_l3out.py | 36 ++++---- .../network/aci/aci_config_rollback.py | 14 +-- .../network/aci/aci_config_snapshot.py | 24 ++--- .../modules/network/aci/aci_contract.py | 32 +++---- .../network/aci/aci_contract_subject.py | 31 ++++--- .../aci/aci_contract_subject_to_filter.py | 30 +++---- lib/ansible/modules/network/aci/aci_domain.py | 19 ++-- .../network/aci/aci_domain_to_encap_pool.py | 26 +++--- .../network/aci/aci_domain_to_vlan_pool.py | 26 +++--- .../modules/network/aci/aci_encap_pool.py | 28 +++--- .../network/aci/aci_encap_pool_range.py | 22 ++--- lib/ansible/modules/network/aci/aci_epg.py | 24 ++--- .../network/aci/aci_epg_monitoring_policy.py | 26 +++--- .../network/aci/aci_epg_to_contract.py | 43 ++++++--- .../modules/network/aci/aci_epg_to_domain.py | 34 ++++---- .../modules/network/aci/aci_fabric_node.py | 14 +-- lib/ansible/modules/network/aci/aci_filter.py | 26 +++--- .../modules/network/aci/aci_filter_entry.py | 24 ++--- .../network/aci/aci_firmware_source.py | 14 +-- .../network/aci/aci_interface_policy_fc.py | 16 ++-- .../network/aci/aci_interface_policy_l2.py | 22 +++-- .../aci_interface_policy_leaf_policy_group.py | 24 ++--- .../aci/aci_interface_policy_leaf_profile.py | 14 +-- .../network/aci/aci_interface_policy_lldp.py | 16 ++-- .../network/aci/aci_interface_policy_mcp.py | 16 ++-- .../network/aci/aci_interface_policy_ospf.py | 18 ++-- .../aci/aci_interface_policy_port_channel.py | 18 ++-- .../aci/aci_interface_policy_port_security.py | 16 ++-- ..._selector_to_switch_policy_leaf_profile.py | 20 ++--- lib/ansible/modules/network/aci/aci_l3out.py | 30 +++---- .../network/aci/aci_l3out_route_tag_policy.py | 26 +++--- lib/ansible/modules/network/aci/aci_rest.py | 30 +++---- .../network/aci/aci_static_binding_to_epg.py | 87 +++++++++---------- .../network/aci/aci_switch_leaf_selector.py | 24 ++--- .../aci/aci_switch_policy_leaf_profile.py | 16 ++-- .../aci_switch_policy_vpc_protection_group.py | 16 ++-- .../modules/network/aci/aci_taboo_contract.py | 26 +++--- lib/ansible/modules/network/aci/aci_tenant.py | 16 ++-- .../aci/aci_tenant_action_rule_profile.py | 26 +++--- .../aci/aci_tenant_ep_retention_policy.py | 37 ++++---- .../network/aci/aci_tenant_span_dst_group.py | 26 +++--- .../network/aci/aci_tenant_span_src_group.py | 26 +++--- .../aci_tenant_span_src_group_to_dst_group.py | 30 +++---- .../modules/network/aci/aci_vlan_pool.py | 18 ++-- .../network/aci/aci_vlan_pool_encap_block.py | 28 +++--- lib/ansible/modules/network/aci/aci_vrf.py | 32 +++---- .../aci_encap_pool_range/tasks/vlan.yml | 18 ++-- 56 files changed, 716 insertions(+), 685 deletions(-) diff --git a/lib/ansible/modules/network/aci/aci_aaa_user.py b/lib/ansible/modules/network/aci/aci_aaa_user.py index 38381745d19..75e81db21f2 100644 --- a/lib/ansible/modules/network/aci/aci_aaa_user.py +++ b/lib/ansible/modules/network/aci/aci_aaa_user.py @@ -17,19 +17,6 @@ module: aci_aaa_user short_description: Manage AAA users (aaa:User) description: - Manage AAA users on Cisco ACI fabrics. -notes: -- This module is not idempotent when C(aaa_password) is being used - (even if that password was already set identically). This - appears to be an inconsistency wrt. the idempotent nature - of the APIC REST API. The vendor has been informed. - More information in :ref:`the ACI documentation `. -seealso: -- module: aci_aaa_user_certificate -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(aaa:User). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) requirements: - python-dateutil version_added: '2.5' @@ -96,6 +83,19 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- This module is not idempotent when C(aaa_password) is being used + (even if that password was already set identically). This + appears to be an inconsistency wrt. the idempotent nature + of the APIC REST API. The vendor has been informed. + More information in :ref:`the ACI documentation `. +seealso: +- module: aci_aaa_user_certificate +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(aaa:User). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -249,9 +249,6 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec -from ansible.module_utils.basic import AnsibleModule - try: from dateutil.tz import tzutc import dateutil.parser @@ -259,6 +256,9 @@ try: except ImportError: HAS_DATEUTIL = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec + def main(): argument_spec = aci_argument_spec() @@ -266,7 +266,7 @@ def main(): aaa_password=dict(type='str', no_log=True), aaa_password_lifetime=dict(type='int'), aaa_password_update_required=dict(type='bool'), - aaa_user=dict(type='str', required=True, aliases=['name']), # Not required for querying all objects + aaa_user=dict(type='str', aliases=['name']), # Not required for querying all objects clear_password_history=dict(type='bool'), description=dict(type='str', aliases=['descr']), email=dict(type='str'), diff --git a/lib/ansible/modules/network/aci/aci_aaa_user_certificate.py b/lib/ansible/modules/network/aci/aci_aaa_user_certificate.py index 2ce6b906f5e..d631cef8ad5 100644 --- a/lib/ansible/modules/network/aci/aci_aaa_user_certificate.py +++ b/lib/ansible/modules/network/aci/aci_aaa_user_certificate.py @@ -17,16 +17,6 @@ module: aci_aaa_user_certificate short_description: Manage AAA user certificates (aaa:UserCert) description: - Manage AAA user certificates on Cisco ACI fabrics. -notes: -- The C(aaa_user) must exist before using this module in your playbook. - The M(aci_aaa_user) module can be used for this. -seealso: -- module: aci_aaa_user -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(aaa:UserCert). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.5' options: aaa_user: @@ -58,6 +48,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(aaa_user) must exist before using this module in your playbook. + The M(aci_aaa_user) module can be used for this. +seealso: +- module: aci_aaa_user +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(aaa:UserCert). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -209,8 +209,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec ACI_MAPPING = dict( appuser=dict( @@ -227,9 +227,9 @@ ACI_MAPPING = dict( def main(): argument_spec = aci_argument_spec() argument_spec.update( - aaa_user=dict(type='str', required=True), # Not required for querying all objects + aaa_user=dict(type='str', required=True), aaa_user_type=dict(type='str', default='user', choices=['appuser', 'user']), - certificate=dict(type='str', aliases=['cert_data', 'certificate_data']), # Not required for querying all objects + certificate=dict(type='str', aliases=['cert_data', 'certificate_data']), certificate_name=dict(type='str', aliases=['cert_name']), # Not required for querying all objects state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_access_port_block_to_access_port.py b/lib/ansible/modules/network/aci/aci_access_port_block_to_access_port.py index 4e3808419eb..5d91e31ef43 100644 --- a/lib/ansible/modules/network/aci/aci_access_port_block_to_access_port.py +++ b/lib/ansible/modules/network/aci/aci_access_port_block_to_access_port.py @@ -17,12 +17,6 @@ module: aci_access_port_block_to_access_port short_description: Manage port blocks of Fabric interface policy leaf profile interface selectors (infra:HPortS, infra:PortBlk) description: - Manage port blocks of Fabric interface policy leaf profile interface selectors on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(infra:HPortS) and B(infra:PortBlk). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Simon Metzger (@smnmtzgr) version_added: '2.8' options: leaf_interface_profile: @@ -76,6 +70,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(infra:HPortS) and B(infra:PortBlk). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Simon Metzger (@smnmtzgr) ''' EXAMPLES = r''' @@ -255,8 +255,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): @@ -266,8 +266,8 @@ def main(): access_port_selector=dict(type='str', aliases=['name', 'access_port_selector_name']), # Not required for querying all objects leaf_port_blk=dict(type='str', aliases=['leaf_port_blk_name']), # Not required for querying all objects leaf_port_blk_description=dict(type='str'), - from_port=dict(type='str', aliases=['from', 'fromPort', 'from_port_range']), # Not required for querying all objects and deleting port blocks - to_port=dict(type='str', aliases=['to', 'toPort', 'to_port_range']), # Not required for querying all objects and deleting port blocks + from_port=dict(type='str', aliases=['from', 'fromPort', 'from_port_range']), + to_port=dict(type='str', aliases=['to', 'toPort', 'to_port_range']), from_card=dict(type='str', aliases=['from_card_range']), to_card=dict(type='str', aliases=['to_card_range']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py b/lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py index e43de17b8a8..c0d33cc2369 100644 --- a/lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py +++ b/lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py @@ -17,12 +17,6 @@ module: aci_access_port_to_interface_policy_leaf_profile short_description: Manage Fabric interface policy leaf profile interface selectors (infra:HPortS, infra:RsAccBaseGrp, infra:PortBlk) description: - Manage Fabric interface policy leaf profile interface selectors on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(infra:HPortS), B(infra:RsAccBaseGrp) and B(infra:PortBlk). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: leaf_interface_profile: @@ -119,6 +113,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(infra:HPortS), B(infra:RsAccBaseGrp) and B(infra:PortBlk). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -276,8 +276,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec INTERFACE_TYPE_MAPPING = dict( breakout='uni/infra/funcprof/brkoutportgrp-{0}', diff --git a/lib/ansible/modules/network/aci/aci_aep.py b/lib/ansible/modules/network/aci/aci_aep.py index c3ddede0464..bed57e0e171 100644 --- a/lib/ansible/modules/network/aci/aci_aep.py +++ b/lib/ansible/modules/network/aci/aci_aep.py @@ -17,12 +17,6 @@ short_description: Manage attachable Access Entity Profile (AEP) objects (infra: description: - Connect to external virtual and physical domains by using attachable Access Entity Profiles (AEP) on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(infra:AttEntityP) and B(infra:ProvAcc). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Swetha Chunduri (@schunduri) version_added: '2.4' options: aep: @@ -52,6 +46,12 @@ options: default: present choices: [ absent, present, query ] extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(infra:AttEntityP) and B(infra:ProvAcc). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Swetha Chunduri (@schunduri) ''' EXAMPLES = r''' @@ -199,8 +199,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_aep_to_domain.py b/lib/ansible/modules/network/aci/aci_aep_to_domain.py index 65a4f612d54..c7b178bfadd 100644 --- a/lib/ansible/modules/network/aci/aci_aep_to_domain.py +++ b/lib/ansible/modules/network/aci/aci_aep_to_domain.py @@ -17,17 +17,6 @@ module: aci_aep_to_domain short_description: Bind AEPs to Physical or Virtual Domains (infra:RsDomP) description: - Bind AEPs to Physical or Virtual Domains on Cisco ACI fabrics. -notes: -- The C(aep) and C(domain) parameters should exist before using this module. - The M(aci_aep) and M(aci_domain) can be used for these. -seealso: -- module: aci_aep -- module: aci_domain -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(infra:RsDomP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.5' options: aep: @@ -61,6 +50,17 @@ options: type: str choices: [ cloudfoundry, kubernetes, microsoft, openshift, openstack, redhat, vmware ] extends_documentation_fragment: aci +notes: +- The C(aep) and C(domain) parameters should exist before using this module. + The M(aci_aep) and M(aci_domain) can be used for these. +seealso: +- module: aci_aep +- module: aci_domain +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(infra:RsDomP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -213,8 +213,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec VM_PROVIDER_MAPPING = dict( cloudfoundry='CloudFoundry', diff --git a/lib/ansible/modules/network/aci/aci_ap.py b/lib/ansible/modules/network/aci/aci_ap.py index 6ac50732d32..54071063c86 100644 --- a/lib/ansible/modules/network/aci/aci_ap.py +++ b/lib/ansible/modules/network/aci/aci_ap.py @@ -16,17 +16,6 @@ module: aci_ap short_description: Manage top level Application Profile (AP) objects (fv:Ap) description: - Manage top level Application Profile (AP) objects on Cisco ACI fabrics -notes: -- This module does not manage EPGs, see M(aci_epg) to do this. -- The used C(tenant) must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:Ap). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Swetha Chunduri (@schunduri) version_added: '2.4' options: tenant: @@ -54,6 +43,17 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- This module does not manage EPGs, see M(aci_epg) to do this. +- The used C(tenant) must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:Ap). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Swetha Chunduri (@schunduri) ''' EXAMPLES = r''' @@ -204,8 +204,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): @@ -213,7 +213,7 @@ def main(): argument_spec.update( tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects ap=dict(type='str', aliases=['app_profile', 'app_profile_name', 'name']), # Not required for querying all objects - description=dict(type='str', aliases=['descr'], required=False), + description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_bd.py b/lib/ansible/modules/network/aci/aci_bd.py index d9336ea96c2..a28780c2ebd 100644 --- a/lib/ansible/modules/network/aci/aci_bd.py +++ b/lib/ansible/modules/network/aci/aci_bd.py @@ -16,16 +16,6 @@ module: aci_bd short_description: Manage Bridge Domains (BD) objects (fv:BD) description: - Manages Bridge Domains (BD) on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:BD). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: arp_flooding: @@ -144,6 +134,16 @@ options: type: str aliases: [ vrf_name ] extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:BD). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -326,8 +326,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_bd_subnet.py b/lib/ansible/modules/network/aci/aci_bd_subnet.py index 3e09211cea1..9afde0a7549 100644 --- a/lib/ansible/modules/network/aci/aci_bd_subnet.py +++ b/lib/ansible/modules/network/aci/aci_bd_subnet.py @@ -16,19 +16,6 @@ module: aci_bd_subnet short_description: Manage Subnets (fv:Subnet) description: - Manage Subnets on Cisco ACI fabrics. -notes: -- The C(gateway) parameter is the root key used to access the Subnet (not name), so the C(gateway) - is required when the state is C(absent) or C(present). -- The C(tenant) and C(bd) used must exist before using this module in your playbook. - The M(aci_tenant) module and M(aci_bd) can be used for these. -seealso: -- module: aci_bd -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:Subnet). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: bd: @@ -118,6 +105,19 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(gateway) parameter is the root key used to access the Subnet (not name), so the C(gateway) + is required when the state is C(absent) or C(present). +- The C(tenant) and C(bd) used must exist before using this module in your playbook. + The M(aci_tenant) module and M(aci_bd) can be used for these. +seealso: +- module: aci_bd +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:Subnet). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -333,11 +333,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -SUBNET_CONTROL_MAPPING = dict(nd_ra='nd', no_gw='no-default-gateway', querier_ip='querier', unspecified='') - - -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec + +SUBNET_CONTROL_MAPPING = dict( + nd_ra='nd', + no_gw='no-default-gateway', + querier_ip='querier', + unspecified='', +) def main(): diff --git a/lib/ansible/modules/network/aci/aci_bd_to_l3out.py b/lib/ansible/modules/network/aci/aci_bd_to_l3out.py index f2a83d3a1b2..07ca49e33aa 100644 --- a/lib/ansible/modules/network/aci/aci_bd_to_l3out.py +++ b/lib/ansible/modules/network/aci/aci_bd_to_l3out.py @@ -16,17 +16,6 @@ module: aci_bd_to_l3out short_description: Bind Bridge Domain to L3 Out (fv:RsBDToOut) description: - Bind Bridge Domain to L3 Out on Cisco ACI fabrics. -notes: -- The C(bd) and C(l3out) parameters should exist before using this module. - The M(aci_bd) and C(aci_l3out) can be used for these. -seealso: -- module: aci_bd -- module: aci_l3out -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:RsBDToOut). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: bd: @@ -51,6 +40,17 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(bd) and C(l3out) parameters should exist before using this module. + The M(aci_bd) and C(aci_l3out) can be used for these. +seealso: +- module: aci_bd +- module: aci_l3out +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:RsBDToOut). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' # ''' @@ -160,11 +160,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -SUBNET_CONTROL_MAPPING = dict(nd_ra='nd', no_gw='no-default-gateway', querier_ip='querier', unspecified='') - - -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec + +SUBNET_CONTROL_MAPPING = dict( + nd_ra='nd', + no_gw='no-default-gateway', + querier_ip='querier', + unspecified='', +) def main(): @@ -172,8 +176,8 @@ def main(): argument_spec.update( bd=dict(type='str', aliases=['bd_name', 'bridge_domain']), # Not required for querying all objects l3out=dict(type='str'), # Not required for querying all objects - state=dict(type='str', default='present', choices=['absent', 'present', 'query']), tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_config_rollback.py b/lib/ansible/modules/network/aci/aci_config_rollback.py index 847aa8706a9..a65044be742 100644 --- a/lib/ansible/modules/network/aci/aci_config_rollback.py +++ b/lib/ansible/modules/network/aci/aci_config_rollback.py @@ -17,13 +17,6 @@ short_description: Provides rollback and rollback preview functionality (config: description: - Provides rollback and rollback preview functionality for Cisco ACI fabrics. - Config Rollbacks are done using snapshots C(aci_snapshot) with the configImportP class. -seealso: -- module: aci_config_snapshot -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(config:ImportP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: compare_export_policy: @@ -79,6 +72,13 @@ options: choices: [ preview, rollback ] default: rollback extends_documentation_fragment: aci +seealso: +- module: aci_config_snapshot +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(config:ImportP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' diff --git a/lib/ansible/modules/network/aci/aci_config_snapshot.py b/lib/ansible/modules/network/aci/aci_config_snapshot.py index b21950366f1..c6d99310e5c 100644 --- a/lib/ansible/modules/network/aci/aci_config_snapshot.py +++ b/lib/ansible/modules/network/aci/aci_config_snapshot.py @@ -18,17 +18,6 @@ description: - Manage Config Snapshots on Cisco ACI fabrics. - Creating new Snapshots is done using the configExportP class. - Removing Snapshots is done using the configSnapshot class. -notes: -- The APIC does not provide a mechanism for naming the snapshots. -- 'Snapshot files use the following naming structure: ce_---
T::.+:.' -- 'Snapshot objects use the following naming structure: run---
T--.' -seealso: -- module: aci_config_rollback -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(config:Snapshot) and B(config:ExportP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: description: @@ -70,6 +59,17 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The APIC does not provide a mechanism for naming the snapshots. +- 'Snapshot files use the following naming structure: ce_---
T::.+:.' +- 'Snapshot objects use the following naming structure: run---
T--.' +seealso: +- module: aci_config_rollback +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(config:Snapshot) and B(config:ExportP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -219,8 +219,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_contract.py b/lib/ansible/modules/network/aci/aci_contract.py index 721547b25f2..a3a49d853de 100644 --- a/lib/ansible/modules/network/aci/aci_contract.py +++ b/lib/ansible/modules/network/aci/aci_contract.py @@ -16,19 +16,6 @@ module: aci_contract short_description: Manage contract resources (vz:BrCP) description: - Manage Contract resources on Cisco ACI fabrics. -notes: -- This module does not manage Contract Subjects, see M(aci_contract_subject) to do this. - Contract Subjects can still be removed using this module. -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_contract_subject -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(vz:BrCP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: contract: @@ -75,6 +62,19 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- This module does not manage Contract Subjects, see M(aci_contract_subject) to do this. + Contract Subjects can still be removed using this module. +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_contract_subject +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(vz:BrCP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -226,15 +226,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - contract=dict(type='str', required=False, aliases=['contract_name', 'name']), # Not required for querying all objects - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects + contract=dict(type='str', aliases=['contract_name', 'name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), scope=dict(type='str', choices=['application-profile', 'context', 'global', 'tenant']), priority=dict(type='str', choices=['level1', 'level2', 'level3', 'unspecified']), # No default provided on purpose diff --git a/lib/ansible/modules/network/aci/aci_contract_subject.py b/lib/ansible/modules/network/aci/aci_contract_subject.py index bed455a34e7..8f00126c259 100644 --- a/lib/ansible/modules/network/aci/aci_contract_subject.py +++ b/lib/ansible/modules/network/aci/aci_contract_subject.py @@ -16,17 +16,6 @@ module: aci_contract_subject short_description: Manage initial Contract Subjects (vz:Subj) description: - Manage initial Contract Subjects on Cisco ACI fabrics. -notes: -- The C(tenant) and C(contract) used must exist before using this module in your playbook. - The M(aci_tenant) and M(aci_contract) modules can be used for this. -seealso: -- module: aci_contract -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(vz:Subj). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Swetha Chunduri (@schunduri) version_added: '2.4' options: tenant: @@ -89,6 +78,17 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) and C(contract) used must exist before using this module in your playbook. + The M(aci_tenant) and M(aci_contract) modules can be used for this. +seealso: +- module: aci_contract +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(vz:Subj). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Swetha Chunduri (@schunduri) ''' EXAMPLES = r''' @@ -245,10 +245,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec -MATCH_MAPPING = dict(all='All', at_least_one='AtleastOne', at_most_one='AtmostOne', none='None') +MATCH_MAPPING = dict( + all='All', + at_least_one='AtleastOne', + at_most_one='AtmostOne', + none='None', +) def main(): diff --git a/lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py b/lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py index 21274597ff5..120b64dbd0c 100644 --- a/lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py +++ b/lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py @@ -16,19 +16,6 @@ module: aci_contract_subject_to_filter short_description: Bind Contract Subjects to Filters (vz:RsSubjFiltAtt) description: - Bind Contract Subjects to Filters on Cisco ACI fabrics. -notes: -- The C(tenant), C(contract), C(subject), and C(filter_name) must exist before using this module in your playbook. - The M(aci_tenant), M(aci_contract), M(aci_contract_subject), and M(aci_filter) modules can be used for these. -seealso: -- module: aci_tenant -- module: aci_contract -- module: aci_contract_subject -- module: aci_filter -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(vz:RsSubjFiltAtt). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: contract: @@ -67,6 +54,19 @@ options: required: yes aliases: [ tenant_name ] extends_documentation_fragment: aci +notes: +- The C(tenant), C(contract), C(subject), and C(filter_name) must exist before using this module in your playbook. + The M(aci_tenant), M(aci_contract), M(aci_contract_subject), and M(aci_filter) modules can be used for these. +seealso: +- module: aci_tenant +- module: aci_contract +- module: aci_contract_subject +- module: aci_filter +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(vz:RsSubjFiltAtt). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -227,8 +227,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): @@ -236,9 +236,9 @@ def main(): argument_spec.update( contract=dict(type='str', aliases=['contract_name']), # Not required for querying all objects filter=dict(type='str', aliases=['filter_name']), # Not required for querying all objects - log=dict(tyep='str', choices=['log', 'none'], aliases=['directive']), subject=dict(type='str', aliases=['contract_subject', 'subject_name']), # Not required for querying all objects tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + log=dict(tyep='str', choices=['log', 'none'], aliases=['directive']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_domain.py b/lib/ansible/modules/network/aci/aci_domain.py index ed0148eff46..eb8f87e67c7 100644 --- a/lib/ansible/modules/network/aci/aci_domain.py +++ b/lib/ansible/modules/network/aci/aci_domain.py @@ -16,13 +16,6 @@ module: aci_domain short_description: Manage physical, virtual, bridged, routed or FC domain profiles (phys:DomP, vmm:DomP, l2ext:DomP, l3ext:DomP, fc:DomP) description: - Manage physical, virtual, bridged, routed or FC domain profiles on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(phys:DomP), - B(vmm:DomP), B(l2ext:DomP), B(l3ext:DomP) and B(fc:DomP) - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.5' options: domain: @@ -78,6 +71,13 @@ options: type: str choices: [ avs, default, dvs, unknown ] extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(phys:DomP), + B(vmm:DomP), B(l2ext:DomP), B(l3ext:DomP) and B(fc:DomP) + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -260,6 +260,7 @@ VM_PROVIDER_MAPPING = dict( redhat='Redhat', vmware='VMware', ) + VSWITCH_MAPPING = dict( avs='n1kv', default='default', @@ -271,12 +272,12 @@ VSWITCH_MAPPING = dict( def main(): argument_spec = aci_argument_spec() argument_spec.update( + domain_type=dict(type='str', required=True, choices=['fc', 'l2dom', 'l3dom', 'phys', 'vmm'], aliases=['type']), + domain=dict(type='str', aliases=['domain_name', 'domain_profile', 'name']), # Not required for querying all objects dscp=dict(type='str', choices=['AF11', 'AF12', 'AF13', 'AF21', 'AF22', 'AF23', 'AF31', 'AF32', 'AF33', 'AF41', 'AF42', 'AF43', 'CS0', 'CS1', 'CS2', 'CS3', 'CS4', 'CS5', 'CS6', 'CS7', 'EF', 'VA', 'unspecified'], aliases=['target']), - domain=dict(type='str', aliases=['domain_name', 'domain_profile', 'name']), # Not required for querying all objects - domain_type=dict(type='str', required=True, choices=['fc', 'l2dom', 'l3dom', 'phys', 'vmm'], aliases=['type']), # Not required for querying all objects encap_mode=dict(type='str', choices=['unknown', 'vlan', 'vxlan']), multicast_address=dict(type='str'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py b/lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py index 49ac49f5b1c..243e3d26f24 100644 --- a/lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py +++ b/lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py @@ -20,14 +20,6 @@ description: notes: - The C(domain) and C(encap_pool) parameters should exist before using this module. The M(aci_domain) and M(aci_encap_pool) can be used for these. -seealso: -- module: aci_domain -- module: aci_encap_pool -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(infra:RsVlanNs). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.5' options: domain: @@ -73,6 +65,14 @@ options: type: str choices: [ cloudfoundry, kubernetes, microsoft, openshift, openstack, redhat, vmware ] extends_documentation_fragment: aci +seealso: +- module: aci_domain +- module: aci_encap_pool +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(infra:RsVlanNs). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -233,8 +233,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec VM_PROVIDER_MAPPING = dict( cloudfoundry='CloudFoundry', @@ -265,11 +265,11 @@ POOL_MAPPING = dict( def main(): argument_spec = aci_argument_spec() argument_spec.update( - domain=dict(type='str', aliases=['domain_name', 'domain_profile']), - domain_type=dict(type='str', choices=['fc', 'l2dom', 'l3dom', 'phys', 'vmm']), - pool=dict(type='str', aliases=['pool_name']), - pool_allocation_mode=dict(type='str', aliases=['allocation_mode', 'mode'], choices=['dynamic', 'static']), + domain_type=dict(type='str', required=True, choices=['fc', 'l2dom', 'l3dom', 'phys', 'vmm']), pool_type=dict(type='str', required=True, choices=['vlan', 'vsan', 'vxlan']), + domain=dict(type='str', aliases=['domain_name', 'domain_profile']), # Not required for querying all objects + pool=dict(type='str', aliases=['pool_name']), # Not required for querying all objects + pool_allocation_mode=dict(type='str', aliases=['allocation_mode', 'mode'], choices=['dynamic', 'static']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), vm_provider=dict(type='str', choices=['cloudfoundry', 'kubernetes', 'microsoft', 'openshift', 'openstack', 'redhat', 'vmware']), ) diff --git a/lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py b/lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py index 11655a58454..3431f776cc5 100644 --- a/lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py +++ b/lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py @@ -17,17 +17,6 @@ module: aci_domain_to_vlan_pool short_description: Bind Domain to VLAN Pools (infra:RsVlanNs) description: - Bind Domain to VLAN Pools on Cisco ACI fabrics. -notes: -- The C(domain) and C(vlan_pool) parameters should exist before using this module. - The M(aci_domain) and M(aci_vlan_pool) can be used for these. -seealso: -- module: aci_domain -- module: aci_vlan_pool -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(infra:RsVlanNs). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.5' options: domain: @@ -67,6 +56,17 @@ options: type: str choices: [ cloudfoundry, kubernetes, microsoft, openshift, openstack, redhat, vmware ] extends_documentation_fragment: aci +notes: +- The C(domain) and C(vlan_pool) parameters should exist before using this module. + The M(aci_domain) and M(aci_vlan_pool) can be used for these. +seealso: +- module: aci_domain +- module: aci_vlan_pool +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(infra:RsVlanNs). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -249,8 +249,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec VM_PROVIDER_MAPPING = dict( cloudfoundry='CloudFoundry', @@ -266,8 +266,8 @@ VM_PROVIDER_MAPPING = dict( def main(): argument_spec = aci_argument_spec() argument_spec.update( + domain_type=dict(type='str', required=True, choices=['fc', 'l2dom', 'l3dom', 'phys', 'vmm']), domain=dict(type='str', aliases=['domain_name', 'domain_profile']), # Not required for querying all objects - domain_type=dict(type='str', required=True, choices=['fc', 'l2dom', 'l3dom', 'phys', 'vmm']), # Not required for querying all objects pool=dict(type='str', aliases=['pool_name', 'vlan_pool']), # Not required for querying all objects pool_allocation_mode=dict(type='str', required=True, aliases=['allocation_mode', 'mode'], choices=['dynamic', 'static']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_encap_pool.py b/lib/ansible/modules/network/aci/aci_encap_pool.py index 966091b91b6..28fd7cef151 100644 --- a/lib/ansible/modules/network/aci/aci_encap_pool.py +++ b/lib/ansible/modules/network/aci/aci_encap_pool.py @@ -16,14 +16,6 @@ module: aci_encap_pool short_description: Manage encap pools (fvns:VlanInstP, fvns:VxlanInstP, fvns:VsanInstP) description: - Manage vlan, vxlan, and vsan pools on Cisco ACI fabrics. -seealso: -- module: aci_encap_pool_range -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(fvns:VlanInstP), - B(fvns:VxlanInstP) and B(fvns:VsanInstP) - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.5' options: description: @@ -49,7 +41,7 @@ options: type: str required: yes aliases: [ type ] - choices: [ vlan, vxlan, vsan] + choices: [ vlan, vsan, vxlan ] state: description: - Use C(present) or C(absent) for adding or removing. @@ -58,6 +50,14 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- module: aci_encap_pool_range +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(fvns:VlanInstP), + B(fvns:VxlanInstP) and B(fvns:VsanInstP) + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -209,10 +209,10 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec -ACI_MAPPING = dict( +ACI_POOL_MAPPING = dict( vlan=dict( aci_class='fvnsVlanInstP', aci_mo='infra/vlanns-', @@ -231,10 +231,10 @@ ACI_MAPPING = dict( def main(): argument_spec = aci_argument_spec() argument_spec.update( + pool_type=dict(type='str', required=True, aliases=['type'], choices=['vlan', 'vsan', 'vxlan']), description=dict(type='str', aliases=['descr']), pool=dict(type='str', aliases=['name', 'pool_name']), # Not required for querying all objects pool_allocation_mode=dict(type='str', aliases=['allocation_mode', 'mode'], choices=['dynamic', 'static']), - pool_type=dict(type='str', aliases=['type'], choices=['vlan', 'vxlan', 'vsan'], required=True), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) @@ -253,8 +253,8 @@ def main(): pool_allocation_mode = module.params['pool_allocation_mode'] state = module.params['state'] - aci_class = ACI_MAPPING[pool_type]["aci_class"] - aci_mo = ACI_MAPPING[pool_type]["aci_mo"] + aci_class = ACI_POOL_MAPPING[pool_type]['aci_class'] + aci_mo = ACI_POOL_MAPPING[pool_type]['aci_mo'] pool_name = pool # ACI Pool URL requires the pool_allocation mode for vlan and vsan pools (ex: uni/infra/vlanns-[poolname]-static) diff --git a/lib/ansible/modules/network/aci/aci_encap_pool_range.py b/lib/ansible/modules/network/aci/aci_encap_pool_range.py index 908d4362d0c..9b1b03026d6 100644 --- a/lib/ansible/modules/network/aci/aci_encap_pool_range.py +++ b/lib/ansible/modules/network/aci/aci_encap_pool_range.py @@ -16,15 +16,6 @@ module: aci_encap_pool_range short_description: Manage encap ranges assigned to pools (fvns:EncapBlk, fvns:VsanEncapBlk) description: - Manage vlan, vxlan, and vsan ranges that are assigned to pools on Cisco ACI fabrics. -notes: -- The C(pool) must exist in order to add or delete a range. -seealso: -- module: aci_encap_pool -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(fvns:EncapBlk) and B(fvns:VsanEncapBlk). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.5' options: allocation_mode: @@ -81,6 +72,15 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(pool) must exist in order to add or delete a range. +seealso: +- module: aci_encap_pool +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(fvns:EncapBlk) and B(fvns:VsanEncapBlk). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -278,8 +278,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec ACI_POOL_MAPPING = dict( vlan=dict( @@ -300,11 +300,11 @@ ACI_POOL_MAPPING = dict( def main(): argument_spec = aci_argument_spec() argument_spec.update( + pool_type=dict(type='str', required=True, aliases=['type'], choices=['vlan', 'vxlan', 'vsan']), allocation_mode=dict(type='str', aliases=['mode'], choices=['dynamic', 'inherit', 'static']), description=dict(type='str', aliases=['descr']), pool=dict(type='str', aliases=['pool_name']), # Not required for querying all objects pool_allocation_mode=dict(type='str', aliases=['pool_mode'], choices=['dynamic', 'static']), - pool_type=dict(type='str', aliases=['type'], choices=['vlan', 'vxlan', 'vsan'], required=True), range_end=dict(type='int', aliases=['end']), # Not required for querying all objects range_name=dict(type='str', aliases=["name", "range"]), # Not required for querying all objects range_start=dict(type='int', aliases=["start"]), # Not required for querying all objects diff --git a/lib/ansible/modules/network/aci/aci_epg.py b/lib/ansible/modules/network/aci/aci_epg.py index 2cfc567523e..2e5d84e72d8 100644 --- a/lib/ansible/modules/network/aci/aci_epg.py +++ b/lib/ansible/modules/network/aci/aci_epg.py @@ -16,17 +16,6 @@ module: aci_epg short_description: Manage End Point Groups (EPG) objects (fv:AEPg) description: - Manage End Point Groups (EPG) on Cisco ACI fabrics. -notes: -- The C(tenant) and C(app_profile) used must exist before using this module in your playbook. - The M(aci_tenant) and M(aci_ap) modules can be used for this. -seealso: -- module: aci_tenant -- module: aci_ap -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:AEPg). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Swetha Chunduri (@schunduri) version_added: '2.4' options: tenant: @@ -89,6 +78,17 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) and C(app_profile) used must exist before using this module in your playbook. + The M(aci_tenant) and M(aci_ap) modules can be used for this. +seealso: +- module: aci_tenant +- module: aci_ap +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:AEPg). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Swetha Chunduri (@schunduri) ''' EXAMPLES = r''' @@ -286,8 +286,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py b/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py index 245d7815dd4..57ecb68d350 100644 --- a/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py +++ b/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py @@ -16,16 +16,6 @@ module: aci_epg_monitoring_policy short_description: Manage monitoring policies (mon:EPGPol) description: - Manage monitoring policies on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(mon:EPGPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: monitoring_policy: @@ -53,6 +43,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(mon:EPGPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -172,15 +172,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - monitoring_policy=dict(type='str', required=False, aliases=['name']), # Not required for querying all objects - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects + monitoring_policy=dict(type='str', aliases=['name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_epg_to_contract.py b/lib/ansible/modules/network/aci/aci_epg_to_contract.py index 5b8d36e983d..201544fb197 100644 --- a/lib/ansible/modules/network/aci/aci_epg_to_contract.py +++ b/lib/ansible/modules/network/aci/aci_epg_to_contract.py @@ -19,16 +19,6 @@ description: notes: - The C(tenant), C(app_profile), C(EPG), and C(Contract) used must exist before using this module in your playbook. The M(aci_tenant), M(aci_ap), M(aci_epg), and M(aci_contract) modules can be used for this. -seealso: -- module: aci_tenant -- module: aci_ap -- module: aci_epg -- module: aci_contract -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(fv:RsCons) and B(fv:RsProv). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: ap: @@ -77,6 +67,16 @@ options: type: str aliases: [ tenant_name ] extends_documentation_fragment: aci +seealso: +- module: aci_tenant +- module: aci_ap +- module: aci_epg +- module: aci_contract +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(fv:RsCons) and B(fv:RsProv). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -236,20 +236,35 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec -ACI_CLASS_MAPPING = {"consumer": {"class": "fvRsCons", "rn": "rscons-"}, "provider": {"class": "fvRsProv", "rn": "rsprov-"}} -PROVIDER_MATCH_MAPPING = {"all": "All", "at_least_one": "AtleastOne", "at_most_one": "AtmostOne", "none": "None"} +ACI_CLASS_MAPPING = dict( + consumer={ + 'class': 'fvRsCons', + 'rn': 'rscons-', + }, + provider={ + 'class': 'fvRsProv', + 'rn': 'rsprov-', + }, +) + +PROVIDER_MATCH_MAPPING = dict( + all='All', + at_least_one='AtleastOne', + at_most_one='tmostOne', + none='None', +) def main(): argument_spec = aci_argument_spec() argument_spec.update( + contract_type=dict(type='str', required=True, choices=['consumer', 'provider']), ap=dict(type='str', aliases=['app_profile', 'app_profile_name']), # Not required for querying all objects epg=dict(type='str', aliases=['epg_name']), # Not required for querying all objects contract=dict(type='str', aliases=['contract_name']), # Not required for querying all objects - contract_type=dict(type='str', required=True, choices=['consumer', 'provider']), priority=dict(type='str', choices=['level1', 'level2', 'level3', 'unspecified']), provider_match=dict(type='str', choices=['all', 'at_least_one', 'at_most_one', 'none']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_epg_to_domain.py b/lib/ansible/modules/network/aci/aci_epg_to_domain.py index 5d6e725f3ba..2d2a4584eb7 100644 --- a/lib/ansible/modules/network/aci/aci_epg_to_domain.py +++ b/lib/ansible/modules/network/aci/aci_epg_to_domain.py @@ -16,22 +16,6 @@ module: aci_epg_to_domain short_description: Bind EPGs to Domains (fv:RsDomAtt) description: - Bind EPGs to Physical and Virtual Domains on Cisco ACI fabrics. -notes: -- The C(tenant), C(ap), C(epg), and C(domain) used must exist before using this module in your playbook. - The M(aci_tenant) M(aci_ap), M(aci_epg) M(aci_domain) modules can be used for this. -- OpenStack VMM domains must not be created using this module. The OpenStack VMM domain is created directly - by the Cisco APIC Neutron plugin as part of the installation and configuration. - This module can be used to query status of an OpenStack VMM domain. -seealso: -- module: aci_tenant -- module: aci_ap -- module: aci_epg -- module: aci_domain -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:RsDomAtt). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: allow_useg: @@ -115,6 +99,22 @@ options: type: str choices: [ cloudfoundry, kubernetes, microsoft, openshift, openstack, redhat, vmware ] extends_documentation_fragment: aci +notes: +- The C(tenant), C(ap), C(epg), and C(domain) used must exist before using this module in your playbook. + The M(aci_tenant) M(aci_ap), M(aci_epg) M(aci_domain) modules can be used for this. +- OpenStack VMM domains must not be created using this module. The OpenStack VMM domain is created directly + by the Cisco APIC Neutron plugin as part of the installation and configuration. + This module can be used to query status of an OpenStack VMM domain. +seealso: +- module: aci_tenant +- module: aci_ap +- module: aci_epg +- module: aci_domain +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:RsDomAtt). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -273,8 +273,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec VM_PROVIDER_MAPPING = dict( cloudfoundry='CloudFoundry', diff --git a/lib/ansible/modules/network/aci/aci_fabric_node.py b/lib/ansible/modules/network/aci/aci_fabric_node.py index 38fed3836aa..09b6ef0c3e6 100644 --- a/lib/ansible/modules/network/aci/aci_fabric_node.py +++ b/lib/ansible/modules/network/aci/aci_fabric_node.py @@ -17,12 +17,6 @@ module: aci_fabric_node short_description: Manage Fabric Node Members (fabric:NodeIdentP) description: - Manage Fabric Node Members on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fabric:NodeIdentP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: pod_id: @@ -62,6 +56,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fabric:NodeIdentP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -201,8 +201,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec # NOTE: (This problem is also present on the APIC GUI) diff --git a/lib/ansible/modules/network/aci/aci_filter.py b/lib/ansible/modules/network/aci/aci_filter.py index 18ca2a90334..85a7ad2f8f3 100644 --- a/lib/ansible/modules/network/aci/aci_filter.py +++ b/lib/ansible/modules/network/aci/aci_filter.py @@ -17,16 +17,6 @@ short_description: Manages top level filter objects (vz:Filter) description: - Manages top level filter objects on Cisco ACI fabrics. - This modules does not manage filter entries, see M(aci_filter_entry) for this functionality. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(vz:Filter). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: filter: @@ -54,6 +44,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(vz:Filter). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -205,15 +205,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - filter=dict(type='str', required=False, aliases=['name', 'filter_name']), # Not required for querying all objects - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects + filter=dict(type='str', aliases=['name', 'filter_name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_filter_entry.py b/lib/ansible/modules/network/aci/aci_filter_entry.py index 264cb7c2cb2..abe0c23c5f2 100644 --- a/lib/ansible/modules/network/aci/aci_filter_entry.py +++ b/lib/ansible/modules/network/aci/aci_filter_entry.py @@ -16,17 +16,6 @@ module: aci_filter_entry short_description: Manage filter entries (vz:Entry) description: - Manage filter entries for a filter on Cisco ACI fabrics. -notes: -- The C(tenant) and C(filter) used must exist before using this module in your playbook. - The M(aci_tenant) and M(aci_filter) modules can be used for this. -seealso: -- module: aci_tenant -- module: aci_filter -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(vz:Entry). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: arp_flag: @@ -108,6 +97,17 @@ options: type: str aliases: [ tenant_name ] extends_documentation_fragment: aci +notes: +- The C(tenant) and C(filter) used must exist before using this module in your playbook. + The M(aci_tenant) and M(aci_filter) modules can be used for this. +seealso: +- module: aci_tenant +- module: aci_filter +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(vz:Entry). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -230,8 +230,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec VALID_ARP_FLAGS = ['arp_reply', 'arp_request', 'unspecified'] VALID_ETHER_TYPES = ['arp', 'fcoe', 'ip', 'mac_security', 'mpls_ucast', 'trill', 'unspecified'] diff --git a/lib/ansible/modules/network/aci/aci_firmware_source.py b/lib/ansible/modules/network/aci/aci_firmware_source.py index ccaf85294a8..f5f7c6a4634 100644 --- a/lib/ansible/modules/network/aci/aci_firmware_source.py +++ b/lib/ansible/modules/network/aci/aci_firmware_source.py @@ -17,13 +17,7 @@ module: aci_firmware_source short_description: Manage firmware image sources (firmware:OSource) description: - Manage firmware image sources on Cisco ACI fabrics. -author: -- Dag Wieers (@dagwieers) version_added: '2.5' -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(firmware:OSource). - link: https://developer.cisco.com/docs/apic-mim-ref/ options: source: description: @@ -62,6 +56,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(firmware:OSource). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -211,8 +211,8 @@ url: ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_fc.py b/lib/ansible/modules/network/aci/aci_interface_policy_fc.py index 36a5b57e2b8..ca128da4271 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_fc.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_fc.py @@ -16,13 +16,7 @@ module: aci_interface_policy_fc short_description: Manage Fibre Channel interface policies (fc:IfPol) description: - Manage ACI Fiber Channel interface policies on Cisco ACI fabrics. -author: -- Dag Wieers (@dagwieers) version_added: '2.4' -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fc:IfPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ options: fc_policy: description: @@ -49,6 +43,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fc:IfPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -168,14 +168,14 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - fc_policy=dict(type='str', required=False, aliases=['name']), # Not required for querying all objects + fc_policy=dict(type='str', aliases=['name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), port_mode=dict(type='str', choices=['f', 'np']), # No default provided on purpose state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_l2.py b/lib/ansible/modules/network/aci/aci_interface_policy_l2.py index a7ef6c33f88..ac151c3e26f 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_l2.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_l2.py @@ -16,13 +16,7 @@ module: aci_interface_policy_l2 short_description: Manage Layer 2 interface policies (l2:IfPol) description: - Manage Layer 2 interface policies on Cisco ACI fabrics. -author: -- Dag Wieers (@dagwieers) version_added: '2.4' -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(l2:IfPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ options: l2_policy: description: @@ -60,6 +54,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(l2:IfPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -178,17 +178,21 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec # Mapping dicts are used to normalize the proposed data to what the APIC expects, which will keep diffs accurate -QINQ_MAPPING = dict(core='corePort', disabled='disabled', edge='edgePort') +QINQ_MAPPING = dict( + core='corePort', + disabled='disabled', + edge='edgePort', +) def main(): argument_spec = aci_argument_spec() argument_spec.update( - l2_policy=dict(type='str', required=False, aliases=['name']), # Not required for querying all policies + l2_policy=dict(type='str', aliases=['name']), # Not required for querying all policies description=dict(type='str', aliases=['descr']), vlan_scope=dict(type='str', choices=['global', 'portlocal']), # No default provided on purpose qinq=dict(type='str', choices=['core', 'disabled', 'edge']), diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_leaf_policy_group.py b/lib/ansible/modules/network/aci/aci_interface_policy_leaf_policy_group.py index a8a33ed2ca3..5b2d6c308a6 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_leaf_policy_group.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_leaf_policy_group.py @@ -17,15 +17,6 @@ module: aci_interface_policy_leaf_policy_group short_description: Manage fabric interface policy leaf policy groups (infra:AccBndlGrp, infra:AccPortGrp) description: - Manage fabric interface policy leaf policy groups on Cisco ACI fabrics. -notes: -- When using the module please select the appropriate link_aggregation_type (lag_type). - C(link) for Port Channel(PC), C(node) for Virtual Port Channel(VPC) and C(leaf) for Leaf Access Port Policy Group. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(infra:AccBndlGrp) and B(infra:AccPortGrp). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: policy_group: @@ -136,6 +127,15 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- When using the module please select the appropriate link_aggregation_type (lag_type). + C(link) for Port Channel(PC), C(node) for Virtual Port Channel(VPC) and C(leaf) for Leaf Access Port Policy Group. +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(infra:AccBndlGrp) and B(infra:AccPortGrp). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -313,18 +313,18 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - policy_group=dict(type='str', aliases=['name', 'policy_group_name']), # Not required for querying all objects - description=dict(type='str', aliases=['descr']), # NOTE: Since this module needs to include both infra:AccBndlGrp (for PC and VPC) and infra:AccPortGrp (for leaf access port policy group): # NOTE: I'll allow the user to make the choice here (link(PC), node(VPC), leaf(leaf-access port policy group)) lag_type=dict(type='str', required=True, aliases=['lag_type_name'], choices=['leaf', 'link', 'node']), + policy_group=dict(type='str', aliases=['name', 'policy_group_name']), # Not required for querying all objects + description=dict(type='str', aliases=['descr']), link_level_policy=dict(type='str', aliases=['link_level_policy_name']), cdp_policy=dict(type='str', aliases=['cdp_policy_name']), mcp_policy=dict(type='str', aliases=['mcp_policy_name']), diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py b/lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py index dd61f034f02..d41ee5d16db 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py @@ -17,12 +17,6 @@ module: aci_interface_policy_leaf_profile short_description: Manage fabric interface policy leaf profiles (infra:AccPortP) description: - Manage fabric interface policy leaf profiles on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(infra:AccPortP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: leaf_interface_profile: @@ -44,6 +38,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(infra:AccPortP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -190,8 +190,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_lldp.py b/lib/ansible/modules/network/aci/aci_interface_policy_lldp.py index 107c4bf5b37..490144e5b85 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_lldp.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_lldp.py @@ -16,12 +16,6 @@ module: aci_interface_policy_lldp short_description: Manage LLDP interface policies (lldp:IfPol) description: - Manage LLDP interface policies on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(lldp:IfPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: lldp_policy: @@ -53,6 +47,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(lldp:IfPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -173,14 +173,14 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - lldp_policy=dict(type='str', require=False, aliases=['name']), # Not required for querying all objects + lldp_policy=dict(type='str', aliases=['name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), receive_state=dict(type='raw'), # Turn into a boolean in v2.9 transmit_state=dict(type='raw'), # Turn into a boolean in v2.9 diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_mcp.py b/lib/ansible/modules/network/aci/aci_interface_policy_mcp.py index b41d40a6b3c..529e5af455e 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_mcp.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_mcp.py @@ -16,12 +16,6 @@ module: aci_interface_policy_mcp short_description: Manage MCP interface policies (mcp:IfPol) description: - Manage MCP interface policies on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(mcp:IfPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: mcp: @@ -48,6 +42,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(mcp:IfPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -167,14 +167,14 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - mcp=dict(type='str', required=False, aliases=['mcp_interface', 'name']), # Not required for querying all objects + mcp=dict(type='str', aliases=['mcp_interface', 'name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), admin_state=dict(type='raw'), # Turn into a boolean in v2.9 state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_ospf.py b/lib/ansible/modules/network/aci/aci_interface_policy_ospf.py index c207c80a95a..d1639f30b2a 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_ospf.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_ospf.py @@ -17,12 +17,6 @@ module: aci_interface_policy_ospf short_description: Manage OSPF interface policies (ospf:IfPol) description: - Manage OSPF interface policies on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(ospf:IfPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.7' options: tenant: @@ -135,6 +129,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(ospf:IfPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -285,15 +285,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects - ospf=dict(type='str', required=False, aliases=['ospf_interface', 'name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + ospf=dict(type='str', aliases=['ospf_interface', 'name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), network_type=dict(type='str', choices=['bcast', 'p2p']), cost=dict(type='int'), diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py b/lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py index eecd25e2da7..39cce581443 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py @@ -16,12 +16,6 @@ module: aci_interface_policy_port_channel short_description: Manage port channel interface policies (lacp:LagPol) description: - Manage port channel interface policies on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(lacp:LagPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: port_channel: @@ -97,6 +91,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(lacp:LagPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -217,18 +217,18 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - port_channel=dict(type='str', required=False, aliases=['name']), # Not required for querying all objects + port_channel=dict(type='str', aliases=['name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), min_links=dict(type='int'), max_links=dict(type='int'), - mode=dict(type='str', choices=['off', 'mac-pin', 'active', 'passive', 'mac-pin-nicload']), + mode=dict(type='str', choices=['active', 'mac-pin', 'mac-pin-nicload', 'off', 'passive']), fast_select=dict(type='bool'), graceful_convergence=dict(type='bool'), load_defer=dict(type='bool'), diff --git a/lib/ansible/modules/network/aci/aci_interface_policy_port_security.py b/lib/ansible/modules/network/aci/aci_interface_policy_port_security.py index 0e2f297e44c..0afc90c0353 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_port_security.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_port_security.py @@ -16,12 +16,6 @@ module: aci_interface_policy_port_security short_description: Manage port security (l2:PortSecurityPol) description: - Manage port security on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(l2:PortSecurityPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: port_security: @@ -49,6 +43,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(l2:PortSecurityPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -168,14 +168,14 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - port_security=dict(type='str', required=False, aliases=['name']), # Not required for querying all objects + port_security=dict(type='str', aliases=['name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), max_end_points=dict(type='int'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py b/lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py index a212bffccf5..991117b6902 100644 --- a/lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py +++ b/lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py @@ -17,15 +17,6 @@ module: aci_interface_selector_to_switch_policy_leaf_profile short_description: Bind interface selector profiles to switch policy leaf profiles (infra:RsAccPortP) description: - Bind interface selector profiles to switch policy leaf profiles on Cisco ACI fabrics. -notes: -- This module requires an existing leaf profile, the module M(aci_switch_policy_leaf_profile) can be used for this. -seealso: -- module: aci_switch_policy_leaf_profile -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(infra:RsAccPortP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: leaf_profile: @@ -46,6 +37,15 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- This module requires an existing leaf profile, the module M(aci_switch_policy_leaf_profile) can be used for this. +seealso: +- module: aci_switch_policy_leaf_profile +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(infra:RsAccPortP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -186,8 +186,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_l3out.py b/lib/ansible/modules/network/aci/aci_l3out.py index 0e286706886..cfe2480c6f0 100644 --- a/lib/ansible/modules/network/aci/aci_l3out.py +++ b/lib/ansible/modules/network/aci/aci_l3out.py @@ -16,18 +16,6 @@ module: aci_l3out short_description: Manage Layer 3 Outside (L3Out) objects (l3ext:Out) description: - Manage Layer 3 Outside (L3Out) on Cisco ACI fabrics. -notes: -- The C(tenant) and C(domain) and C(vrf) used must exist before using this module in your playbook. - The M(aci_tenant) and M(aci_domain) and M(aci_vrf) modules can be used for this. -seealso: -- module: aci_tenant -- module: aci_domain -- module: aci_vrf -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(l3ext:Out). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Rostyslav Davydenko (@rost-d) version_added: '2.6' options: tenant: @@ -92,6 +80,18 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) and C(domain) and C(vrf) used must exist before using this module in your playbook. + The M(aci_tenant) and M(aci_domain) and M(aci_vrf) modules can be used for this. +seealso: +- module: aci_tenant +- module: aci_domain +- module: aci_vrf +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(l3ext:Out). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Rostyslav Davydenko (@rost-d) ''' EXAMPLES = r''' @@ -236,17 +236,17 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - l3out=dict(type='str', aliases=['l3out_name', 'name']), + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + l3out=dict(type='str', aliases=['l3out_name', 'name']), # Not required for querying all objects domain=dict(type='str', aliases=['ext_routed_domain_name', 'routed_domain']), vrf=dict(type='str', aliases=['vrf_name']), - tenant=dict(type='str', aliases=['tenant_name']), description=dict(type='str', aliases=['descr']), route_control=dict(type='list', choices=['export', 'import'], aliases=['route_control_enforcement']), dscp=dict(type='str', diff --git a/lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py b/lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py index 88c70391369..d6a34d8112e 100644 --- a/lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py +++ b/lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py @@ -16,16 +16,6 @@ module: aci_l3out_route_tag_policy short_description: Manage route tag policies (l3ext:RouteTagPol) description: - Manage route tag policies on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(l3ext:RouteTagPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: rtp: @@ -59,6 +49,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(l3ext:RouteTagPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -179,15 +179,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - rtp=dict(type='str', required=False, aliases=['name', 'rtp_name']), # Not required for querying all objects - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for quering all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for quering all objects + rtp=dict(type='str', aliases=['name', 'rtp_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), tag=dict(type='int'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_rest.py b/lib/ansible/modules/network/aci/aci_rest.py index 4858b0aa09a..168c1a92ea2 100644 --- a/lib/ansible/modules/network/aci/aci_rest.py +++ b/lib/ansible/modules/network/aci/aci_rest.py @@ -18,21 +18,6 @@ short_description: Direct access to the Cisco APIC REST API description: - Enables the management of the Cisco ACI fabric through direct access to the Cisco APIC REST API. - Thanks to the idempotent nature of the APIC, this module is idempotent and reports changes. -notes: -- Certain payloads are known not to be idempotent, so be careful when constructing payloads, - e.g. using C(status="created") will cause idempotency issues, use C(status="modified") instead. - More information in :ref:`the ACI documentation `. -- Certain payloads (and used paths) are known to report no changes happened when changes did happen. - This is a known APIC problem and has been reported to the vendor. A workaround for this issue exists. - More information in :ref:`the ACI documentation `. -- XML payloads require the C(lxml) and C(xmljson) python libraries. For JSON payloads nothing special is needed. -seealso: -- module: aci_tenant -- name: Cisco APIC REST API Configuration Guide - description: More information about the APIC REST API. - link: http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/2-x/rest_cfg/2_1_x/b_Cisco_APIC_REST_API_Configuration_Guide.html -author: -- Dag Wieers (@dagwieers) version_added: '2.4' requirements: - lxml (when using XML payload) @@ -72,6 +57,21 @@ options: type: path aliases: [ config_file ] extends_documentation_fragment: aci +notes: +- Certain payloads are known not to be idempotent, so be careful when constructing payloads, + e.g. using C(status="created") will cause idempotency issues, use C(status="modified") instead. + More information in :ref:`the ACI documentation `. +- Certain payloads (and used paths) are known to report no changes happened when changes did happen. + This is a known APIC problem and has been reported to the vendor. A workaround for this issue exists. + More information in :ref:`the ACI documentation `. +- XML payloads require the C(lxml) and C(xmljson) python libraries. For JSON payloads nothing special is needed. +seealso: +- module: aci_tenant +- name: Cisco APIC REST API Configuration Guide + description: More information about the APIC REST API. + link: http://www.cisco.com/c/en/us/td/docs/switches/datacenter/aci/apic/sw/2-x/rest_cfg/2_1_x/b_Cisco_APIC_REST_API_Configuration_Guide.html +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' diff --git a/lib/ansible/modules/network/aci/aci_static_binding_to_epg.py b/lib/ansible/modules/network/aci/aci_static_binding_to_epg.py index 4d2d50362cf..fc27c93f248 100644 --- a/lib/ansible/modules/network/aci/aci_static_binding_to_epg.py +++ b/lib/ansible/modules/network/aci/aci_static_binding_to_epg.py @@ -17,18 +17,6 @@ module: aci_static_binding_to_epg short_description: Bind static paths to EPGs (fv:RsPathAtt) description: - Bind static paths to EPGs on Cisco ACI fabrics. -notes: -- The C(tenant), C(ap), C(epg) used must exist before using this module in your playbook. - The M(aci_tenant), M(aci_ap), M(aci_epg) modules can be used for this. -seealso: -- module: aci_tenant -- module: aci_ap -- module: aci_epg -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:RsPathAtt). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: tenant: @@ -121,6 +109,18 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant), C(ap), C(epg) used must exist before using this module in your playbook. + The M(aci_tenant), M(aci_ap), M(aci_epg) modules can be used for this. +seealso: +- module: aci_tenant +- module: aci_ap +- module: aci_epg +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:RsPathAtt). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -279,8 +279,25 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec + +INTERFACE_MODE_MAPPING = { + '802.1p': 'native', + 'access': 'untagged', + 'native': 'native', + 'regular': 'regular', + 'tagged': 'regular', + 'trunk': 'regular', + 'untagged': 'untagged', +} + +INTERFACE_TYPE_MAPPING = dict( + fex='topology/pod-{pod_id}/paths-{leafs}/extpaths-{extpaths}/pathep-[eth{interface}]', + port_channel='topology/pod-{pod_id}/paths-{leafs}/pathep-[{interface}]', + switch_port='topology/pod-{pod_id}/paths-{leafs}/pathep-[eth{interface}]', + vpc='topology/pod-{pod_id}/protpaths-{leafs}/pathep-[{interface}]', +) # TODO: change 'deploy_immediacy' to 'resolution_immediacy' (as seen in aci_epg_to_domain)? @@ -299,8 +316,8 @@ def main(): aliases=['interface_mode_name', 'mode']), interface_type=dict(type='str', default='switch_port', choices=['fex', 'port_channel', 'switch_port', 'vpc']), pod_id=dict(type='int', aliases=['pod', 'pod_number']), # Not required for querying all objects - leafs=dict(type='list', aliases=['leaves', 'nodes', 'paths', 'switches']), - interface=dict(type='str'), + leafs=dict(type='list', aliases=['leaves', 'nodes', 'paths', 'switches']), # Not required for querying all objects + interface=dict(type='str'), # Not required for querying all objects extpaths=dict(type='int'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) @@ -333,53 +350,31 @@ def main(): # Users are likely to use integers for leaf IDs, which would raise an exception when using the join method leafs.extend(str(leaf).split('-')) if len(leafs) == 1: - if interface_type != 'vpc': - leafs = leafs[0] - else: + if interface_type == 'vpc': module.fail_json(msg='A interface_type of "vpc" requires 2 leafs') + leafs = leafs[0] elif len(leafs) == 2: - if interface_type == 'vpc': - leafs = "-".join(leafs) - else: + if interface_type != 'vpc': module.fail_json(msg='The interface_types "switch_port", "port_channel", and "fex" \ do not support using multiple leafs for a single binding') + leafs = "-".join(leafs) else: module.fail_json(msg='The "leafs" parameter must not have more than 2 entries') interface = module.params['interface'] extpaths = module.params['extpaths'] state = module.params['state'] - static_path = '' if encap_id is not None: - if encap_id in range(1, 4097): - encap_id = 'vlan-{0}'.format(encap_id) - else: + if encap_id not in range(1, 4097): module.fail_json(msg='Valid VLAN assigments are from 1 to 4096') + encap_id = 'vlan-{0}'.format(encap_id) if primary_encap_id is not None: - if primary_encap_id in range(1, 4097): - primary_encap_id = 'vlan-{0}'.format(primary_encap_id) - else: + if primary_encap_id not in range(1, 4097): module.fail_json(msg='Valid VLAN assigments are from 1 to 4096') + primary_encap_id = 'vlan-{0}'.format(primary_encap_id) - INTERFACE_MODE_MAPPING = { - '802.1p': 'native', - 'access': 'untagged', - 'native': 'native', - 'regular': 'regular', - 'tagged': 'regular', - 'trunk': 'regular', - 'untagged': 'untagged', - } - - INTERFACE_TYPE_MAPPING = dict( - fex='topology/pod-{0}/paths-{1}/extpaths-{2}/pathep-[eth{3}]'.format(pod_id, leafs, extpaths, interface), - port_channel='topology/pod-{0}/paths-{1}/pathep-[{2}]'.format(pod_id, leafs, interface), - switch_port='topology/pod-{0}/paths-{1}/pathep-[eth{2}]'.format(pod_id, leafs, interface), - vpc='topology/pod-{0}/protpaths-{1}/pathep-[{2}]'.format(pod_id, leafs, interface), - ) - - static_path = INTERFACE_TYPE_MAPPING[interface_type] + static_path = INTERFACE_TYPE_MAPPING[interface_type].format(pod_id=pod_id, leafs=leafs, extpaths=extpaths, interface=interface) path_target_filter = {} if pod_id is not None and leafs is not None and interface is not None and (interface_type != 'fex' or extpaths is not None): diff --git a/lib/ansible/modules/network/aci/aci_switch_leaf_selector.py b/lib/ansible/modules/network/aci/aci_switch_leaf_selector.py index 6fbf18eaa2a..14d3f1538a7 100644 --- a/lib/ansible/modules/network/aci/aci_switch_leaf_selector.py +++ b/lib/ansible/modules/network/aci/aci_switch_leaf_selector.py @@ -17,17 +17,6 @@ module: aci_switch_leaf_selector short_description: Bind leaf selectors to switch policy leaf profiles (infra:LeafS, infra:NodeBlk, infra:RsAccNodePGrep) description: - Bind leaf selectors (with node block range and policy group) to switch policy leaf profiles on Cisco ACI fabrics. -notes: -- This module is to be used with M(aci_switch_policy_leaf_profile). - One first creates a leaf profile (infra:NodeP) and then creates an associated selector (infra:LeafS), -seealso: -- module: aci_switch_policy_leaf_profile -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(infra:LeafS), - B(infra:NodeBlk) and B(infra:RsAccNodePGrp). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: description: @@ -76,6 +65,17 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- This module is to be used with M(aci_switch_policy_leaf_profile). + One first creates a leaf profile (infra:NodeP) and then creates an associated selector (infra:LeafS), +seealso: +- module: aci_switch_policy_leaf_profile +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(infra:LeafS), + B(infra:NodeBlk) and B(infra:RsAccNodePGrp). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -233,8 +233,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py b/lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py index fd2454fcfe6..2f836744638 100644 --- a/lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py +++ b/lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py @@ -17,13 +17,6 @@ module: aci_switch_policy_leaf_profile short_description: Manage switch policy leaf profiles (infra:NodeP) description: - Manage switch policy leaf profiles on Cisco ACI fabrics. -seealso: -- module: aci_switch_policy_leaf_profile -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(infra:NodeP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: leaf_profile: @@ -44,6 +37,13 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- module: aci_switch_policy_leaf_profile +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(infra:NodeP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -182,8 +182,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_switch_policy_vpc_protection_group.py b/lib/ansible/modules/network/aci/aci_switch_policy_vpc_protection_group.py index 36780d16993..3559240f48d 100644 --- a/lib/ansible/modules/network/aci/aci_switch_policy_vpc_protection_group.py +++ b/lib/ansible/modules/network/aci/aci_switch_policy_vpc_protection_group.py @@ -17,13 +17,6 @@ module: aci_switch_policy_vpc_protection_group short_description: Manage switch policy explicit vPC protection groups (fabric:ExplicitGEp, fabric:NodePEp). description: - Manage switch policy explicit vPC protection groups on Cisco ACI fabrics. -seealso: -- module: aci_switch_policy_leaf_profile -- name: APIC Management Information Model reference - description: More information about the internal APIC classes B(fabric:ExplicitGEp) and B(fabric:NodePEp). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Bruno Calogero (@brunocalogero) version_added: '2.5' options: protection_group: @@ -61,6 +54,13 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- module: aci_switch_policy_leaf_profile +- name: APIC Management Information Model reference + description: More information about the internal APIC classes B(fabric:ExplicitGEp) and B(fabric:NodePEp). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Bruno Calogero (@brunocalogero) ''' EXAMPLES = r''' @@ -210,8 +210,8 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): diff --git a/lib/ansible/modules/network/aci/aci_taboo_contract.py b/lib/ansible/modules/network/aci/aci_taboo_contract.py index f73ce5d7dbc..a1fa5de3752 100644 --- a/lib/ansible/modules/network/aci/aci_taboo_contract.py +++ b/lib/ansible/modules/network/aci/aci_taboo_contract.py @@ -17,16 +17,6 @@ module: aci_taboo_contract short_description: Manage taboo contracts (vz:BrCP) description: - Manage taboo contracts on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(vz:BrCP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: taboo_contract: @@ -60,6 +50,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(vz:BrCP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -209,15 +209,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - taboo_contract=dict(type='str', required=False, aliases=['name']), # Not required for querying all contracts - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all contracts + taboo_contract=dict(type='str', aliases=['name']), # Not required for querying all contracts + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all contracts scope=dict(type='str', choices=['application-profile', 'context', 'global', 'tenant']), description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), diff --git a/lib/ansible/modules/network/aci/aci_tenant.py b/lib/ansible/modules/network/aci/aci_tenant.py index 3f2b481d880..eb186f5c315 100644 --- a/lib/ansible/modules/network/aci/aci_tenant.py +++ b/lib/ansible/modules/network/aci/aci_tenant.py @@ -16,12 +16,6 @@ module: aci_tenant short_description: Manage tenants (fv:Tenant) description: - Manage tenants on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:Tenant). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: tenant: @@ -43,6 +37,12 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:Tenant). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -190,14 +190,14 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - tenant=dict(type='str', required=False, aliases=['name', 'tenant_name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['name', 'tenant_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py b/lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py index bddb3da24d2..bf042f1b463 100644 --- a/lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py +++ b/lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py @@ -16,16 +16,6 @@ module: aci_tenant_action_rule_profile short_description: Manage action rule profiles (rtctrl:AttrP) description: - Manage action rule profiles on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(rtctrl:AttrP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: action_rule: @@ -51,6 +41,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(rtctrl:AttrP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -170,15 +170,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - action_rule=dict(type='str', required=False, aliases=['action_rule_name', 'name']), # Not required for querying all objects - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects + action_rule=dict(type='str', aliases=['action_rule_name', 'name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py b/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py index 11ba6c60e53..e481f3f7b43 100644 --- a/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py +++ b/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py @@ -16,16 +16,6 @@ module: aci_tenant_ep_retention_policy short_description: Manage End Point (EP) retention protocol policies (fv:EpRetPol) description: - Manage End Point (EP) retention protocol policies on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:EpRetPol). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Swetha Chunduri (@schunduri) version_added: '2.4' options: tenant: @@ -87,11 +77,21 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:EpRetPol). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Swetha Chunduri (@schunduri) ''' EXAMPLES = r''' - name: Add a new EPR policy - aci_epr_policy: + aci_tenant_ep_retention_policy: host: apic username: admin password: SomeSecretPassword @@ -107,7 +107,7 @@ EXAMPLES = r''' delegate_to: localhost - name: Remove an EPR policy - aci_epr_policy: + aci_tenant_ep_retention_policy: host: apic username: admin password: SomeSecretPassword @@ -117,7 +117,7 @@ EXAMPLES = r''' delegate_to: localhost - name: Query an EPR policy - aci_epr_policy: + aci_tenant_ep_retention_policy: host: apic username: admin password: SomeSecretPassword @@ -128,7 +128,7 @@ EXAMPLES = r''' register: query_result - name: Query all EPR policies - aci_epr_policy: + aci_tenant_ep_retention_policy: host: apic username: admin password: SomeSecretPassword @@ -242,17 +242,20 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec -BOUNCE_TRIG_MAPPING = dict(coop='protocol', rarp='rarp-flood') +BOUNCE_TRIG_MAPPING = dict( + coop='protocol', + rarp='rarp-flood', +) def main(): argument_spec = aci_argument_spec() argument_spec.update( tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects - epr_policy=dict(type='str', aliases=['epr_name', 'name']), + epr_policy=dict(type='str', aliases=['epr_name', 'name']), # Not required for querying all objects bounce_age=dict(type='int'), bounce_trigger=dict(type='str', choices=['coop', 'flood']), hold_interval=dict(type='int'), diff --git a/lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py b/lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py index 7fefc27ccbe..9fb76df8d9f 100644 --- a/lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py +++ b/lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py @@ -16,16 +16,6 @@ module: aci_tenant_span_dst_group short_description: Manage SPAN destination groups (span:DestGrp) description: - Manage SPAN destination groups on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(span:DestGrp). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Dag Wieers (@dagwieers) version_added: '2.4' options: dst_group: @@ -53,6 +43,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(span:DestGrp). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Dag Wieers (@dagwieers) ''' # FIXME: Add more, better examples @@ -172,15 +172,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - dst_group=dict(type='str', required=False, aliases=['name']), # Not required for querying all objects - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + dst_group=dict(type='str', aliases=['name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py b/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py index c58eddedc76..64ef878b717 100644 --- a/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py +++ b/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py @@ -16,16 +16,6 @@ module: aci_tenant_span_src_group short_description: Manage SPAN source groups (span:SrcGrp) description: - Manage SPAN source groups on Cisco ACI fabrics. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(span:SrcGrp). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: admin_state: @@ -60,6 +50,16 @@ options: type: str aliases: [ tenant_name ] extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(span:SrcGrp). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -180,19 +180,19 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + src_group=dict(type='str', aliases=['name']), # Not required for querying all objects admin_state=dict(type='raw'), # Turn into a boolean in v2.9 description=dict(type='str', aliases=['descr']), dst_group=dict(type='str'), - src_group=dict(type='str', required=False, aliases=['name']), # Not required for querying all objects state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py b/lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py index 59e981aff85..d5f8a5a9f30 100644 --- a/lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py +++ b/lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py @@ -16,18 +16,6 @@ module: aci_tenant_span_src_group_to_dst_group short_description: Bind SPAN source groups to destination groups (span:SpanLbl) description: - Bind SPAN source groups to associated destinaton groups on Cisco ACI fabrics. -notes: -- The C(tenant), C(src_group), and C(dst_group) must exist before using this module in your playbook. - The M(aci_tenant), M(aci_tenant_span_src_group), and M(aci_tenant_span_dst_group) modules can be used for this. -seealso: -- module: aci_tenant -- module: aci_tenant_span_src_group -- module: aci_tenant_span_dst_group -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(span:SrcGrp). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: description: @@ -56,6 +44,18 @@ options: type: str aliases: [ tenant_name ] extends_documentation_fragment: aci +notes: +- The C(tenant), C(src_group), and C(dst_group) must exist before using this module in your playbook. + The M(aci_tenant), M(aci_tenant_span_src_group), and M(aci_tenant_span_dst_group) modules can be used for this. +seealso: +- module: aci_tenant +- module: aci_tenant_span_src_group +- module: aci_tenant_span_dst_group +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(span:SrcGrp). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -175,18 +175,18 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - description=dict(type='str', aliases=['descr']), + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects dst_group=dict(type='str'), # Not required for querying all objects src_group=dict(type='str'), # Not required for querying all objects + description=dict(type='str', aliases=['descr']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_vlan_pool.py b/lib/ansible/modules/network/aci/aci_vlan_pool.py index f6ab9718b31..31503a1d644 100644 --- a/lib/ansible/modules/network/aci/aci_vlan_pool.py +++ b/lib/ansible/modules/network/aci/aci_vlan_pool.py @@ -18,13 +18,6 @@ module: aci_vlan_pool short_description: Manage VLAN pools (fvns:VlanInstP) description: - Manage VLAN pools on Cisco ACI fabrics. -seealso: -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fvns:VlanInstP). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) -- Dag Wieers (@dagwieers) version_added: '2.5' options: pool_allocation_mode: @@ -51,6 +44,13 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +seealso: +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fvns:VlanInstP). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -201,15 +201,15 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - description=dict(type='str', aliases=['descr']), pool=dict(type='str', aliases=['name', 'pool_name']), # Not required for querying all objects + description=dict(type='str', aliases=['descr']), pool_allocation_mode=dict(type='str', aliases=['allocation_mode', 'mode'], choices=['dynamic', 'static']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py b/lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py index 7df53861882..e8cb2f41798 100644 --- a/lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py +++ b/lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py @@ -18,16 +18,6 @@ module: aci_vlan_pool_encap_block short_description: Manage encap blocks assigned to VLAN pools (fvns:EncapBlk) description: - Manage VLAN encap blocks that are assigned to VLAN pools on Cisco ACI fabrics. -notes: -- The C(pool) must exist in order to add or delete a encap block. -seealso: -- module: aci_vlan_pool -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fvns:EncapBlk). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) -- Dag Wieers (@dagwieers) version_added: '2.5' options: allocation_mode: @@ -75,6 +65,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(pool) must exist in order to add or delete a encap block. +seealso: +- module: aci_vlan_pool +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fvns:EncapBlk). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) +- Dag Wieers (@dagwieers) ''' EXAMPLES = r''' @@ -237,20 +237,20 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( - allocation_mode=dict(type='str', aliases=['mode'], choices=['dynamic', 'inherit', 'static']), - description=dict(type='str', aliases=['descr']), pool=dict(type='str', aliases=['pool_name']), # Not required for querying all objects - pool_allocation_mode=dict(type='str', aliases=['pool_mode'], choices=['dynamic', 'static']), block_name=dict(type='str', aliases=['name']), # Not required for querying all objects block_end=dict(type='int', aliases=['end']), # Not required for querying all objects block_start=dict(type='int', aliases=["start"]), # Not required for querying all objects + allocation_mode=dict(type='str', aliases=['mode'], choices=['dynamic', 'inherit', 'static']), + description=dict(type='str', aliases=['descr']), + pool_allocation_mode=dict(type='str', aliases=['pool_mode'], choices=['dynamic', 'static']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) diff --git a/lib/ansible/modules/network/aci/aci_vrf.py b/lib/ansible/modules/network/aci/aci_vrf.py index 15e036dd036..15ea9485ede 100644 --- a/lib/ansible/modules/network/aci/aci_vrf.py +++ b/lib/ansible/modules/network/aci/aci_vrf.py @@ -17,16 +17,6 @@ short_description: Manage contexts or VRFs (fv:Ctx) description: - Manage contexts or VRFs on Cisco ACI fabrics. - Each context is a private network associated to a tenant, i.e. VRF. -notes: -- The C(tenant) used must exist before using this module in your playbook. - The M(aci_tenant) module can be used for this. -seealso: -- module: aci_tenant -- name: APIC Management Information Model reference - description: More information about the internal APIC class B(fv:Ctx). - link: https://developer.cisco.com/docs/apic-mim-ref/ -author: -- Jacob McGill (@jmcgill298) version_added: '2.4' options: tenant: @@ -62,6 +52,16 @@ options: choices: [ absent, present, query ] default: present extends_documentation_fragment: aci +notes: +- The C(tenant) used must exist before using this module in your playbook. + The M(aci_tenant) module can be used for this. +seealso: +- module: aci_tenant +- name: APIC Management Information Model reference + description: More information about the internal APIC class B(fv:Ctx). + link: https://developer.cisco.com/docs/apic-mim-ref/ +author: +- Jacob McGill (@jmcgill298) ''' EXAMPLES = r''' @@ -214,19 +214,19 @@ url: sample: https://10.11.12.13/api/mo/uni/tn-production.json ''' -from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils.network.aci.aci import ACIModule, aci_argument_spec def main(): argument_spec = aci_argument_spec() argument_spec.update( + tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects + vrf=dict(type='str', aliases=['context', 'name', 'vrf_name']), # Not required for querying all objects description=dict(type='str', aliases=['descr']), - policy_control_direction=dict(choices=['ingress', 'egress'], type='str'), - policy_control_preference=dict(choices=['enforced', 'unenforced'], type='str'), - state=dict(choices=['absent', 'present', 'query'], type='str', default='present'), - tenant=dict(type='str', required=False, aliases=['tenant_name']), # Not required for querying all objects - vrf=dict(type='str', required=False, aliases=['context', 'name', 'vrf_name']), # Not required for querying all objects + policy_control_direction=dict(type='str', choices=['egress', 'ingress']), + policy_control_preference=dict(type='str', choices=['enforced', 'unenforced']), + state=dict(type='str', default='present', choices=['absent', 'present', 'query']), ) module = AnsibleModule( diff --git a/test/integration/targets/aci_encap_pool_range/tasks/vlan.yml b/test/integration/targets/aci_encap_pool_range/tasks/vlan.yml index bedaab57263..26e705e1323 100644 --- a/test/integration/targets/aci_encap_pool_range/tasks/vlan.yml +++ b/test/integration/targets/aci_encap_pool_range/tasks/vlan.yml @@ -168,7 +168,7 @@ - name: missing required param - error message works aci_encap_pool_range: <<: *aci_range_present - pool_type: "{{ fake_var | default(omit) }}" + pool_type: '{{ omit }}' ignore_errors: yes register: range_present_pool_type @@ -193,7 +193,7 @@ - name: missing required param - error message works aci_encap_pool_range: <<: *aci_range_present - pool_allocation_mode: "{{ fake_var | default(omit) }}" + pool_allocation_mode: '{{ omit }}' ignore_errors: yes register: range_present_allocation @@ -220,7 +220,7 @@ - name: query vlan pool range - from, to, and name are filtered aci_encap_pool_range: &aci_range_query_filter <<: *aci_range_query - pool: "{{ fake_var | default(omit) }}" + pool: '{{ omit }}' register: range_query_from_to_name - name: query assertions @@ -238,7 +238,7 @@ - name: query vlan pool range - from and name are filtered aci_encap_pool_range: <<: *aci_range_query_filter - range_end: "{{ fake_var | default(omit) }}" + range_end: '{{ omit }}' register: range_query_from_name - name: query assertions @@ -254,7 +254,7 @@ - name: query vlan pool range - to and name are filtered aci_encap_pool_range: <<: *aci_range_query_filter - range_start: "{{ fake_var | default(omit) }}" + range_start: '{{ omit }}' register: range_query_to_name - name: query assertions @@ -270,8 +270,8 @@ - name: query vlan pool range - name is filtered aci_encap_pool_range: <<: *aci_range_query_filter - range_start: "{{ fake_var | default(omit) }}" - range_end: "{{ fake_var | default(omit) }}" + range_start: '{{ omit) }}' + range_end: '{{ omit }}' register: range_query_name - name: query assertions @@ -285,7 +285,7 @@ - name: query vlan pool range - from and to are filtered aci_encap_pool_range: <<: *aci_range_query_filter - range_name: "{{ fake_var | default(omit) }}" + range_name: '{{ omit }}' register: range_query_from_to - name: query assertions @@ -317,7 +317,7 @@ aci_encap_pool_range: <<: *aci_pool_present state: query - pool: "{{ fake_var | default(omit) }}" + pool: '{{ omit }}' register: range_query_all - name: query assertions