From ece306b20135255f001038fedfb8ab7a4d50e354 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Mon, 25 Nov 2019 08:11:24 -0800 Subject: [PATCH] Add a sanity test for yaml to make sure we can parse all yaml Check that all yaml we ship is parsable by the pyyaml c backend. Since Ansible uses Pyyaml for docs and playbooks, if the yaml files aren't parsable, they will error out if they were used. Warn and skip yamllint if libyaml backend is not present Ignore new errors in examples until someone can fix them --- .../_data/sanity/yamllint/yamllinter.py | 59 +++++++++++++++++-- .../ansible_test/_internal/sanity/yamllint.py | 9 +++ test/sanity/ignore.txt | 33 +++++++++++ 3 files changed, 97 insertions(+), 4 deletions(-) mode change 100755 => 100644 test/lib/ansible_test/_data/sanity/yamllint/yamllinter.py diff --git a/test/lib/ansible_test/_data/sanity/yamllint/yamllinter.py b/test/lib/ansible_test/_data/sanity/yamllint/yamllinter.py old mode 100755 new mode 100644 index efde78a6d08..8eafec8ed34 --- a/test/lib/ansible_test/_data/sanity/yamllint/yamllinter.py +++ b/test/lib/ansible_test/_data/sanity/yamllint/yamllinter.py @@ -8,6 +8,12 @@ import json import os import sys +import yaml +from yaml.resolver import Resolver +from yaml.constructor import SafeConstructor +from yaml.error import MarkedYAMLError +from _yaml import CParser # pylint: disable=no-name-in-module + from yamllint import linter from yamllint.config import YamlLintConfig @@ -21,6 +27,32 @@ def main(): checker.report() +class TestConstructor(SafeConstructor): + """Yaml Safe Constructor that knows about Ansible tags""" + + +TestConstructor.add_constructor( + u'!unsafe', + TestConstructor.construct_yaml_str) + + +TestConstructor.add_constructor( + u'!vault', + TestConstructor.construct_yaml_str) + + +TestConstructor.add_constructor( + u'!vault-encrypted', + TestConstructor.construct_yaml_str) + + +class TestLoader(CParser, TestConstructor, Resolver): + def __init__(self, stream): + CParser.__init__(self, stream) + TestConstructor.__init__(self) + Resolver.__init__(self) + + class YamlChecker: """Wrapper around yamllint that supports YAML embedded in Ansible modules.""" def __init__(self): @@ -68,6 +100,7 @@ class YamlChecker: :type path: str :type contents: str """ + self.check_parsable(path, contents) self.messages += [self.result_to_message(r, path) for r in linter.run(contents, conf, path)] def check_module(self, conf, path, contents): @@ -79,17 +112,35 @@ class YamlChecker: docs = self.get_module_docs(path, contents) for key, value in docs.items(): - yaml = value['yaml'] + yaml_data = value['yaml'] lineno = value['lineno'] - if yaml.startswith('\n'): - yaml = yaml[1:] + if yaml_data.startswith('\n'): + yaml_data = yaml_data[1:] lineno += 1 - messages = list(linter.run(yaml, conf, path)) + self.check_parsable(path, yaml_data) + + messages = list(linter.run(yaml_data, conf, path)) self.messages += [self.result_to_message(r, path, lineno - 1, key) for r in messages] + def check_parsable(self, path, contents): + """ + :type path: str + :type contents: str + """ + try: + yaml.load(contents, Loader=TestLoader) + except MarkedYAMLError as e: + self.messages += [{'code': 'unparsable-with-libyaml', + 'message': '%s - %s' % (e.args[0], e.args[2]), + 'path': path, + 'line': e.problem_mark.line + 1, + 'column': e.problem_mark.column + 1, + 'level': 'error', + }] + @staticmethod def result_to_message(result, path, line_offset=0, prefix=''): """ diff --git a/test/lib/ansible_test/_internal/sanity/yamllint.py b/test/lib/ansible_test/_internal/sanity/yamllint.py index 2c86749e012..38fc68c704a 100644 --- a/test/lib/ansible_test/_internal/sanity/yamllint.py +++ b/test/lib/ansible_test/_internal/sanity/yamllint.py @@ -7,10 +7,13 @@ import os from .. import types as t +from ..import ansible_util + from ..sanity import ( SanitySingleVersion, SanityMessage, SanityFailure, + SanitySkipped, SanitySuccess, SANITY_ROOT, ) @@ -68,6 +71,12 @@ class YamllintTest(SanitySingleVersion): :type python_version: str :rtype: TestResult """ + ansible_util.check_pyyaml(args, python_version) + if not ansible_util.CHECK_YAML_VERSIONS[python_version]['cloader']: + display.warning("Skipping sanity test '%s' due to missing libyaml support in PyYAML." + % self.name) + return SanitySkipped(self.name) + settings = self.load_processor(args) paths = [target.path for target in targets.include] diff --git a/test/sanity/ignore.txt b/test/sanity/ignore.txt index ff3ec0bd98e..3d54bd5135c 100644 --- a/test/sanity/ignore.txt +++ b/test/sanity/ignore.txt @@ -540,6 +540,7 @@ lib/ansible/modules/cloud/azure/azure_rm_cosmosdbaccount.py validate-modules:und lib/ansible/modules/cloud/azure/azure_rm_cosmosdbaccount_info.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/cloud/azure/azure_rm_deployment.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/cloud/azure/azure_rm_deployment.py validate-modules:return-syntax-error +lib/ansible/modules/cloud/azure/azure_rm_deployment.py yamllint:unparsable-with-libyaml lib/ansible/modules/cloud/azure/azure_rm_deployment_info.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/cloud/azure/azure_rm_deployment_info.py validate-modules:return-syntax-error lib/ansible/modules/cloud/azure/azure_rm_devtestlab.py validate-modules:parameter-type-not-in-doc @@ -718,9 +719,11 @@ lib/ansible/modules/cloud/azure/azure_rm_webappslot.py validate-modules:doc-requ lib/ansible/modules/cloud/azure/azure_rm_webappslot.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/cloud/centurylink/clc_aa_policy.py validate-modules:doc-missing-type lib/ansible/modules/cloud/centurylink/clc_aa_policy.py validate-modules:implied-parameter-type-mismatch +lib/ansible/modules/cloud/centurylink/clc_aa_policy.py yamllint:unparsable-with-libyaml lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:doc-missing-type lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:no-default-for-required-parameter lib/ansible/modules/cloud/centurylink/clc_alert_policy.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/cloud/centurylink/clc_alert_policy.py yamllint:unparsable-with-libyaml lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:doc-missing-type lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:implied-parameter-type-mismatch lib/ansible/modules/cloud/centurylink/clc_blueprint_package.py validate-modules:parameter-type-not-in-doc @@ -730,7 +733,9 @@ lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:do lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:implied-parameter-type-mismatch lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:no-default-for-required-parameter lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/cloud/centurylink/clc_firewall_policy.py yamllint:unparsable-with-libyaml lib/ansible/modules/cloud/centurylink/clc_group.py validate-modules:doc-missing-type +lib/ansible/modules/cloud/centurylink/clc_group.py yamllint:unparsable-with-libyaml lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py validate-modules:doc-missing-type lib/ansible/modules/cloud/centurylink/clc_loadbalancer.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/cloud/centurylink/clc_modify_server.py validate-modules:doc-missing-type @@ -794,6 +799,7 @@ lib/ansible/modules/cloud/google/_gce.py validate-modules:doc-choices-do-not-mat lib/ansible/modules/cloud/google/_gce.py validate-modules:doc-missing-type lib/ansible/modules/cloud/google/_gce.py validate-modules:doc-required-mismatch lib/ansible/modules/cloud/google/_gce.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/cloud/google/_gce.py yamllint:unparsable-with-libyaml lib/ansible/modules/cloud/google/_gcp_backend_service.py pylint:blacklisted-name lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/cloud/google/_gcp_backend_service.py validate-modules:doc-default-does-not-match-spec @@ -1694,6 +1700,7 @@ lib/ansible/modules/commands/command.py validate-modules:nonexistent-parameter-d lib/ansible/modules/commands/command.py validate-modules:undocumented-parameter lib/ansible/modules/commands/expect.py validate-modules:doc-missing-type lib/ansible/modules/crypto/acme/acme_account_info.py validate-modules:return-syntax-error +lib/ansible/modules/database/aerospike/aerospike_migrations.py yamllint:unparsable-with-libyaml lib/ansible/modules/database/influxdb/influxdb_database.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/database/influxdb/influxdb_database.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/database/influxdb/influxdb_query.py validate-modules:doc-default-does-not-match-spec @@ -1911,6 +1918,7 @@ lib/ansible/modules/monitoring/logicmonitor.py validate-modules:doc-default-does lib/ansible/modules/monitoring/logicmonitor.py validate-modules:doc-missing-type lib/ansible/modules/monitoring/logicmonitor.py validate-modules:no-default-for-required-parameter lib/ansible/modules/monitoring/logicmonitor.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/monitoring/logicmonitor.py yamllint:unparsable-with-libyaml lib/ansible/modules/monitoring/logicmonitor_facts.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/monitoring/logicmonitor_facts.py validate-modules:doc-missing-type lib/ansible/modules/monitoring/logicmonitor_facts.py validate-modules:no-default-for-required-parameter @@ -2237,6 +2245,7 @@ lib/ansible/modules/network/asa/asa_acl.py validate-modules:doc-default-does-not lib/ansible/modules/network/asa/asa_acl.py validate-modules:doc-missing-type lib/ansible/modules/network/asa/asa_acl.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/asa/asa_acl.py validate-modules:undocumented-parameter +lib/ansible/modules/network/asa/asa_acl.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/asa/asa_command.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/asa/asa_command.py validate-modules:doc-missing-type lib/ansible/modules/network/asa/asa_command.py validate-modules:parameter-type-not-in-doc @@ -2246,6 +2255,7 @@ lib/ansible/modules/network/asa/asa_config.py validate-modules:doc-missing-type lib/ansible/modules/network/asa/asa_config.py validate-modules:implied-parameter-type-mismatch lib/ansible/modules/network/asa/asa_config.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/asa/asa_config.py validate-modules:undocumented-parameter +lib/ansible/modules/network/asa/asa_config.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/asa/asa_og.py validate-modules:doc-missing-type lib/ansible/modules/network/asa/asa_og.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/avi/avi_actiongroupconfig.py future-import-boilerplate @@ -3067,6 +3077,7 @@ lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:doc-missing-typ lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:doc-required-mismatch lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:nonexistent-parameter-documented lib/ansible/modules/network/cnos/cnos_backup.py validate-modules:undocumented-parameter +lib/ansible/modules/network/cnos/cnos_backup.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:doc-required-mismatch @@ -3075,23 +3086,30 @@ lib/ansible/modules/network/cnos/cnos_banner.py validate-modules:undocumented-pa lib/ansible/modules/network/cnos/cnos_bgp.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_bgp.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_bgp.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_bgp.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_command.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_command.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/cnos/cnos_conditional_command.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_conditional_command.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_conditional_command.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_conditional_command.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_conditional_template.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_conditional_template.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_conditional_template.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_conditional_template.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_config.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_config.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/network/cnos/cnos_config.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_factory.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_factory.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_factory.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_facts.py validate-modules:nonexistent-parameter-documented lib/ansible/modules/network/cnos/cnos_facts.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/network/cnos/cnos_facts.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_image.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_image.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_image.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_image.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/cnos/cnos_interface.py validate-modules:doc-missing-type @@ -3128,15 +3146,19 @@ lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:parameter-type lib/ansible/modules/network/cnos/cnos_logging.py validate-modules:undocumented-parameter lib/ansible/modules/network/cnos/cnos_reload.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_reload.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_reload.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:doc-required-mismatch lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:nonexistent-parameter-documented lib/ansible/modules/network/cnos/cnos_rollback.py validate-modules:undocumented-parameter +lib/ansible/modules/network/cnos/cnos_rollback.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_save.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_save.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_save.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_showrun.py validate-modules:doc-required-mismatch lib/ansible/modules/network/cnos/cnos_showrun.py validate-modules:nonexistent-parameter-documented +lib/ansible/modules/network/cnos/cnos_showrun.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_static_route.py validate-modules:doc-required-mismatch @@ -3148,6 +3170,7 @@ lib/ansible/modules/network/cnos/cnos_system.py validate-modules:parameter-type- lib/ansible/modules/network/cnos/cnos_template.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_template.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_template.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_template.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_user.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_user.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_user.py validate-modules:missing-suboption-docs @@ -3156,6 +3179,7 @@ lib/ansible/modules/network/cnos/cnos_user.py validate-modules:undocumented-para lib/ansible/modules/network/cnos/cnos_vlag.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_vlag.py validate-modules:doc-missing-type lib/ansible/modules/network/cnos/cnos_vlag.py validate-modules:doc-required-mismatch +lib/ansible/modules/network/cnos/cnos_vlag.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/cnos/cnos_vlan.py validate-modules:doc-missing-type @@ -3233,6 +3257,7 @@ lib/ansible/modules/network/enos/enos_command.py validate-modules:doc-required-m lib/ansible/modules/network/enos/enos_command.py validate-modules:nonexistent-parameter-documented lib/ansible/modules/network/enos/enos_command.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/enos/enos_command.py validate-modules:undocumented-parameter +lib/ansible/modules/network/enos/enos_command.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/enos/enos_config.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/enos/enos_config.py validate-modules:doc-missing-type lib/ansible/modules/network/enos/enos_config.py validate-modules:doc-required-mismatch @@ -3245,6 +3270,7 @@ lib/ansible/modules/network/enos/enos_facts.py validate-modules:doc-required-mis lib/ansible/modules/network/enos/enos_facts.py validate-modules:nonexistent-parameter-documented lib/ansible/modules/network/enos/enos_facts.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/enos/enos_facts.py validate-modules:undocumented-parameter +lib/ansible/modules/network/enos/enos_facts.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/eos/_eos_interface.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/eos/_eos_interface.py validate-modules:doc-missing-type lib/ansible/modules/network/eos/_eos_interface.py validate-modules:doc-required-mismatch @@ -4679,11 +4705,13 @@ lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:doc-mis lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:doc-required-mismatch lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/ordnance/ordnance_config.py validate-modules:undocumented-parameter +lib/ansible/modules/network/ordnance/ordnance_config.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:doc-missing-type lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:doc-required-mismatch lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/ordnance/ordnance_facts.py validate-modules:undocumented-parameter +lib/ansible/modules/network/ordnance/ordnance_facts.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/ovs/openvswitch_bridge.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/network/ovs/openvswitch_bridge.py validate-modules:doc-missing-type lib/ansible/modules/network/ovs/openvswitch_bridge.py validate-modules:parameter-type-not-in-doc @@ -4841,15 +4869,18 @@ lib/ansible/modules/network/sros/sros_command.py validate-modules:doc-default-do lib/ansible/modules/network/sros/sros_command.py validate-modules:doc-missing-type lib/ansible/modules/network/sros/sros_command.py validate-modules:doc-required-mismatch lib/ansible/modules/network/sros/sros_command.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/network/sros/sros_command.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/sros/sros_config.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/sros/sros_config.py validate-modules:doc-missing-type lib/ansible/modules/network/sros/sros_config.py validate-modules:doc-required-mismatch lib/ansible/modules/network/sros/sros_config.py validate-modules:nonexistent-parameter-documented lib/ansible/modules/network/sros/sros_config.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/network/sros/sros_config.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/sros/sros_rollback.py validate-modules:doc-default-does-not-match-spec lib/ansible/modules/network/sros/sros_rollback.py validate-modules:doc-missing-type lib/ansible/modules/network/sros/sros_rollback.py validate-modules:doc-required-mismatch lib/ansible/modules/network/sros/sros_rollback.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/network/sros/sros_rollback.py yamllint:unparsable-with-libyaml lib/ansible/modules/network/voss/voss_command.py validate-modules:doc-missing-type lib/ansible/modules/network/voss/voss_command.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/network/voss/voss_config.py validate-modules:doc-missing-type @@ -5181,6 +5212,7 @@ lib/ansible/modules/remote_management/dellemc/idrac_server_config_profile.py val lib/ansible/modules/remote_management/dellemc/idrac_server_config_profile.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/remote_management/foreman/_foreman.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/remote_management/foreman/_katello.py validate-modules:parameter-type-not-in-doc +lib/ansible/modules/remote_management/foreman/_katello.py yamllint:unparsable-with-libyaml lib/ansible/modules/remote_management/hpilo/hpilo_boot.py validate-modules:doc-choices-do-not-match-spec lib/ansible/modules/remote_management/hpilo/hpilo_boot.py validate-modules:parameter-type-not-in-doc lib/ansible/modules/remote_management/hpilo/hpilo_info.py validate-modules:parameter-type-not-in-doc @@ -5928,6 +5960,7 @@ lib/ansible/plugins/action/vyos.py action-plugin-docs # base class for deprecate lib/ansible/plugins/cache/base.py ansible-doc!skip # not a plugin, but a stub for backwards compatibility lib/ansible/plugins/callback/hipchat.py pylint:blacklisted-name lib/ansible/plugins/connection/lxc.py pylint:blacklisted-name +lib/ansible/plugins/connection/vmware_tools.py yamllint:unparsable-with-libyaml lib/ansible/plugins/doc_fragments/a10.py future-import-boilerplate lib/ansible/plugins/doc_fragments/a10.py metaclass-boilerplate lib/ansible/plugins/doc_fragments/aireos.py future-import-boilerplate