add support for defining custom keywords mappings in configuration file

This can be used for shortcuts or alternative names, ex:

 [keywords]
 monitoring = munin,scrutiny,prometheus

or to prevent common errors or misconceptions:

 [keywords]
 saas/test = saas/test,-hds,-re,-docbow
This commit is contained in:
Frédéric Péters 2021-04-13 12:25:47 +02:00
parent 1ddfe568f9
commit f12fa88f04
2 changed files with 17 additions and 2 deletions

12
README
View File

@ -38,6 +38,18 @@ It is also possible to declare additional servers, in a [servers] section, ex::
host.domain = keyword1, keyword2
And custom keywords mapping can be defined, for shortcuts or alternative names,
ex::
[keywords]
monitoring = munin,scrutiny,prometheus
or to prevent common errors or misconceptions::
[keywords]
saas/test = saas/test,-hds,-re,-docbow
Examples
--------

View File

@ -124,12 +124,15 @@ def parse_args():
def filter_servers(servers, args):
selected_servers = []
if args.keywords:
for keyword in args.keywords.split(','):
config = get_config()
cmd_keywords = config['keywords'].get(args.keywords, args.keywords)
for keyword in cmd_keywords.split(','):
keywords = set(keyword.split('/'))
selected_servers.extend(
[x for x in servers if keywords.issubset(x.keywords) and not x in selected_servers]
)
for keyword in args.keywords.split(','):
for keyword in cmd_keywords.split(','):
if keyword.startswith('!') or keyword.startswith('-'):
selected_servers = [x for x in selected_servers if keyword[1:] not in x.keywords]
else: