Skip to content

Commit 273d862

Browse files
authored
feat: add alerts command for list alert attributes (#256)
1 parent 78562c7 commit 273d862

1 file changed

Lines changed: 47 additions & 0 deletions

File tree

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
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

Comments
 (0)