|
| 1 | +import json |
| 2 | + |
| 3 | +import click |
| 4 | +from tabulate import tabulate |
| 5 | + |
| 6 | + |
| 7 | +@click.command('alerts', short_help='List alert environments, services, groups and tags') |
| 8 | +@click.option('--environments', '-E', is_flag=True, help='List alert environments.') |
| 9 | +@click.option('--services', '-S', is_flag=True, help='List alert services.') |
| 10 | +@click.option('--groups', '-g', is_flag=True, help='List alert groups.') |
| 11 | +@click.option('--tags', '-T', is_flag=True, help='List alert tags.') |
| 12 | +@click.pass_obj |
| 13 | +def cli(obj, environments, services, groups, tags): |
| 14 | + """List alert environments, services, groups and tags.""" |
| 15 | + |
| 16 | + client = obj['client'] |
| 17 | + |
| 18 | + if environments: |
| 19 | + if obj['output'] == 'json': |
| 20 | + r = client.http.get('/environments') |
| 21 | + click.echo(json.dumps(r['environments'], sort_keys=True, indent=4, ensure_ascii=False)) |
| 22 | + else: |
| 23 | + headers = {'environment': 'ENVIRONMENT', 'count': 'COUNT', 'severityCounts': 'SEVERITY COUNTS', 'statusCounts': 'STATUS COUNTS'} |
| 24 | + click.echo(tabulate(client.get_environments(), headers=headers, tablefmt=obj['output'])) |
| 25 | + elif services: |
| 26 | + if obj['output'] == 'json': |
| 27 | + r = client.http.get('/services') |
| 28 | + click.echo(json.dumps(r['services'], sort_keys=True, indent=4, ensure_ascii=False)) |
| 29 | + else: |
| 30 | + headers = {'environment': 'ENVIRONMENT', 'service': 'SERVICE', 'count': 'COUNT', 'severityCounts': 'SEVERITY COUNTS', 'statusCounts': 'STATUS COUNTS'} |
| 31 | + click.echo(tabulate(client.get_services(), headers=headers, tablefmt=obj['output'])) |
| 32 | + elif groups: |
| 33 | + if obj['output'] == 'json': |
| 34 | + r = client.http.get('/alerts/groups') |
| 35 | + click.echo(json.dumps(r['groups'], sort_keys=True, indent=4, ensure_ascii=False)) |
| 36 | + else: |
| 37 | + headers = {'environment': 'ENVIRONMENT', 'group': 'GROUP', 'count': 'COUNT', 'severityCounts': 'SEVERITY COUNTS', 'statusCounts': 'STATUS COUNTS'} |
| 38 | + click.echo(tabulate(client.get_groups(), headers=headers, tablefmt=obj['output'])) |
| 39 | + elif tags: |
| 40 | + if obj['output'] == 'json': |
| 41 | + r = client.http.get('/alerts/tags') |
| 42 | + click.echo(json.dumps(r['tags'], sort_keys=True, indent=4, ensure_ascii=False)) |
| 43 | + else: |
| 44 | + headers = {'environment': 'ENVIRONMENT', 'tag': 'TAG', 'count': 'COUNT', 'severityCounts': 'SEVERITY COUNTS', 'statusCounts': 'STATUS COUNTS'} |
| 45 | + click.echo(tabulate(client.get_tags(), headers=headers, tablefmt=obj['output'])) |
| 46 | + else: |
| 47 | + raise click.UsageError('Must choose an alert attribute to list.') |
0 commit comments