66import click
77
88import SoftLayer
9+ from SoftLayer import utils
910from SoftLayer .CLI import environment
10- from SoftLayer .CLI import formatting
1111
1212COLUMNS = ['event' , 'object' , 'type' , 'date' , 'username' ]
1313
2323 help = "The id of the object we want to get event logs for" )
2424@click .option ('--obj-type' , '-t' ,
2525 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 ,
26+ @click .option ('--utc-offset' , '-z' , default = '-0000' , show_default = True ,
27+ help = "UTC Offset for searching with dates. +/-HHMM format " )
28+ @click .option ('--metadata/--no-metadata' , default = False , show_default = True ,
2929 help = "Display metadata if present" )
30- @click .option ('--limit' , '-l' , default = 30 ,
31- help = "How many results to get in one api call, default is 30 ." )
30+ @click .option ('--limit' , '-l' , type = click . INT , default = 50 , show_default = True ,
31+ help = "Total number of result to return. -1 to return ALL, there may be a LOT of these ." )
3232@environment .pass_env
3333def cli (env , date_min , date_max , obj_event , obj_id , obj_type , utc_offset , metadata , limit ):
3434 """Get Event Logs"""
3535
36- mgr = SoftLayer .EventLogManager (env .client )
37- usrmgr = SoftLayer .UserManager (env .client )
38- request_filter = mgr .build_filter (date_min , date_max , obj_event , obj_id , obj_type , utc_offset )
39- logs = mgr .get_event_logs (request_filter , log_limit = limit )
40-
41- if logs is None :
42- env .fout ('None available.' )
43- return
36+ event_mgr = SoftLayer .EventLogManager (env .client )
37+ user_mgr = SoftLayer .UserManager (env .client )
38+ request_filter = event_mgr .build_filter (date_min , date_max , obj_event , obj_id , obj_type , utc_offset )
39+ logs = event_mgr .get_event_logs (request_filter )
40+ log_time = "%Y-%m-%dT%H:%M:%S.%f%z"
41+ user_data = {}
4442
4543 if metadata and 'metadata' not in COLUMNS :
4644 COLUMNS .append ('metadata' )
4745
48- table = formatting .Table (COLUMNS )
46+ row_count = 0
47+ for log , rows in logs :
48+ if log is None :
49+ click .secho ('No logs available for filter %s.' % request_filter , fg = 'red' )
50+ return
4951
50- if metadata :
51- table .align ['metadata' ] = "l"
52+ if row_count == 0 :
53+ if limit < 0 :
54+ limit = rows
55+ click .secho ("Number of records: %s" % rows , fg = 'red' )
56+ click .secho (", " .join (COLUMNS ))
5257
53- for log in logs :
5458 user = log ['userType' ]
55- label = ''
56-
57- try :
58- label = log ['label' ]
59- except KeyError :
60- pass # label is already at default value.
61-
59+ label = log .get ('label' , '' )
6260 if user == "CUSTOMER" :
63- user = usrmgr .get_user (log ['userId' ], "mask[username]" )['username' ]
61+ username = user_data .get (log ['userId' ])
62+ if username is None :
63+ username = user_mgr .get_user (log ['userId' ], "mask[username]" )['username' ]
64+ user_data [log ['userId' ]] = username
65+ user = username
66+
6467 if metadata :
6568 try :
6669 metadata_data = json .dumps (json .loads (log ['metaData' ]), indent = 4 , sort_keys = True )
@@ -69,9 +72,24 @@ def cli(env, date_min, date_max, obj_event, obj_id, obj_type, utc_offset, metada
6972 except ValueError :
7073 metadata_data = log ['metaData' ]
7174
72- table .add_row ([log ['eventName' ], label , log ['objectName' ],
73- log ['eventCreateDate' ], user , metadata_data ])
75+ click .secho ('"{0}","{1}","{2}","{3}","{4}","{5}"' .format (
76+ log ['eventName' ],
77+ label ,
78+ log ['objectName' ],
79+ utils .clean_time (log ['eventCreateDate' ], in_format = log_time ),
80+ user ,
81+ metadata_data )
82+ )
7483 else :
75- table .add_row ([log ['eventName' ], label , log ['objectName' ],
76- log ['eventCreateDate' ], user ])
77- env .fout (table )
84+ click .secho ('"{0}","{1}","{2}","{3}","{4}"' .format (
85+ log ['eventName' ],
86+ label ,
87+ log ['objectName' ],
88+ utils .clean_time (log ['eventCreateDate' ], in_format = log_time ),
89+ user )
90+ )
91+
92+ row_count = row_count + 1
93+ if row_count >= limit :
94+ return
95+
0 commit comments