diff --git a/test/sanity/validate-modules/ignore.txt b/test/sanity/validate-modules/ignore.txt index 213ac188a0..3670cedbcd 100644 --- a/test/sanity/validate-modules/ignore.txt +++ b/test/sanity/validate-modules/ignore.txt @@ -34,40 +34,20 @@ lib/ansible/modules/cloud/amazon/s3_lifecycle.py E322 lib/ansible/modules/cloud/amazon/s3_sync.py E322 lib/ansible/modules/cloud/amazon/sts_assume_role.py E317 lib/ansible/modules/cloud/atomic/atomic_container.py E317 -lib/ansible/modules/cloud/azure/azure_rm_acs.py E322 -lib/ansible/modules/cloud/azure/azure_rm_availabilityset.py E322 lib/ansible/modules/cloud/azure/azure_rm_availabilityset_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_containerinstance.py E322 -lib/ansible/modules/cloud/azure/azure_rm_containerregistry.py E322 lib/ansible/modules/cloud/azure/azure_rm_deployment.py E322 lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset.py E322 lib/ansible/modules/cloud/azure/azure_rm_dnsrecordset_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_dnszone.py E322 -lib/ansible/modules/cloud/azure/azure_rm_dnszone_facts.py E322 lib/ansible/modules/cloud/azure/azure_rm_functionapp.py E322 -lib/ansible/modules/cloud/azure/azure_rm_functionapp_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_image.py E322 -lib/ansible/modules/cloud/azure/azure_rm_loadbalancer.py E322 -lib/ansible/modules/cloud/azure/azure_rm_loadbalancer_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_managed_disk.py E322 lib/ansible/modules/cloud/azure/azure_rm_managed_disk_facts.py E322 lib/ansible/modules/cloud/azure/azure_rm_mysqldatabase.py E322 lib/ansible/modules/cloud/azure/azure_rm_mysqlserver.py E322 -lib/ansible/modules/cloud/azure/azure_rm_networkinterface.py E322 -lib/ansible/modules/cloud/azure/azure_rm_networkinterface_facts.py E322 lib/ansible/modules/cloud/azure/azure_rm_postgresqldatabase.py E322 lib/ansible/modules/cloud/azure/azure_rm_postgresqlserver.py E322 lib/ansible/modules/cloud/azure/azure_rm_publicipaddress.py E322 -lib/ansible/modules/cloud/azure/azure_rm_publicipaddress_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_resourcegroup.py E322 -lib/ansible/modules/cloud/azure/azure_rm_resourcegroup_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_securitygroup.py E322 -lib/ansible/modules/cloud/azure/azure_rm_securitygroup_facts.py E322 lib/ansible/modules/cloud/azure/azure_rm_sqlserver.py E322 lib/ansible/modules/cloud/azure/azure_rm_sqlserver_facts.py E322 lib/ansible/modules/cloud/azure/azure_rm_storageaccount.py E322 -lib/ansible/modules/cloud/azure/azure_rm_storageaccount_facts.py E322 -lib/ansible/modules/cloud/azure/azure_rm_storageblob.py E322 lib/ansible/modules/cloud/azure/azure_rm_storageblob.py E323 lib/ansible/modules/cloud/azure/azure_rm_subnet.py E322 lib/ansible/modules/cloud/azure/azure_rm_virtualmachine.py E322 @@ -267,34 +247,6 @@ lib/ansible/modules/net_tools/ldap/ldap_attr.py E322 lib/ansible/modules/net_tools/omapi_host.py E317 lib/ansible/modules/net_tools/omapi_host.py E322 lib/ansible/modules/net_tools/snmp_facts.py E322 -lib/ansible/modules/network/aci/aci_ap.py E322 -lib/ansible/modules/network/aci/aci_bd.py E322 -lib/ansible/modules/network/aci/aci_bd_subnet.py E322 -lib/ansible/modules/network/aci/aci_bd_to_l3out.py E322 -lib/ansible/modules/network/aci/aci_contract.py E322 -lib/ansible/modules/network/aci/aci_contract_subject.py E322 -lib/ansible/modules/network/aci/aci_contract_subject_to_filter.py E322 -lib/ansible/modules/network/aci/aci_epg.py E322 -lib/ansible/modules/network/aci/aci_epg_monitoring_policy.py E322 -lib/ansible/modules/network/aci/aci_epg_to_contract.py E322 -lib/ansible/modules/network/aci/aci_epg_to_domain.py E322 -lib/ansible/modules/network/aci/aci_filter.py E322 -lib/ansible/modules/network/aci/aci_interface_policy_fc.py E322 -lib/ansible/modules/network/aci/aci_interface_policy_l2.py E322 -lib/ansible/modules/network/aci/aci_interface_policy_lldp.py E322 -lib/ansible/modules/network/aci/aci_interface_policy_mcp.py E322 -lib/ansible/modules/network/aci/aci_interface_policy_port_channel.py E322 -lib/ansible/modules/network/aci/aci_interface_policy_port_security.py E322 -lib/ansible/modules/network/aci/aci_l3out_route_tag_policy.py E322 -lib/ansible/modules/network/aci/aci_rest.py E322 -lib/ansible/modules/network/aci/aci_taboo_contract.py E322 -lib/ansible/modules/network/aci/aci_tenant.py E322 -lib/ansible/modules/network/aci/aci_tenant_action_rule_profile.py E322 -lib/ansible/modules/network/aci/aci_tenant_ep_retention_policy.py E322 -lib/ansible/modules/network/aci/aci_tenant_span_dst_group.py E322 -lib/ansible/modules/network/aci/aci_tenant_span_src_group.py E322 -lib/ansible/modules/network/aci/aci_tenant_span_src_group_to_dst_group.py E322 -lib/ansible/modules/network/aci/aci_vrf.py E322 lib/ansible/modules/network/cloudengine/ce_aaa_server.py E322 lib/ansible/modules/network/cloudengine/ce_aaa_server_host.py E322 lib/ansible/modules/network/cloudengine/ce_acl.py E322 @@ -371,8 +323,6 @@ lib/ansible/modules/network/cnos/cnos_rollback.py E323 lib/ansible/modules/network/cnos/cnos_showrun.py E323 lib/ansible/modules/network/cumulus/_cl_interface.py E322 lib/ansible/modules/network/dellos10/dellos10_command.py E322 -lib/ansible/modules/network/dellos6/dellos6_command.py E322 -lib/ansible/modules/network/dellos9/dellos9_command.py E322 lib/ansible/modules/network/enos/enos_command.py E323 lib/ansible/modules/network/enos/enos_config.py E323 lib/ansible/modules/network/enos/enos_facts.py E323 diff --git a/test/sanity/validate-modules/main.py b/test/sanity/validate-modules/main.py index 2435249da3..d9fe4baf7f 100755 --- a/test/sanity/validate-modules/main.py +++ b/test/sanity/validate-modules/main.py @@ -1011,11 +1011,11 @@ class ModuleValidator(Validator): try: spec, args, kwargs = get_argument_spec(self.path) - except AnsibleModuleImportError: + except AnsibleModuleImportError as e: self.reporter.error( path=self.object_path, code=321, - msg='Exception attempting to import module for argument_spec introspection' + msg="Exception attempting to import module for argument_spec introspection, '%s'" % e ) self.reporter.trace( path=self.object_path, @@ -1025,9 +1025,14 @@ class ModuleValidator(Validator): provider_args = set() args_from_argspec = set() + deprecated_args_from_argspec = set() for arg, data in spec.items(): - args_from_argspec.add(arg) - args_from_argspec.update(data.get('aliases', [])) + if not data.get('removed_in_version', None): + args_from_argspec.add(arg) + args_from_argspec.update(data.get('aliases', [])) + else: + deprecated_args_from_argspec.add(arg) + deprecated_args_from_argspec.update(data.get('aliases', [])) if arg == 'provider' and self.object_path.startswith('lib/ansible/modules/network/'): # Record provider options from network modules, for later comparison for provider_arg, provider_data in data.get('options', {}).items(): @@ -1061,7 +1066,7 @@ class ModuleValidator(Validator): args_from_docs.update(data.get('aliases', [])) args_missing_from_docs = args_from_argspec.difference(args_from_docs) - docs_missing_from_args = args_from_docs.difference(args_from_argspec) + docs_missing_from_args = args_from_docs.difference(args_from_argspec | deprecated_args_from_argspec) for arg in args_missing_from_docs: # args_from_argspec contains undocumented argument if kwargs.get('add_file_common_args', False) and arg in file_common_arguments: