diff options
author | Rodolfo Carvalho <rhcarvalho@gmail.com> | 2017-08-21 13:37:25 +0200 |
---|---|---|
committer | Rodolfo Carvalho <rhcarvalho@gmail.com> | 2017-08-24 15:00:12 +0200 |
commit | a28796fc669bd40f9384118f278b62001a15214d (patch) | |
tree | 553e484dac1c5a5dc6e88fec8e6006b3c623bb19 /roles/openshift_health_checker/action_plugins/openshift_health_check.py | |
parent | 25276bda8c002f4279e5c1748f64a9fd1ee999a4 (diff) | |
download | openshift-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/openshift_health_check.py')
-rw-r--r-- | roles/openshift_health_checker/action_plugins/openshift_health_check.py | 28 |
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) |