|
1 | 1 | """Get Event Logs.""" |
2 | 2 | # :license: MIT, see LICENSE for more details. |
3 | 3 |
|
4 | | -import json |
5 | | - |
6 | 4 | import click |
7 | 5 |
|
8 | 6 | import SoftLayer |
9 | 7 | from SoftLayer.CLI import environment |
10 | | -from SoftLayer.CLI import formatting |
11 | | - |
12 | | -COLUMNS = ['event', 'object', 'type', 'date', 'username'] |
| 8 | +from SoftLayer import utils |
13 | 9 |
|
14 | 10 |
|
15 | 11 | @click.command() |
|
23 | 19 | help="The id of the object we want to get event logs for") |
24 | 20 | @click.option('--obj-type', '-t', |
25 | 21 | help="The type of the object we want to get event logs for") |
26 | | -@click.option('--utc-offset', '-z', |
27 | | - help="UTC Offset for searching with dates. The default is -0000") |
28 | | -@click.option('--metadata/--no-metadata', default=False, |
| 22 | +@click.option('--utc-offset', '-z', default='-0000', show_default=True, |
| 23 | + help="UTC Offset for searching with dates. +/-HHMM format") |
| 24 | +@click.option('--metadata/--no-metadata', default=False, show_default=True, |
29 | 25 | help="Display metadata if present") |
| 26 | +@click.option('--limit', '-l', type=click.INT, default=50, show_default=True, |
| 27 | + help="Total number of result to return. -1 to return ALL, there may be a LOT of these.") |
30 | 28 | @environment.pass_env |
31 | | -def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metadata): |
32 | | - """Get Event Logs""" |
33 | | - mgr = SoftLayer.EventLogManager(env.client) |
34 | | - usrmgr = SoftLayer.UserManager(env.client) |
35 | | - request_filter = mgr.build_filter(date_min, date_max, obj_event, obj_id, obj_type, utc_offset) |
36 | | - logs = mgr.get_event_logs(request_filter) |
| 29 | +def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metadata, limit): |
| 30 | + """Get Event Logs |
37 | 31 |
|
38 | | - if logs is None: |
39 | | - env.fout('None available.') |
40 | | - return |
| 32 | + Example: |
| 33 | + slcli event-log get -d 01/01/2019 -D 02/01/2019 -t User -l 10 |
| 34 | + """ |
| 35 | + columns = ['Event', 'Object', 'Type', 'Date', 'Username'] |
41 | 36 |
|
42 | | - if metadata and 'metadata' not in COLUMNS: |
43 | | - COLUMNS.append('metadata') |
| 37 | + event_mgr = SoftLayer.EventLogManager(env.client) |
| 38 | + user_mgr = SoftLayer.UserManager(env.client) |
| 39 | + request_filter = event_mgr.build_filter(date_min, date_max, obj_event, obj_id, obj_type, utc_offset) |
| 40 | + logs = event_mgr.get_event_logs(request_filter) |
| 41 | + log_time = "%Y-%m-%dT%H:%M:%S.%f%z" |
| 42 | + user_data = {} |
44 | 43 |
|
45 | | - table = formatting.Table(COLUMNS) |
46 | 44 | if metadata: |
47 | | - table.align['metadata'] = "l" |
| 45 | + columns.append('Metadata') |
48 | 46 |
|
| 47 | + row_count = 0 |
| 48 | + click.secho(", ".join(columns)) |
49 | 49 | for log in logs: |
| 50 | + if log is None: |
| 51 | + click.secho('No logs available for filter %s.' % request_filter, fg='red') |
| 52 | + return |
| 53 | + |
50 | 54 | user = log['userType'] |
| 55 | + label = log.get('label', '') |
51 | 56 | if user == "CUSTOMER": |
52 | | - user = usrmgr.get_user(log['userId'], "mask[username]")['username'] |
| 57 | + username = user_data.get(log['userId']) |
| 58 | + if username is None: |
| 59 | + username = user_mgr.get_user(log['userId'], "mask[username]")['username'] |
| 60 | + user_data[log['userId']] = username |
| 61 | + user = username |
| 62 | + |
53 | 63 | if metadata: |
54 | | - try: |
55 | | - metadata_data = json.dumps(json.loads(log['metaData']), indent=4, sort_keys=True) |
56 | | - if env.format == "table": |
57 | | - metadata_data = metadata_data.strip("{}\n\t") |
58 | | - except ValueError: |
59 | | - metadata_data = log['metaData'] |
| 64 | + metadata_data = log['metaData'].strip("\n\t") |
60 | 65 |
|
61 | | - table.add_row([log['eventName'], log['label'], log['objectName'], |
62 | | - log['eventCreateDate'], user, metadata_data]) |
| 66 | + click.secho("'{0}','{1}','{2}','{3}','{4}','{5}'".format( |
| 67 | + log['eventName'], |
| 68 | + label, |
| 69 | + log['objectName'], |
| 70 | + utils.clean_time(log['eventCreateDate'], in_format=log_time), |
| 71 | + user, |
| 72 | + metadata_data)) |
63 | 73 | else: |
64 | | - table.add_row([log['eventName'], log['label'], log['objectName'], |
65 | | - log['eventCreateDate'], user]) |
66 | | - env.fout(table) |
| 74 | + click.secho("'{0}','{1}','{2}','{3}','{4}'".format( |
| 75 | + log['eventName'], |
| 76 | + label, |
| 77 | + log['objectName'], |
| 78 | + utils.clean_time(log['eventCreateDate'], in_format=log_time), |
| 79 | + user)) |
| 80 | + |
| 81 | + row_count = row_count + 1 |
| 82 | + if row_count >= limit and limit != -1: |
| 83 | + return |
0 commit comments