@@ -55,6 +55,9 @@ def execute(self, json_):
5555 self ._log_create_experiment (response ,
5656 "New experiment created and started with ID: {}" ,
5757 "Unknown error while creating/starting the experiment" )
58+ if response .ok :
59+ return response .json ()
60+ return None
5861
5962
6063def start_experiment (experiment_id , api = experiments_api ):
@@ -182,16 +185,17 @@ class ExperimentLogsCommand(common.CommandBase):
182185 is_logs_complete = False
183186
184187 def execute (self , experiment_id , line , limit , follow ):
188+ if follow :
189+ self .logger .log ("Awaiting logs..." )
190+
185191 self .last_line_number = line
186192 table_title = "Experiment %s logs" % experiment_id
187- table_data = [("LINE" , "MESSAGE" )]
193+ table_data = [("JOB ID" , " LINE" , "MESSAGE" )]
188194 table = terminaltables .AsciiTable (table_data , title = table_title )
189195
190196 while not self .is_logs_complete :
191- print ("follow " + str (follow ))
192197 response = self ._get_logs (experiment_id , self .last_line_number , limit )
193198
194- print ("got data" )
195199 try :
196200 data = response .json ()
197201 if not response .ok :
@@ -203,11 +207,8 @@ def execute(self, experiment_id, line, limit, follow):
203207 self .logger .log ("Error while parsing response data: {}" .format (e ))
204208 return
205209 else :
206- print ("parsed data" )
207- self ._log_logs_list (data , table , table_data )
208- print ("logged data" )
210+ self ._log_logs_list (data , table , table_data , follow )
209211
210- print ("follow " + follow )
211212 if not follow :
212213 self .is_logs_complete = True
213214
@@ -220,15 +221,25 @@ def _get_logs(self, experiment_id, line, limit):
220221 };
221222 return self .api .get (self .other_url , params = params )
222223
223- def _log_logs_list (self , data , table , table_data ):
224+ def _log_logs_list (self , data , table , table_data , follow ):
224225 if not data :
225226 self .logger .log ("No Logs found" )
226227 else :
227- table_str = self ._make_table (data , table , table_data )
228- if len (table_str .splitlines ()) > get_terminal_lines ():
229- pydoc .pager (table_str )
228+ if follow :
229+ # TODO track number of jobs seen to look for PSEOF
230+ if data [- 1 ].get ("message" ) == "PSEOF" :
231+ self .is_logs_complete = True
232+ else :
233+ self .last_line_number = data [- 1 ].get ("line" )
234+ for log in data :
235+ log_str = "{}\t {}\t {}"
236+ self .logger .log (log_str .format (style (fg = "blue" , text = str (log .get ("jobId" ))), style (fg = "red" , text = str (log .get ("line" ))), log .get ("message" )))
230237 else :
231- self .logger .log (table_str )
238+ table_str = self ._make_table (data , table , table_data )
239+ if len (table_str .splitlines ()) > get_terminal_lines ():
240+ pydoc .pager (table_str )
241+ else :
242+ self .logger .log (table_str )
232243
233244 def _make_table (self , logs , table , table_data ):
234245 if logs [- 1 ].get ("message" ) == "PSEOF" :
0 commit comments