From 7d181802fb28ab58230029bb96e0eb6444d40ec1 Mon Sep 17 00:00:00 2001 From: Will Thames Date: Wed, 6 Feb 2019 17:09:41 +1000 Subject: [PATCH] Improve kubernetes validation warnings (#51683) Warnings get printed at the end of loops, which means that if you're running validation against a bunch of resources, the warning message gets printed after a number of potentially unrelated resources. Adding extra info about the resource failing validation will help find the validation issues. --- lib/ansible/module_utils/k8s/raw.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/ansible/module_utils/k8s/raw.py b/lib/ansible/module_utils/k8s/raw.py index d9ea2a040b..d772687d53 100644 --- a/lib/ansible/module_utils/k8s/raw.py +++ b/lib/ansible/module_utils/k8s/raw.py @@ -156,15 +156,18 @@ class KubernetesRawModule(KubernetesAnsibleModule): }) def validate(self, resource): + def _prepend_resource_info(resource, msg): + return "%s %s: %s" % (resource['kind'], resource['metadata']['name'], msg) + try: warnings, errors = self.client.validate(resource, self.params['validate'].get('version'), self.params['validate'].get('strict')) except KubernetesValidateMissing: self.fail_json(msg="kubernetes-validate python library is required to validate resources") if errors and self.params['validate']['fail_on_error']: - self.fail_json(msg="\n".join(errors)) + self.fail_json(msg="\n".join([_prepend_resource_info(resource, error) for error in errors])) else: - return warnings + errors + return [_prepend_resource_info(resource, msg) for msg in warnings + errors] def set_defaults(self, resource, definition): definition['kind'] = resource.kind