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
pull/64367/head
Toshio Kuratomi 5 years ago
parent 18130e1419
commit ece306b201

@ -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=''):
"""

@ -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]

@ -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

Loading…
Cancel
Save