|
| 1 | +"""Get Event Logs.""" |
| 2 | +# :license: MIT, see LICENSE for more details. |
| 3 | + |
| 4 | +import json |
| 5 | + |
| 6 | +import click |
| 7 | + |
| 8 | +import SoftLayer |
| 9 | +from SoftLayer.CLI import environment |
| 10 | +from SoftLayer.CLI import formatting |
| 11 | + |
| 12 | +COLUMNS = ['event', 'object', 'type', 'date', 'username'] |
| 13 | + |
| 14 | + |
| 15 | +@click.command() |
| 16 | +@click.option('--date-min', '-d', |
| 17 | + help='The earliest date we want to search for event logs in mm/dd/yyyy format.') |
| 18 | +@click.option('--date-max', '-D', |
| 19 | + help='The latest date we want to search for event logs in mm/dd/yyyy format.') |
| 20 | +@click.option('--obj-event', '-e', |
| 21 | + help="The event we want to get event logs for") |
| 22 | +@click.option('--obj-id', '-i', |
| 23 | + help="The id of the object we want to get event logs for") |
| 24 | +@click.option('--obj-type', '-t', |
| 25 | + 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, |
| 29 | + help="Display metadata if present") |
| 30 | +@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) |
| 37 | + |
| 38 | + if logs is None: |
| 39 | + env.fout('None available.') |
| 40 | + return |
| 41 | + |
| 42 | + if metadata and 'metadata' not in COLUMNS: |
| 43 | + COLUMNS.append('metadata') |
| 44 | + |
| 45 | + table = formatting.Table(COLUMNS) |
| 46 | + if metadata: |
| 47 | + table.align['metadata'] = "l" |
| 48 | + |
| 49 | + for log in logs: |
| 50 | + user = log['userType'] |
| 51 | + if user == "CUSTOMER": |
| 52 | + user = usrmgr.get_user(log['userId'], "mask[username]")['username'] |
| 53 | + 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'] |
| 60 | + |
| 61 | + table.add_row([log['eventName'], log['label'], log['objectName'], |
| 62 | + log['eventCreateDate'], user, metadata_data]) |
| 63 | + else: |
| 64 | + table.add_row([log['eventName'], log['label'], log['objectName'], |
| 65 | + log['eventCreateDate'], user]) |
| 66 | + env.fout(table) |
0 commit comments