Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 15 additions & 4 deletions SoftLayer/CLI/event_log/get.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,13 +27,16 @@
help="UTC Offset for searching with dates. The default is -0000")
@click.option('--metadata/--no-metadata', default=False,
help="Display metadata if present")
@click.option('--limit', '-l', default=30,
help="How many results to get in one api call, default is 30.")
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://click.palletsprojects.com/en/6.x/api/#click.Option

use show_default=True instead of adding it manually to the help message

@environment.pass_env
def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metadata):
def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metadata, limit):
"""Get Event Logs"""

mgr = SoftLayer.EventLogManager(env.client)
usrmgr = SoftLayer.UserManager(env.client)
request_filter = mgr.build_filter(date_min, date_max, obj_event, obj_id, obj_type, utc_offset)
logs = mgr.get_event_logs(request_filter)
logs = mgr.get_event_logs(request_filter, log_limit=limit)

if logs is None:
env.fout('None available.')
Expand All @@ -43,11 +46,19 @@ def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metada
COLUMNS.append('metadata')

table = formatting.Table(COLUMNS)

if metadata:
table.align['metadata'] = "l"

for log in logs:
user = log['userType']
label = ''
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


try:
label = log['label']
except KeyError:
pass # label is already at default value.

if user == "CUSTOMER":
user = usrmgr.get_user(log['userId'], "mask[username]")['username']
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just noticed in testing that this line generates a large number of redundant API calls. Would be worth cacheing the results so we only have to look up each user once. I don't want to change this to just get all users once because some accounts have a lot of users which would generate its own problems.

If you think thats out of the scope of this pull request thats ok, I can make an issue about it and deal with it later.

if metadata:
Expand All @@ -58,9 +69,9 @@ def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metada
except ValueError:
metadata_data = log['metaData']

table.add_row([log['eventName'], log['label'], log['objectName'],
table.add_row([log['eventName'], label, log['objectName'],
log['eventCreateDate'], user, metadata_data])
else:
table.add_row([log['eventName'], log['label'], log['objectName'],
table.add_row([log['eventName'], label, log['objectName'],
log['eventCreateDate'], user])
env.fout(table)
4 changes: 2 additions & 2 deletions SoftLayer/managers/event_log.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ class EventLogManager(object):
def __init__(self, client):
self.event_log = client['Event_Log']

def get_event_logs(self, request_filter):
def get_event_logs(self, request_filter, log_limit=10):
"""Returns a list of event logs

:param dict request_filter: filter dict
:returns: List of event logs
"""
results = self.event_log.getAllObjects(filter=request_filter)
results = self.event_log.getAllObjects(filter=request_filter, limit=log_limit)
return results

def get_event_log_types(self):
Expand Down