From d7f3d3b8671e905f21c38d1ec048cd080a53f268 Mon Sep 17 00:00:00 2001 From: Dag Wieers Date: Thu, 10 May 2018 08:47:08 +0200 Subject: [PATCH] Fix module validation checks and remove old params (#39926) This PR includes: - Fixes to the majority of module validation issues (deliberate inconsistencies between docs and arg_spec) - Removal of deprecated parameters 'method' and 'protocols' - A few typos in the documentation There are still some left-over validation errors, some are deliberate (like doc strings as default to indicate ranges, etc.) --- lib/ansible/module_utils/network/aci/aci.py | 26 +--- ...s_port_to_interface_policy_leaf_profile.py | 1 + lib/ansible/modules/network/aci/aci_ap.py | 2 - lib/ansible/modules/network/aci/aci_bd.py | 49 +++---- .../modules/network/aci/aci_bd_subnet.py | 16 +-- .../modules/network/aci/aci_bd_to_l3out.py | 2 - .../network/aci/aci_config_rollback.py | 9 +- .../network/aci/aci_config_snapshot.py | 9 +- .../modules/network/aci/aci_contract.py | 8 +- .../network/aci/aci_contract_subject.py | 21 ++- .../aci/aci_contract_subject_to_filter.py | 4 +- lib/ansible/modules/network/aci/aci_domain.py | 4 +- .../network/aci/aci_domain_to_encap_pool.py | 2 +- lib/ansible/modules/network/aci/aci_epg.py | 15 +- .../network/aci/aci_epg_monitoring_policy.py | 2 - .../network/aci/aci_epg_to_contract.py | 10 +- .../modules/network/aci/aci_epg_to_domain.py | 17 +-- lib/ansible/modules/network/aci/aci_filter.py | 2 - .../modules/network/aci/aci_filter_entry.py | 28 ++-- .../network/aci/aci_interface_policy_fc.py | 6 +- .../network/aci/aci_interface_policy_l2.py | 8 +- .../aci_interface_policy_leaf_policy_group.py | 44 +++--- .../network/aci/aci_interface_policy_lldp.py | 7 +- .../network/aci/aci_interface_policy_mcp.py | 4 +- .../aci/aci_interface_policy_port_channel.py | 26 ++-- .../aci/aci_interface_policy_port_security.py | 4 +- .../network/aci/aci_l3out_route_tag_policy.py | 4 +- lib/ansible/modules/network/aci/aci_rest.py | 1 - .../network/aci/aci_static_binding_to_epg.py | 7 +- .../network/aci/aci_switch_leaf_selector.py | 1 + .../modules/network/aci/aci_taboo_contract.py | 5 +- lib/ansible/modules/network/aci/aci_tenant.py | 2 - .../aci/aci_tenant_action_rule_profile.py | 2 - .../aci/aci_tenant_ep_retention_policy.py | 16 +-- .../network/aci/aci_tenant_span_dst_group.py | 2 - .../network/aci/aci_tenant_span_src_group.py | 4 +- .../aci_tenant_span_src_group_to_dst_group.py | 2 - lib/ansible/modules/network/aci/aci_vrf.py | 2 - .../utils/module_docs_fragments/aci.py | 2 - test/sanity/validate-modules/ignore.txt | 128 ------------------ 40 files changed, 127 insertions(+), 377 deletions(-) diff --git a/lib/ansible/module_utils/network/aci/aci.py b/lib/ansible/module_utils/network/aci/aci.py index 4aa3d8173a..e6aeebef51 100644 --- a/lib/ansible/module_utils/network/aci/aci.py +++ b/lib/ansible/module_utils/network/aci/aci.py @@ -70,7 +70,7 @@ def aci_argument_spec(): password=dict(type='str', no_log=True), private_key=dict(type='path', aliases=['cert_key']), # Beware, this is not the same as client_key ! certificate_name=dict(type='str', aliases=['cert_name']), # Beware, this is not the same as client_cert ! - output_level=dict(type='str', choices=['debug', 'info', 'normal']), + output_level=dict(type='str', default='normal', choices=['debug', 'info', 'normal']), timeout=dict(type='int', default=30), use_proxy=dict(type='bool', default=True), use_ssl=dict(type='bool', default=True), @@ -210,26 +210,14 @@ class ACIModule(object): ''' Set protocol based on use_ssl parameter ''' # Set protocol for further use - if 'protocol' in self.params and self.params['protocol'] in ('http', 'https'): - self.module.deprecate("Parameter 'protocol' is deprecated, please use 'use_ssl' instead.", '2.6') - elif 'protocol' not in self.params or self.params['protocol'] is None: - self.params['protocol'] = 'https' if self.params.get('use_ssl', True) else 'http' - else: - self.module.fail_json(msg="Parameter 'protocol' needs to be one of ( http, https )") + self.params['protocol'] = 'https' if self.params.get('use_ssl', True) else 'http' def define_method(self): ''' Set method based on state parameter ''' - # Handle deprecated method/action parameter - if self.params['method']: - # Deprecate only if state was a valid option (not for aci_rest) - if 'state' in self.module.argument_spec: - self.module.deprecate("Parameter 'method' or 'action' is deprecated, please use 'state' instead", '2.6') - method_map = dict(delete='absent', get='query', post='present') - self.params['state'] = method_map[self.params['method']] - else: - state_map = dict(absent='delete', present='post', query='get') - self.params['method'] = state_map[self.params['state']] + # Set method for further use + state_map = dict(absent='delete', present='post', query='get') + self.params['method'] = state_map[self.params['state']] def login(self): ''' Log in to APIC ''' @@ -467,9 +455,9 @@ class ACIModule(object): self.path = path if 'port' in self.params and self.params['port'] is not None: - self.url = '{0}://{1}:{2}/{3}'.format(self.module.params['protocol'], self.module.params['host'], self.module.params['port'], path) + self.url = '{protocol}://{host}:{port}/{path}'.format(path=path, **self.module.params) else: - self.url = '{0}://{1}/{2}'.format(self.module.params['protocol'], self.module.params['host'], path) + self.url = '{protocol}://{host}/{path}'.format(path=path, **self.module.params) self.filter_string = filter_string def _construct_url_1(self, obj, child_includes): 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 625cda00ce..6260611a28 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 @@ -231,6 +231,7 @@ def main(): 'description': dict(typ='str'), 'leaf_port_blk': dict(type='str', aliases=['leaf_port_blk_name']), 'leaf_port_blk_description': dict(type='str'), + # NOTE: Keyword 'from' is a reserved word in python, so we need it as a string 'from': dict(type='str', aliases=['fromPort', 'from_port_range']), 'to': dict(type='str', aliases=['toPort', 'to_port_range']), 'policy_group': dict(type='str', aliases=['policy_group_name']), diff --git a/lib/ansible/modules/network/aci/aci_ap.py b/lib/ansible/modules/network/aci/aci_ap.py index cda96c26fe..1c50f1d065 100644 --- a/lib/ansible/modules/network/aci/aci_ap.py +++ b/lib/ansible/modules/network/aci/aci_ap.py @@ -202,8 +202,6 @@ def main(): 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), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_bd.py b/lib/ansible/modules/network/aci/aci_bd.py index 4b2874382e..553f969793 100644 --- a/lib/ansible/modules/network/aci/aci_bd.py +++ b/lib/ansible/modules/network/aci/aci_bd.py @@ -28,9 +28,8 @@ options: arp_flooding: description: - Determines if the Bridge Domain should flood ARP traffic. - - The APIC defaults new Bridge Domains to C(no). + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' bd: description: - The name of the Bridge Domain. @@ -38,43 +37,37 @@ options: bd_type: description: - The type of traffic on the Bridge Domain. - - The APIC defaults new Bridge Domains to C(ethernet). + - The APIC defaults to C(ethernet) when unset during creation. choices: [ ethernet, fc ] - default: ethernet description: description: - Description for the Bridge Domain. enable_multicast: description: - - Determines if PIM is enabled - - The APIC defaults new Bridge Domains to C(no). + - Determines if PIM is enabled. + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' enable_routing: description: - Determines if IP forwarding should be allowed. - - The APIC defaults new Bridge Domains to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool - default: 'yes' endpoint_clear: description: - Clears all End Points in all Leaves when C(yes). - - The APIC defaults new Bridge Domains to C(no). - The value is not reset to disabled once End Points have been cleared; that requires a second task. + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' endpoint_move_detect: description: - Determines if GARP should be enabled to detect when End Points move. - - The APIC defaults new Bridge Domains to C(garp). + - The APIC defaults to C(garp) when unset during creation. choices: [ default, garp ] - default: garp endpoint_retention_action: description: - Determines if the Bridge Domain should inherit or resolve the End Point Retention Policy. - - The APIC defaults new Bridge Domain to End Point Retention Policies to C(resolve). + - The APIC defaults to C(resolve) when unset during creation. choices: [ inherit, resolve ] - default: resolve endpoint_retention_policy: description: - The name of the End Point Retention Policy the Bridge Domain should use when @@ -86,7 +79,7 @@ options: ip_learning: description: - Determines if the Bridge Domain should learn End Point IPs. - - The APIC defaults new Bridge Domains to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool ipv6_nd_policy: description: @@ -95,33 +88,29 @@ options: l2_unknown_unicast: description: - Determines what forwarding method to use for unknown l2 destinations. - - The APIC defaults new Bridge domains to C(proxy). + - The APIC defaults to C(proxy) when unset during creation. choices: [ proxy, flood ] - default: proxy l3_unknown_multicast: description: - Determines the forwarding method to use for unknown multicast destinations. - - The APCI defaults new Bridge Domains to C(flood). + - The APIC defaults to C(flood) when unset during creation. choices: [ flood, opt-flood ] - default: flood limit_ip_learn: description: - Determines if the BD should limit IP learning to only subnets owned by the Bridge Domain. - - The APIC defaults new Bridge Domains to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool - default: 'yes' mac_address: description: - The MAC Address to assign to the C(bd) instead of using the default. - default: 00:22:BD:F8:19:FF + - The APIC defaults to C(00:22:BD:F8:19:FF) when unset during creation. aliases: [ mac ] version_added: '2.5' multi_dest: description: - Determines the forwarding method for L2 multicast, broadcast, and link layer traffic. - - The APIC defaults new Bridge Domains to C(bd-flood). + - The APIC defaults to C(bd-flood) when unset during creation. choices: [ bd-flood, drop, encap-flood ] - default: bd-flood state: description: - Use C(present) or C(absent) for adding or removing. @@ -331,19 +320,17 @@ def main(): igmp_snoop_policy=dict(type='str'), ip_learning=dict(type='bool'), ipv6_nd_policy=dict(type='str'), - l2_unknown_unicast=dict(choices=['proxy', 'flood']), - l3_unknown_multicast=dict(choices=['flood', 'opt-flood']), + l2_unknown_unicast=dict(type='str', choices=['proxy', 'flood']), + l3_unknown_multicast=dict(type='str', choices=['flood', 'opt-flood']), limit_ip_learn=dict(type='bool'), mac_address=dict(type='str', aliases=['mac']), - multi_dest=dict(choices=['bd-flood', 'drop', 'encap-flood']), - state=dict(choices=['absent', 'present', 'query'], type='str', default='present'), + multi_dest=dict(type='str', choices=['bd-flood', 'drop', 'encap-flood']), + state=dict(type='str', default='present', choices=['absent', 'present', 'query']), tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects vrf=dict(type='str', aliases=['vrf_name']), gateway_ip=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4 scope=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4 subnet_mask=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4 - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_bd_subnet.py b/lib/ansible/modules/network/aci/aci_bd_subnet.py index 1390967185..f0cd569b75 100644 --- a/lib/ansible/modules/network/aci/aci_bd_subnet.py +++ b/lib/ansible/modules/network/aci/aci_bd_subnet.py @@ -38,9 +38,8 @@ options: enable_vip: description: - Determines if the Subnet should be treated as a VIP; used when the BD is extended to multiple sites. - - The APIC defaults new Subnets to C(no). + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' gateway: description: - The IPv4 or IPv6 gateway address for the Subnet. @@ -58,9 +57,8 @@ options: description: - Determines if the Subnet is preferred over all available Subnets. Only one Subnet per Address Family (IPv4/IPv6). can be preferred in the Bridge Domain. - - The APIC defaults new Subnets to C(no). + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' route_profile: description: - The Route Profile to the associate with the Subnet. @@ -75,23 +73,19 @@ options: hosts in other VRFs. - The shared option limits communication to hosts in either the same VRF or the shared VRF. - The value is a list of options, C(private) and C(public) are mutually exclusive, but both can be used with C(shared). - - The APIC defaults new Subnets to C(private). + - The APIC defaults to C(private) when unset during creation. choices: - private - public - shared - - [ private, shared ] - - [ public, shared ] - default: private subnet_control: description: - Determines the Subnet's Control State. - The C(querier_ip) option is used to treat the gateway_ip as an IGMP querier source IP. - The C(nd_ra) option is used to treate the gateway_ip address as a Neighbor Discovery Router Advertisement Prefix. - The C(no_gw) option is used to remove default gateway functionality from the gateway address. - - The APIC defaults new Subnets to C(nd_ra). + - The APIC defaults to C(nd_ra) when unset during creation. choices: [ nd_ra, no_gw, querier_ip, unspecified ] - default: nd_ra subnet_name: description: - The name of the Subnet. @@ -330,8 +324,6 @@ def main(): subnet_control=dict(type='str', choices=['nd_ra', 'no_gw', 'querier_ip', 'unspecified']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 ff1708343c..675bc7d72d 100644 --- a/lib/ansible/modules/network/aci/aci_bd_to_l3out.py +++ b/lib/ansible/modules/network/aci/aci_bd_to_l3out.py @@ -166,8 +166,6 @@ def main(): 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 - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) 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 d0985769ae..a783cad46b 100644 --- a/lib/ansible/modules/network/aci/aci_config_rollback.py +++ b/lib/ansible/modules/network/aci/aci_config_rollback.py @@ -41,24 +41,21 @@ options: fail_on_decrypt: description: - Determines if the APIC should fail the rollback if unable to decrypt secured data. - - The APIC defaults new Import Policies to C(yes). + - The APIC defaults to C(yes) when unset. type: bool - default: 'yes' import_mode: description: - Determines how the import should be handled by the APIC. - - The APIC defaults new Import Policies to C(atomic). + - The APIC defaults to C(atomic) when unset. choices: [ atomic, best-effort ] - default: atomic import_policy: description: - The name of the Import Policy to use for config rollback. import_type: description: - Determines how the current and snapshot configuration should be compared for replacement. - - The APIC defaults new Import Policies to C(replace). + - The APIC defaults to C(replace) when unset. choices: [ merge, replace ] - default: replace snapshot: description: - The name of the snapshot to rollback to, or the base snapshot to use for comparison. diff --git a/lib/ansible/modules/network/aci/aci_config_snapshot.py b/lib/ansible/modules/network/aci/aci_config_snapshot.py index 17222b0bbf..671ffb13ad 100644 --- a/lib/ansible/modules/network/aci/aci_config_snapshot.py +++ b/lib/ansible/modules/network/aci/aci_config_snapshot.py @@ -39,21 +39,18 @@ options: format: description: - Sets the config backup to be formatted in JSON or XML. - - The APIC defaults new Export Policies to C(json) + - The APIC defaults to C(json) when unset. choices: [ json, xml ] - default: json include_secure: description: - Determines if secure information should be included in the backup. - - The APIC defaults new Export Policies to C(yes). + - The APIC defaults to C(yes) when unset. type: bool - default: 'yes' max_count: description: - Determines how many snapshots can exist for the Export Policy before the APIC starts to rollover. - - The APIC defaults new Export Policies to C(3). + - The APIC defaults to C(3) when unset. choices: [ range between 1 and 10 ] - default: 3 snapshot: description: - The name of the snapshot to delete. diff --git a/lib/ansible/modules/network/aci/aci_contract.py b/lib/ansible/modules/network/aci/aci_contract.py index ef61ec84c3..bfc2d60e54 100644 --- a/lib/ansible/modules/network/aci/aci_contract.py +++ b/lib/ansible/modules/network/aci/aci_contract.py @@ -44,18 +44,18 @@ options: scope: description: - The scope of a service contract. + - The APIC defaults to C(context) when unset during creation. choices: [ application-profile, context, global, tenant ] - default: context priority: description: - The desired QoS class to be used. - default: unspecified + - The APIC defaults to C(unspecified) when unset during creation. choices: [ level1, level2, level3, unspecified ] dscp: description: - The target Differentiated Service (DSCP) value. + - The APIC defaults to C(unspecified) when unset during creation. choices: [ AF11, AF12, AF13, AF21, AF22, AF23, AF31, AF32, AF33, AF41, AF42, AF43, CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, EF, VA, unspecified ] - default: unspecified aliases: [ target ] state: description: @@ -226,8 +226,6 @@ def main(): 'CS0', 'CS1', 'CS2', 'CS3', 'CS4', 'CS5', 'CS6', 'CS7', 'EF', 'VA', 'unspecified'], aliases=['target']), # No default provided on purpose state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_contract_subject.py b/lib/ansible/modules/network/aci/aci_contract_subject.py index 6dd798a1e1..0e75715faf 100755 --- a/lib/ansible/modules/network/aci/aci_contract_subject.py +++ b/lib/ansible/modules/network/aci/aci_contract_subject.py @@ -41,23 +41,20 @@ options: description: - Determines if the APIC should reverse the src and dst ports to allow the return traffic back, since ACI is stateless filter. - - The APIC defaults new Contract Subjects to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool - default: 'yes' priority: description: - The QoS class. - - The APIC defaults new Contract Subjects to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ level1, level2, level3, unspecified ] - default: unspecified dscp: description: - The target DSCP. - - The APIC defaults new Contract Subjects to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. 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 ] - default: unspecified description: description: - Description for the contract subject. @@ -65,15 +62,13 @@ options: consumer_match: description: - The match criteria across consumers. - - The APIC defaults new Contract Subjects to C(at_least_one). + - The APIC defaults to C(at_least_one) when unset during creation. choices: [ all, at_least_one, at_most_one, none ] - default: at_least_one provider_match: description: - The match criteria across providers. - - The APIC defaults new Contract Subjects to C(at_least_one). + - The APIC defaults to C(at_least_one) when unset during creation. choices: [ all, at_least_one, at_most_one, none ] - default: at_least_one state: description: - Use C(present) or C(absent) for adding or removing. @@ -245,15 +240,15 @@ def main(): tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects priority=dict(type='str', choices=['unspecified', 'level1', 'level2', 'level3']), reverse_filter=dict(type='bool'), - dscp=dict(type='str', aliases=['target']), + dscp=dict(type='str', aliases=['target'], + choices=['AF11', 'AF12', 'AF13', 'AF21', 'AF22', 'AF23', 'AF31', 'AF32', 'AF33', 'AF41', 'AF42', 'AF43', + 'CS0', 'CS1', 'CS2', 'CS3', 'CS4', 'CS5', 'CS6', 'CS7', 'EF', 'VA', 'unspecified']), description=dict(type='str', aliases=['descr']), consumer_match=dict(type='str', choices=['all', 'at_least_one', 'at_most_one', 'none']), provider_match=dict(type='str', choices=['all', 'at_least_one', 'at_most_one', 'none']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), directive=dict(type='str', removed_in_version='2.4'), # Deprecated starting from v2.4 filter=dict(type='str', aliases=['filter_name'], removed_in_version='2.4'), # Deprecated starting from v2.4 - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 e4bc884705..ddd7351262 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 @@ -36,7 +36,7 @@ options: log: description: - Determines if the binding should be set to log. - - The APIC defaults new Subject to Filter bindings to C(none). + - The APIC defaults to C(none) when unset during creation. choices: [ log, none ] aliases: [ directive ] subject: @@ -222,8 +222,6 @@ def main(): 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 state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_domain.py b/lib/ansible/modules/network/aci/aci_domain.py index e5ed9c344d..ac14571f15 100644 --- a/lib/ansible/modules/network/aci/aci_domain.py +++ b/lib/ansible/modules/network/aci/aci_domain.py @@ -41,8 +41,8 @@ options: dscp: description: - The target Differentiated Service (DSCP) value. + - The APIC defaults to C(unspecified) when unset during creation. choices: [ AF11, AF12, AF13, AF21, AF22, AF23, AF31, AF32, AF33, AF41, AF42, AF43, CS0, CS1, CS2, CS3, CS4, CS5, CS6, CS7, EF, VA, unspecified ] - default: unspecified aliases: [ target ] encap_mode: description: @@ -66,8 +66,8 @@ options: vswitch: description: - The virtual switch to use for vmm domains. + - The APIC defaults to C(default) when unset during creation. choices: [ avs, default, dvs, unknown ] - default: default extends_documentation_fragment: aci ''' 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 705e7d3f11..722a45740b 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 @@ -48,7 +48,7 @@ options: description: - The encap type of C(pool). required: yes - choices: [ vlan, vsan, vxsan ] + choices: [ vlan, vsan, vxlan ] state: description: - Use C(present) or C(absent) for adding or removing. diff --git a/lib/ansible/modules/network/aci/aci_epg.py b/lib/ansible/modules/network/aci/aci_epg.py index 37044e8289..c8d26dee68 100644 --- a/lib/ansible/modules/network/aci/aci_epg.py +++ b/lib/ansible/modules/network/aci/aci_epg.py @@ -46,14 +46,14 @@ options: aliases: [ bd_name, bridge_domain ] priority: description: - - QoS class. + - The QoS class. + - The APIC defaults to C(unspecified) when unset during creation. choices: [ level1, level2, level3, unspecified ] - default: unspecified intra_epg_isolation: description: - - Intra EPG Isolation. + - The Intra EPG Isolation. + - The APIC defaults to C(unenforced) when unset during creation. choices: [ enforced, unenforced ] - default: unenforced description: description: - Description for the EPG. @@ -61,15 +61,14 @@ options: fwd_control: description: - The forwarding control used by the EPG. - - The APIC defaults new EPGs to C(none). + - The APIC defaults to C(none) when unset during creation. choices: [ none, proxy-arp ] - default: none preferred_group: description: - Whether ot not the EPG is part of the Preferred Group and can communicate without contracts. - This is very convenient for migration scenarios, or when ACI is used for network automation but not for policy. + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' version_added: '2.5' state: description: @@ -280,8 +279,6 @@ def main(): fwd_control=dict(type='str', choices=['none', 'proxy-arp']), preferred_group=dict(type='bool'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 e73d10143f..fb6ad4d785 100644 --- a/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py +++ b/lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py @@ -175,8 +175,6 @@ def main(): tenant=dict(type='str', required=False, 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 2bdcaf0fdc..82c186824e 100644 --- a/lib/ansible/modules/network/aci/aci_epg_to_contract.py +++ b/lib/ansible/modules/network/aci/aci_epg_to_contract.py @@ -37,7 +37,7 @@ options: description: - Determines if the EPG should Provide or Consume the Contract. required: yes - choices: [ consumer, proivder ] + choices: [ consumer, provider ] epg: description: - The name of the end point group. @@ -45,15 +45,13 @@ options: priority: description: - QoS class. - - The APIC defaults new EPG to Contract bindings to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ level1, level2, level3, unspecified ] - default: unspecified provider_match: description: - The matching algorithm for Provided Contracts. - - The APIC defaults new EPG to Provided Contracts to C(at_least_one). + - The APIC defaults to C(at_least_one) when unset during creation. choices: [ all, at_least_one, at_most_one, none ] - default: at_least_one state: description: - Use C(present) or C(absent) for adding or removing. @@ -236,8 +234,6 @@ def main(): provider_match=dict(type='str', choices=['all', 'at_least_one', 'at_most_one', 'none']), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 d4d14b35f6..b6b3dd210a 100644 --- a/lib/ansible/modules/network/aci/aci_epg_to_domain.py +++ b/lib/ansible/modules/network/aci/aci_epg_to_domain.py @@ -31,9 +31,8 @@ options: allow_useg: description: - Allows micro-segmentation. - - The APIC defaults new EPG to Domain bindings to use C(encap). + - The APIC defaults to C(encap) when unset during creation. choices: [ encap, useg ] - default: encap ap: description: - Name of an existing application network profile, that will contain the EPGs. @@ -41,9 +40,8 @@ options: deploy_immediacy: description: - Determines when the policy is pushed to hardware Policy CAM. - - The APIC defaults new EPG to Domain bindings to C(lazy). + - The APIC defaults to C(lazy) when unset during creation. choices: [ immediate, lazy ] - default: lazy domain: description: - Name of the physical or virtual domain being associated with the EPG. @@ -61,9 +59,8 @@ options: encap_mode: description: - The ecapsulataion method to be used. - - The APIC defaults new EPG to Domain bindings to C(auto). + - The APIC defaults to C(auto) when unset during creation. choices: [ auto, vlan, vxlan ] - default: auto epg: description: - Name of the end point group. @@ -71,9 +68,8 @@ options: netflow: description: - Determines if netflow should be enabled. - - The APIC defaults new EPG to Domain binings to C(no). + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' primary_encap: description: - Determines the primary VLAN ID when using useg. @@ -81,9 +77,8 @@ options: resolution_immediacy: description: - Determines when the policies should be resolved and available. - - The APIC defaults new EPG to Domain bindings to C(lazy). + - The APIC defaults to C(lazy) when unset during creation. choices: [ immediate, lazy, pre-provision ] - default: lazy state: description: - Use C(present) or C(absent) for adding or removing. @@ -284,8 +279,6 @@ def main(): state=dict(type='str', default='present', choices=['absent', 'present', 'query']), tenant=dict(type='str', aliases=['tenant_name']), # Not required for querying all objects vm_provider=dict(type='str', choices=['cloudfoundry', 'kubernetes', 'microsoft', 'openshift', 'openstack', 'redhat', 'vmware']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_filter.py b/lib/ansible/modules/network/aci/aci_filter.py index d1f484cf6c..11d909cfe6 100644 --- a/lib/ansible/modules/network/aci/aci_filter.py +++ b/lib/ansible/modules/network/aci/aci_filter.py @@ -203,8 +203,6 @@ def main(): tenant=dict(type='str', required=False, 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_filter_entry.py b/lib/ansible/modules/network/aci/aci_filter_entry.py index 76a35da445..faa8fc5139 100644 --- a/lib/ansible/modules/network/aci/aci_filter_entry.py +++ b/lib/ansible/modules/network/aci/aci_filter_entry.py @@ -28,9 +28,8 @@ options: arp_flag: description: - The arp flag to use when the ether_type is arp. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ arp_reply, arp_request, unspecified ] - default: unspecified description: description: - Description for the Filter Entry. @@ -38,21 +37,18 @@ options: dst_port: description: - Used to set both destination start and end ports to the same value when ip_protocol is tcp or udp. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ Valid TCP/UDP Port Ranges] - default: unspecified dst_port_end: description: - Used to set the destination end port when ip_protocol is tcp or udp. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ Valid TCP/UDP Port Ranges] - default: unspecified dst_port_start: description: - Used to set the destination start port when ip_protocol is tcp or udp. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ Valid TCP/UDP Port Ranges] - default: unspecified entry: description: - Then name of the Filter Entry. @@ -60,9 +56,8 @@ options: ether_type: description: - The Ethernet type. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ arp, fcoe, ip, mac_security, mpls_ucast, trill, unspecified ] - default: unspecified filter: description: The name of Filter that the entry should belong to. @@ -70,21 +65,18 @@ options: icmp_msg_type: description: - ICMPv4 message type; used when ip_protocol is icmp. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ dst_unreachable, echo, echo_reply, src_quench, time_exceeded, unspecified ] - default: unspecified icmp6_msg_type: description: - ICMPv6 message type; used when ip_protocol is icmpv6. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ dst_unreachable, echo_request, echo_reply, neighbor_advertisement, neighbor_solicitation, redirect, time_exceeded, unspecified ] - default: unspecified ip_protocol: description: - The IP Protocol type when ether_type is ip. - - The APIC defaults new Filter Entries to C(unspecified). + - The APIC defaults to C(unspecified) when unset during creation. choices: [ eigrp, egp, icmp, icmpv6, igmp, igp, l2tp, ospfigp, pim, tcp, udp, unspecified ] - default: unspecified state: description: - present, absent, query @@ -93,6 +85,7 @@ options: stateful: description: - Determines the statefulness of the filter entry. + type: bool tenant: description: - The name of the tenant. @@ -224,8 +217,7 @@ from ansible.module_utils.basic import AnsibleModule VALID_ARP_FLAGS = ['arp_reply', 'arp_request', 'unspecified'] VALID_ETHER_TYPES = ['arp', 'fcoe', 'ip', 'mac_security', 'mpls_ucast', 'trill', 'unspecified'] -VALID_ICMP_TYPES = ['dst_unreachable', 'echo', 'echo_reply', 'src_quench', 'time_exceeded', - 'unspecified', 'echo-rep', 'dst-unreach'] +VALID_ICMP_TYPES = ['dst_unreachable', 'echo', 'echo_reply', 'src_quench', 'time_exceeded', 'unspecified'] VALID_ICMP6_TYPES = ['dst_unreachable', 'echo_request', 'echo_reply', 'neighbor_advertisement', 'neighbor_solicitation', 'redirect', 'time_exceeded', 'unspecified'] VALID_IP_PROTOCOLS = ['eigrp', 'egp', 'icmp', 'icmpv6', 'igmp', 'igp', 'l2tp', 'ospfigp', 'pim', 'tcp', 'udp', 'unspecified'] 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 8297ce8437..76fc3ad269 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_fc.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_fc.py @@ -34,9 +34,9 @@ options: aliases: [ descr ] port_mode: description: - - Port Mode + - The Port Mode to use. + - The APIC defaults to C(f) when unset during creation. choices: [ f, np ] - default: f state: description: - Use C(present) or C(absent) for adding or removing. @@ -173,8 +173,6 @@ def main(): 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 6c36be554b..cea7b04a36 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_l2.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_l2.py @@ -35,18 +35,18 @@ options: qinq: description: - Determines if QinQ is disabled or if the port should be considered a core or edge port. + - The APIC defaults to C(disabled) when unset during creation. choices: [ core, disabled, edge ] - default: disabled vepa: description: - Determines if Virtual Ethernet Port Aggregator is disabled or enabled. + - The APIC defaults to C(disabled) when unset during creation. choices: [ disabled, enabled ] - default: disabled vlan_scope: description: - The scope of the VLAN. + - The APIC defaults to C(global) when unset during creation. choices: [ global, portlocal ] - default: global state: description: - Use C(present) or C(absent) for adding or removing. @@ -187,8 +187,6 @@ def main(): qinq=dict(type='str', choices=['core', 'disabled', 'edge']), vepa=dict(type='raw'), # Turn into a boolean in v2.9 state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 938246fcbf..1ee7ce8795 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 @@ -272,30 +272,30 @@ from ansible.module_utils.basic import AnsibleModule 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']), + 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', aliases=['lag_type_name'], choices=['leaf', 'link', 'node']), # Not required for querying all objects - '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']), - 'lldp_policy': dict(type='str', aliases=['lldp_policy_name']), - 'stp_interface_policy': dict(type='str', aliases=['stp_interface_policy_name']), - 'egress_data_plane_policing_policy': dict(type='str', aliases=['egress_data_plane_policing_policy_name']), - 'ingress_data_plane_policing_policy': dict(type='str', aliases=['ingress_data_plane_policing_policy_name']), - 'priority_flow_control_policy': dict(type='str', aliases=['priority_flow_control_policy_name']), - 'fibre_channel_interface_policy': dict(type='str', aliases=['fibre_channel_interface_policy_name']), - 'slow_drain_policy': dict(type='str', aliases=['slow_drain_policy_name']), - 'port_channel_policy': dict(type='str', aliases=['port_channel_policy_name']), - 'monitoring_policy': dict(type='str', aliases=['monitoring_policy_name']), - 'storm_control_interface_policy': dict(type='str', aliases=['storm_control_interface_policy_name']), - 'l2_interface_policy': dict(type='str', aliases=['l2_interface_policy_name']), - 'port_security_policy': dict(type='str', aliases=['port_security_policy_name']), - 'aep': dict(type='str', aliases=['aep_name']), - 'state': dict(type='str', default='present', choices=['absent', 'present', 'query']), - }) + lag_type=dict(type='str', aliases=['lag_type_name'], choices=['leaf', 'link', 'node']), # Not required for querying all objects + 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']), + lldp_policy=dict(type='str', aliases=['lldp_policy_name']), + stp_interface_policy=dict(type='str', aliases=['stp_interface_policy_name']), + egress_data_plane_policing_policy=dict(type='str', aliases=['egress_data_plane_policing_policy_name']), + ingress_data_plane_policing_policy=dict(type='str', aliases=['ingress_data_plane_policing_policy_name']), + priority_flow_control_policy=dict(type='str', aliases=['priority_flow_control_policy_name']), + fibre_channel_interface_policy=dict(type='str', aliases=['fibre_channel_interface_policy_name']), + slow_drain_policy=dict(type='str', aliases=['slow_drain_policy_name']), + port_channel_policy=dict(type='str', aliases=['port_channel_policy_name']), + monitoring_policy=dict(type='str', aliases=['monitoring_policy_name']), + storm_control_interface_policy=dict(type='str', aliases=['storm_control_interface_policy_name']), + l2_interface_policy=dict(type='str', aliases=['l2_interface_policy_name']), + port_security_policy=dict(type='str', aliases=['port_security_policy_name']), + aep=dict(type='str', aliases=['aep_name']), + state=dict(type='str', default='present', choices=['absent', 'present', 'query']), + ) module = AnsibleModule( argument_spec=argument_spec, 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 d5b7c9c906..0a483f14ab 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_lldp.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_lldp.py @@ -35,14 +35,13 @@ options: receive_state: description: - Enable or disable Receive state. - required: yes + - The APIC defaults to C(enabled) when unset during creation. choices: [ disabled, enabled ] - default: enabled transmit_state: description: - Enable or Disable Transmit state. + - The APIC defaults to C(enabled) when unset during creation. choices: [ disabled, enabled ] - default: enabled state: description: - Use C(present) or C(absent) for adding or removing. @@ -181,8 +180,6 @@ def main(): receive_state=dict(type='raw'), # Turn into a boolean in v2.9 transmit_state=dict(type='raw'), # Turn into a boolean in v2.9 state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 90f56fe29a..2a896a98f3 100644 --- a/lib/ansible/modules/network/aci/aci_interface_policy_mcp.py +++ b/lib/ansible/modules/network/aci/aci_interface_policy_mcp.py @@ -35,8 +35,8 @@ options: admin_state: description: - Enable or disable admin state. + - The APIC defaults to C(enable) when unset during creation. choices: [ disable, enable ] - default: enable state: description: - Use C(present) or C(absent) for adding or removing. @@ -173,8 +173,6 @@ def main(): 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 29c941587e..2c1ee2c0c6 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 @@ -35,62 +35,54 @@ options: max_links: description: - Maximum links (range 1-16). - - The APIC defaults new Port Channel Policies to C(16). + - The APIC defaults to C(16) when unset during creation. choices: [ Ranges from 1 to 16 ] - default: 16 min_links: description: - Minimum links (range 1-16). - - The APIC defaults new Port Channel Policies to C(1). + - The APIC defaults to C(1) when unset during creation. choices: [ Ranges from 1 to 16 ] - default: 1 mode: description: - Port channel interface policy mode. - Determines the LACP method to use for forming port-channels. - - The APIC defaults new Port Channel Polices to C(off). + - The APIC defaults to C(off) when unset during creation. choices: [ active, mac-pin, mac-pin-nicload, 'off', passive ] - default: 'off' fast_select: description: - Determines if Fast Select is enabled for Hot Standby Ports. - This makes up the LACP Policy Control Policy; if one setting is defined, then all other Control Properties left undefined or set to false will not exist after the task is ran. - - The APIC defaults new LACP Policies to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool - default: 'yes' graceful_convergence: description: - Determines if Graceful Convergence is enabled. - This makes up the LACP Policy Control Policy; if one setting is defined, then all other Control Properties left undefined or set to false will not exist after the task is ran. - - The APIC defaults new LACP Policies to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool - default: 'yes' load_defer: description: - Determines if Load Defer is enabled. - This makes up the LACP Policy Control Policy; if one setting is defined, then all other Control Properties left undefined or set to false will not exist after the task is ran. - - The APIC defaults new LACP Policies to C(no). + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' suspend_individual: description: - Determines if Suspend Individual is enabled. - This makes up the LACP Policy Control Policy; if one setting is defined, then all other Control Properties left undefined or set to false will not exist after the task is ran. - - The APIC defaults new LACP Policies to C(yes). + - The APIC defaults to C(yes) when unset during creation. type: bool - default: 'yes' symmetric_hash: description: - Determines if Symmetric Hashing is enabled. - This makes up the LACP Policy Control Policy; if one setting is defined, then all other Control Properties left undefined or set to false will not exist after the task is ran. - - The APIC defaults new LACP Policies to C(no). + - The APIC defaults to C(no) when unset during creation. type: bool - default: 'no' state: description: - Use C(present) or C(absent) for adding or removing. @@ -235,8 +227,6 @@ def main(): suspend_individual=dict(type='bool'), symmetric_hash=dict(type='bool'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 5c0042cd32..2246039022 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 @@ -35,7 +35,7 @@ options: max_end_points: description: - Maximum number of end points (range 0-12000). - - The APIC defaults new port-security policies to C(0). + - The APIC defaults to C(0) when unset during creation. state: description: - Use C(present) or C(absent) for adding or removing. @@ -172,8 +172,6 @@ def main(): description=dict(type='str', aliases=['descr']), max_end_points=dict(type='int'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 2c2514187a..2e392c87f1 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 @@ -42,7 +42,7 @@ options: tag: description: - The value of the route tag (range 0-4294967295). - default: '4294967295' + - The APIC defaults to C(4294967295) when unset during creation. state: description: - Use C(present) or C(absent) for adding or removing. @@ -181,8 +181,6 @@ def main(): description=dict(type='str', aliases=['descr']), tag=dict(type='int'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_rest.py b/lib/ansible/modules/network/aci/aci_rest.py index 1fd2b4b858..9cbbcccac2 100644 --- a/lib/ansible/modules/network/aci/aci_rest.py +++ b/lib/ansible/modules/network/aci/aci_rest.py @@ -320,7 +320,6 @@ def main(): method=dict(type='str', default='get', choices=['delete', 'get', 'post'], aliases=['action']), src=dict(type='path', aliases=['config_file']), content=dict(type='raw'), - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 42b8652276..e30d2fddda 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 @@ -53,23 +53,20 @@ options: deploy_immediacy: description: - The Deployement Immediacy of Static EPG on PC, VPC or Interface. - - The APIC defaults the Deployement Immediacy to C(lazy). + - The APIC defaults to C(lazy) when unset during creation. choices: [ immediate, lazy ] - default: lazy interface_mode: description: - Determines how layer 2 tags will be read from and added to frames. - Values C(802.1p) and C(native) are identical. - Values C(access) and C(untagged) are identical. - Values C(regular), C(tagged) and C(trunk) are identical. - - The APIC defaults the mode to C(trunk). + - The APIC defaults to C(trunk) when unset during creation. choices: [ 802.1p, access, native, regular, tagged, trunk, untagged ] - default: trunk aliases: [ interface_mode_name, mode ] interface_type: description: - The type of interface for the static EPG deployement. - - The APIC defaults the C(interface_type) to C(switch_port). choices: [ fex, port_channel, switch_port, vpc ] default: switch_port pod_id: 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 8eac9cfd45..59fcb75e6a 100644 --- a/lib/ansible/modules/network/aci/aci_switch_leaf_selector.py +++ b/lib/ansible/modules/network/aci/aci_switch_leaf_selector.py @@ -227,6 +227,7 @@ def main(): 'leaf': dict(type='str', aliases=['name', 'leaf_name', 'leaf_profile_leaf_name', 'leaf_selector_name']), # Not required for querying all objects 'leaf_node_blk': dict(type='str', aliases=['leaf_node_blk_name', 'node_blk_name']), 'leaf_node_blk_description': dict(type='str'), + # NOTE: Keyword 'from' is a reserved word in python, so we need it as a string 'from': dict(type='int', aliases=['node_blk_range_from', 'from_range', 'range_from']), 'to': dict(type='int', aliases=['node_blk_range_to', 'to_range', 'range_to']), 'policy_group': dict(type='str', aliases=['policy_group_name']), diff --git a/lib/ansible/modules/network/aci/aci_taboo_contract.py b/lib/ansible/modules/network/aci/aci_taboo_contract.py index 035b471820..05a3b0ed62 100644 --- a/lib/ansible/modules/network/aci/aci_taboo_contract.py +++ b/lib/ansible/modules/network/aci/aci_taboo_contract.py @@ -43,9 +43,8 @@ options: scope: description: - The scope of a service contract. - - The APIC defaults new Taboo Contracts to C(context). + - The APIC defaults to C(context) when unset during creation. choices: [ application-profile, context, global, tenant ] - default: context state: description: - Use C(present) or C(absent) for adding or removing. @@ -208,8 +207,6 @@ def main(): 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_tenant.py b/lib/ansible/modules/network/aci/aci_tenant.py index 319ccd351b..bd1d4cf63e 100644 --- a/lib/ansible/modules/network/aci/aci_tenant.py +++ b/lib/ansible/modules/network/aci/aci_tenant.py @@ -190,8 +190,6 @@ def main(): tenant=dict(type='str', required=False, 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 ad3158a509..118fdae75a 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 @@ -173,8 +173,6 @@ def main(): tenant=dict(type='str', required=False, 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 fa97dac1e3..62225c489a 100755 --- a/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py +++ b/lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py @@ -37,31 +37,31 @@ options: description: - Bounce Entry Aging Interval (range 150secs - 65535secs) - 0 is used for infinite. - default: 630 + - The APIC defaults to C(630) when unset during creation. bounce_trigger: description: - Determines if the bounce entries are installed by RARP Flood or COOP Protocol. - - The APIC defaults new End Point Retention Policies to C(coop). - default: coop + - The APIC defaults to C(coop) when unset during creation. + choices: [ coop, flood ] hold_interval: description: - Hold Interval (range 5secs - 65535secs). - default: 300 + - The APIC defaults to C(300) when unset during creation. local_ep_interval: description: - Local end point Aging Interval (range 120secs - 65535secs). - 0 is used for infinite. - default: 900 + - The APIC defaults to C(900) when unset during creation. remote_ep_interval: description: - Remote end point Aging Interval (range 120secs - 65535secs). - O is used for infinite. - default: 300 + - The APIC defaults to C(300) when unset during creation. move_frequency: description: - Move frequency per second (range 0secs - 65535secs). - 0 is used for none. - default: 256 + - The APIC defaults to C(256) when unset during creation. description: description: - Description for the End point rentention policy. @@ -241,8 +241,6 @@ def main(): description=dict(type='str', aliases=['descr']), move_frequency=dict(type='int'), state=dict(type='str', default='present', choices=['absent', 'present', 'query']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 d99a7ccca6..5e94235985 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 @@ -175,8 +175,6 @@ def main(): tenant=dict(type='str', required=False, 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']), - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( 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 b939e744db..fcc0fb7951 100755 --- a/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py +++ b/lib/ansible/modules/network/aci/aci_tenant_span_src_group.py @@ -28,8 +28,8 @@ options: admin_state: description: - Enable or disable the span sources. + - The APIC defaults to C(enabled) when unset during creation. choices: [ enabled, disabled ] - default: enabled description: description: - The description for Span source group. @@ -184,8 +184,6 @@ def main(): 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 - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) 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 08f5e44364..9fb65ff67c 100755 --- 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 @@ -176,8 +176,6 @@ def main(): src_group=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 - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/modules/network/aci/aci_vrf.py b/lib/ansible/modules/network/aci/aci_vrf.py index 982a36cf86..757e230a1a 100644 --- a/lib/ansible/modules/network/aci/aci_vrf.py +++ b/lib/ansible/modules/network/aci/aci_vrf.py @@ -212,8 +212,6 @@ def main(): 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 - method=dict(type='str', choices=['delete', 'get', 'post'], aliases=['action'], removed_in_version='2.6'), # Deprecated starting from v2.6 - protocol=dict(type='str', removed_in_version='2.6'), # Deprecated in v2.6 ) module = AnsibleModule( diff --git a/lib/ansible/utils/module_docs_fragments/aci.py b/lib/ansible/utils/module_docs_fragments/aci.py index f5b065fad7..71e3e48e4a 100644 --- a/lib/ansible/utils/module_docs_fragments/aci.py +++ b/lib/ansible/utils/module_docs_fragments/aci.py @@ -19,8 +19,6 @@ options: description: - Port number to be used for REST connection. - The default value depends on parameter `use_ssl`. - type: int - default: 443 (https), 80 (http) username: description: - The username to use for authentication. diff --git a/test/sanity/validate-modules/ignore.txt b/test/sanity/validate-modules/ignore.txt index 946e777d8e..8e3f0d2a47 100644 --- a/test/sanity/validate-modules/ignore.txt +++ b/test/sanity/validate-modules/ignore.txt @@ -795,145 +795,17 @@ lib/ansible/modules/net_tools/snmp_facts.py E322 lib/ansible/modules/net_tools/snmp_facts.py E324 lib/ansible/modules/network/a10/a10_server_axapi3.py E326 lib/ansible/modules/network/a10/a10_virtual_server.py E324 -lib/ansible/modules/network/aci/aci_aaa_user.py E324 -lib/ansible/modules/network/aci/aci_aaa_user.py E327 -lib/ansible/modules/network/aci/aci_aaa_user_certificate.py E324 -lib/ansible/modules/network/aci/aci_aaa_user_certificate.py E327 -lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py E324 -lib/ansible/modules/network/aci/aci_access_port_to_interface_policy_leaf_profile.py E327 -lib/ansible/modules/network/aci/aci_aep.py E324 -lib/ansible/modules/network/aci/aci_aep.py E327 -lib/ansible/modules/network/aci/aci_aep_to_domain.py E324 -lib/ansible/modules/network/aci/aci_aep_to_domain.py E327 -lib/ansible/modules/network/aci/aci_ap.py E324 -lib/ansible/modules/network/aci/aci_ap.py E326 -lib/ansible/modules/network/aci/aci_ap.py E327 -lib/ansible/modules/network/aci/aci_bd.py E324 -lib/ansible/modules/network/aci/aci_bd.py E326 -lib/ansible/modules/network/aci/aci_bd.py E327 -lib/ansible/modules/network/aci/aci_bd_subnet.py E324 -lib/ansible/modules/network/aci/aci_bd_subnet.py E326 -lib/ansible/modules/network/aci/aci_bd_subnet.py E327 lib/ansible/modules/network/aci/aci_bd_subnet.py E328 -lib/ansible/modules/network/aci/aci_bd_to_l3out.py E324 -lib/ansible/modules/network/aci/aci_bd_to_l3out.py E326 -lib/ansible/modules/network/aci/aci_bd_to_l3out.py E327 -lib/ansible/modules/network/aci/aci_config_rollback.py E324 -lib/ansible/modules/network/aci/aci_config_rollback.py E327 -lib/ansible/modules/network/aci/aci_config_snapshot.py E324 -lib/ansible/modules/network/aci/aci_config_snapshot.py E327 lib/ansible/modules/network/aci/aci_config_snapshot.py E328 -lib/ansible/modules/network/aci/aci_contract.py E324 -lib/ansible/modules/network/aci/aci_contract.py E326 -lib/ansible/modules/network/aci/aci_contract.py E327 -lib/ansible/modules/network/aci/aci_contract_subject.py E324 -lib/ansible/modules/network/aci/aci_contract_subject.py E326 -lib/ansible/modules/network/aci/aci_contract_subject.py E327 -lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py E324 -lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py E326 -lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py E327 -lib/ansible/modules/network/aci/aci_domain.py E324 -lib/ansible/modules/network/aci/aci_domain.py E327 -lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py E324 -lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py E326 -lib/ansible/modules/network/aci/aci_domain_to_encap_pool.py E327 -lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py E324 -lib/ansible/modules/network/aci/aci_domain_to_vlan_pool.py E327 -lib/ansible/modules/network/aci/aci_encap_pool.py E324 -lib/ansible/modules/network/aci/aci_encap_pool.py E327 -lib/ansible/modules/network/aci/aci_encap_pool_range.py E324 -lib/ansible/modules/network/aci/aci_encap_pool_range.py E327 -lib/ansible/modules/network/aci/aci_epg.py E324 -lib/ansible/modules/network/aci/aci_epg.py E326 -lib/ansible/modules/network/aci/aci_epg.py E327 -lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py E324 -lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py E326 -lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py E327 -lib/ansible/modules/network/aci/aci_epg_to_contract.py E324 -lib/ansible/modules/network/aci/aci_epg_to_contract.py E326 -lib/ansible/modules/network/aci/aci_epg_to_contract.py E327 -lib/ansible/modules/network/aci/aci_epg_to_domain.py E324 lib/ansible/modules/network/aci/aci_epg_to_domain.py E326 -lib/ansible/modules/network/aci/aci_epg_to_domain.py E327 lib/ansible/modules/network/aci/aci_epg_to_domain.py E328 -lib/ansible/modules/network/aci/aci_fabric_node.py E324 -lib/ansible/modules/network/aci/aci_fabric_node.py E327 -lib/ansible/modules/network/aci/aci_filter.py E324 -lib/ansible/modules/network/aci/aci_filter.py E326 -lib/ansible/modules/network/aci/aci_filter.py E327 -lib/ansible/modules/network/aci/aci_filter_entry.py E324 -lib/ansible/modules/network/aci/aci_filter_entry.py E325 lib/ansible/modules/network/aci/aci_filter_entry.py E326 -lib/ansible/modules/network/aci/aci_filter_entry.py E327 -lib/ansible/modules/network/aci/aci_firmware_source.py E324 -lib/ansible/modules/network/aci/aci_firmware_source.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_fc.py E324 -lib/ansible/modules/network/aci/aci_interface_policy_fc.py E326 -lib/ansible/modules/network/aci/aci_interface_policy_fc.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_l2.py E324 lib/ansible/modules/network/aci/aci_interface_policy_l2.py E326 -lib/ansible/modules/network/aci/aci_interface_policy_l2.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_leaf_policy_group.py E324 -lib/ansible/modules/network/aci/aci_interface_policy_leaf_policy_group.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py E324 -lib/ansible/modules/network/aci/aci_interface_policy_leaf_profile.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_lldp.py E324 lib/ansible/modules/network/aci/aci_interface_policy_lldp.py E326 -lib/ansible/modules/network/aci/aci_interface_policy_lldp.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_mcp.py E324 lib/ansible/modules/network/aci/aci_interface_policy_mcp.py E326 -lib/ansible/modules/network/aci/aci_interface_policy_mcp.py E327 -lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py E324 -lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py E326 -lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py E327 lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py E328 -lib/ansible/modules/network/aci/aci_interface_policy_port_security.py E324 -lib/ansible/modules/network/aci/aci_interface_policy_port_security.py E326 -lib/ansible/modules/network/aci/aci_interface_policy_port_security.py E327 -lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py E324 -lib/ansible/modules/network/aci/aci_interface_selector_to_switch_policy_leaf_profile.py E327 -lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py E324 -lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py E326 -lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py E327 -lib/ansible/modules/network/aci/aci_rest.py E324 -lib/ansible/modules/network/aci/aci_rest.py E327 -lib/ansible/modules/network/aci/aci_static_binding_to_epg.py E324 -lib/ansible/modules/network/aci/aci_static_binding_to_epg.py E327 lib/ansible/modules/network/aci/aci_static_binding_to_epg.py E328 -lib/ansible/modules/network/aci/aci_switch_leaf_selector.py E324 -lib/ansible/modules/network/aci/aci_switch_leaf_selector.py E327 -lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py E324 -lib/ansible/modules/network/aci/aci_switch_policy_leaf_profile.py E327 -lib/ansible/modules/network/aci/aci_switch_policy_vpc_protection_group.py E324 -lib/ansible/modules/network/aci/aci_switch_policy_vpc_protection_group.py E327 -lib/ansible/modules/network/aci/aci_taboo_contract.py E324 -lib/ansible/modules/network/aci/aci_taboo_contract.py E326 -lib/ansible/modules/network/aci/aci_taboo_contract.py E327 -lib/ansible/modules/network/aci/aci_tenant.py E324 -lib/ansible/modules/network/aci/aci_tenant.py E326 -lib/ansible/modules/network/aci/aci_tenant.py E327 -lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py E324 -lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py E326 -lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py E327 -lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py E324 -lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py E326 -lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py E327 -lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py E324 -lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py E326 -lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py E327 -lib/ansible/modules/network/aci/aci_tenant_span_src_group.py E324 lib/ansible/modules/network/aci/aci_tenant_span_src_group.py E326 -lib/ansible/modules/network/aci/aci_tenant_span_src_group.py E327 -lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py E324 -lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py E326 -lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py E327 -lib/ansible/modules/network/aci/aci_vlan_pool.py E324 -lib/ansible/modules/network/aci/aci_vlan_pool.py E327 -lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py E324 -lib/ansible/modules/network/aci/aci_vlan_pool_encap_block.py E327 -lib/ansible/modules/network/aci/aci_vrf.py E324 -lib/ansible/modules/network/aci/aci_vrf.py E326 -lib/ansible/modules/network/aci/aci_vrf.py E327 lib/ansible/modules/network/aos/_aos_blueprint_param.py E325 lib/ansible/modules/network/asa/asa_config.py E324 lib/ansible/modules/network/bigswitch/bigmon_policy.py E324