summaryrefslogtreecommitdiffstats
path: root/roles/openshift_health_checker/action_plugins
diff options
context:
space:
mode:
authorRodolfo Carvalho <rhcarvalho@gmail.com>2017-08-21 13:37:25 +0200
committerRodolfo Carvalho <rhcarvalho@gmail.com>2017-08-24 15:00:12 +0200
commita28796fc669bd40f9384118f278b62001a15214d (patch)
tree553e484dac1c5a5dc6e88fec8e6006b3c623bb19 /roles/openshift_health_checker/action_plugins
parent25276bda8c002f4279e5c1748f64a9fd1ee999a4 (diff)
downloadopenshift-a28796fc669bd40f9384118f278b62001a15214d.tar.gz
openshift-a28796fc669bd40f9384118f278b62001a15214d.tar.bz2
openshift-a28796fc669bd40f9384118f278b62001a15214d.tar.xz
openshift-a28796fc669bd40f9384118f278b62001a15214d.zip
List known checks/tags when check name is invalid
Diffstat (limited to 'roles/openshift_health_checker/action_plugins')
-rw-r--r--roles/openshift_health_checker/action_plugins/openshift_health_check.py28
1 files changed, 20 insertions, 8 deletions
diff --git a/roles/openshift_health_checker/action_plugins/openshift_health_check.py b/roles/openshift_health_checker/action_plugins/openshift_health_check.py
index 898d158a4..3e8962c3c 100644
--- a/roles/openshift_health_checker/action_plugins/openshift_health_check.py
+++ b/roles/openshift_health_checker/action_plugins/openshift_health_check.py
@@ -113,21 +113,27 @@ def list_known_checks(known_checks):
'list of check names or a YAML list. Available checks:\n {}'
).format('\n '.join(sorted(known_checks)))
+ tags = describe_tags(known_checks.values())
+
+ msg += (
+ '\n\nTags can be used as a shortcut to select multiple '
+ 'checks. Available tags and the checks they select:\n {}'
+ ).format('\n '.join(tags))
+
+ return msg
+
+
+def describe_tags(check_classes):
+ """Return a sorted list of strings describing tags and the checks they include."""
tag_checks = defaultdict(list)
- for cls in known_checks.values():
+ for cls in check_classes:
for tag in cls.tags:
tag_checks[tag].append(cls.name)
tags = [
'@{} = {}'.format(tag, ','.join(sorted(checks)))
for tag, checks in tag_checks.items()
]
-
- msg += (
- '\n\nTags can be used as a shortcut to select multiple '
- 'checks. Available tags and the checks they select:\n {}'
- ).format('\n '.join(sorted(tags)))
-
- return msg
+ return sorted(tags)
def resolve_checks(names, all_checks):
@@ -157,6 +163,12 @@ def resolve_checks(names, all_checks):
if unknown_tag_names:
msg.append('Unknown tag names: {}.'.format(', '.join(sorted(unknown_tag_names))))
msg.append('Make sure there is no typo in the playbook and no files are missing.')
+ # TODO: implement a "Did you mean ...?" when the input is similar to a
+ # valid check or tag.
+ msg.append('Known checks:')
+ msg.append(' {}'.format('\n '.join(sorted(known_check_names))))
+ msg.append('Known tags:')
+ msg.append(' {}'.format('\n '.join(describe_tags(all_checks))))
raise OpenShiftCheckException('\n'.join(msg))
tag_to_checks = defaultdict(set)