def print_screen(self, a_db, a_current_display_time, a_sort_criteria): """ print on screen """ #analyze_utils.print_db_logfile(a_db) #constants to be put in files nb_max_active_records = 70 nb_max_finished_records = 30 # get min max screen size self._maxy, self._maxx = self._full_screen.getmaxyx() total_pad = curses.newpad(100, 300) active_pad = curses.newpad(500, 500) finished_pad = curses.newpad(500, 500) active_stripe = "-ACTIVE------------------------------------------------------------------------------------------------------------------------------------------------------------" active_header = " filename | size | uplinked | queued | jobname | channel | blocked | announced | aborted |" finished_stripe = "-FINISHED------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" finished_header = " filename | size | uplinked | queued | jobname | channel | blocked | announced | aborted | sent | trans time |" active_template = "%s|%s|%s|%s|%s|%s|%s|%s|%s|" finished_template = "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|" active_pad.addstr(1, 1, active_stripe) active_pad.addstr(2, 1, active_header) active_printed_records = 0 finished_pad.addstr(1, 1, finished_stripe) finished_pad.addstr(2, 1, finished_header) finished_printed_records = 0 #set x x_active = 3 x_finished = 3 CurseDisplay.LOG.info("------ start Printing on screen ------") #reverse iteration from the lastest records to the oldest one for index in self.get_iter_from_sort_criteria(a_db, a_sort_criteria): # if index which is the last_update_time is superior to the previous_display_time # meaning was updated since the last display then change color if not self._previous_display_time or ( index > self._previous_display_time): color = curses.A_BOLD else: color = curses.color_pair(0) for record in a_db._last_update[index]: begin_time = None #reduce filename and jobname size to 50 filename = record['filename'] if filename: filename = os.path.basename(filename) #will not fail if name < 50 filename = filename[:50] else: filename = "--" jobname = record['jobname'] if jobname: #will not fail if name < 20 jobelems = jobname.split('-') jobname = "%s..-%s" % (jobname[:13], jobelems[-1]) else: jobname = "--" channel = record.get('channel', None) if not channel: channel = "--" else: #shrink chan name if start with EUMETSAT if channel.startswith("EUMETSAT Data Channel"): channel = channel.replace("EUMETSAT Data Channel", "EUM Chan") size = record.get('size', None) if not size: size = "--" else: size = utils.human_size(size) uplinked = record.get('uplinked', None) if not uplinked: uplinked = "--" else: begin_time = uplinked uplinked = time_utils.get_simple_time_str(uplinked) queued = record.get('queued', None) if not queued: queued = "--" else: if not begin_time: begin_time = queued queued = time_utils.get_simple_time_str(queued) aborted = record.get('aborted', None) if not aborted: aborted = "--" else: aborted = time_utils.get_simple_time_str(aborted) annouc = record.get('announced', None) if not annouc: annouc = "--" else: annouc = time_utils.get_simple_time_str(annouc) blocked = record.get('blocked', None) if not blocked: blocked = "--" else: blocked = time_utils.get_simple_time_str(blocked) finished = record.get('finished', None) total_time = None #active if not finished: finished = "--" total_time = "--" else: if begin_time: try: total_time = utils.human_time( (finished - begin_time).seconds) except TypeError, err: self.LOG.error("record = %s\n" % (record)) self.LOG.exception(err) raise err if total_time == 0: total_time = "< 1s" else: total_time = "--" finished = time_utils.get_simple_time_str(finished) #add records to be printed in the right area #it means this is active if finished == "--": if active_printed_records < nb_max_active_records: #format template str_to_print = active_template % (filename.ljust(50) if filename != '--' else filename.center(50), \ size.center(10), uplinked.center(12),\ queued.center(12),jobname.center(19), channel.center(15),\ blocked.center(12), annouc.center(12),\ aborted.center(12)) #insert record to be printed active_pad.addstr(x_active, 1, str_to_print, color) x_active += 1 active_printed_records += 1 else: #finished if finished_printed_records < nb_max_finished_records: #format template str_to_print = finished_template % (filename.ljust(50) if filename != '--' else filename.center(50), \ size.center(10), uplinked.center(12),\ queued.center(12),jobname.center(19), channel.center(15),\ blocked.center(12), annouc.center(12),\ aborted.center(12), finished.center(12), str(total_time).center(12)) #insert record to be printed finished_pad.addstr(x_finished, 1, str_to_print, color) x_finished += 1 finished_printed_records += 1
def print_screen(self, a_db, a_current_time, a_sort_criteria): """ print a table """ header_Active = "--Active----------------------------------------------------------------------------------------------------------------------------------------------------------\n" header_Finished = "--Finished--------------------------------------------------------------------------------------------------------------------------------------------------------\n" header = " filename | uplinked | queued | jobname | blocked | announced | finished |\n" template = "%s|%s|%s|%s|%s|%s|%s|\n" active_data = header_Active + header finish_data = header_Finished + header #reverse iteration from the lastest records to the oldest one for index in a_db._last_update.get_sorted_iter(sorted, reverse=True): record_list = a_db._last_update[index] for record in record_list: #reduce filename and jobname size to 50 filename = record['filename'] if filename: filename = os.path.basename(filename) #will not fail if name < 50 filename = filename[:50] else: filename = "-" jobname = record['jobname'] if jobname: #will not fail if name < 20 jobelems = jobname.split('-') jobname = "%s..-%s" % (jobname[:13], jobelems[-1]) else: jobname = "-" uplinked = record.get('uplinked', None) if not uplinked: uplinked = "-" else: uplinked = time_utils.get_simple_time_str(uplinked) queued = record.get('queued', None) if not queued: queued = "-" else: queued = time_utils.get_simple_time_str(queued) annouc = record.get('announced', None) if not annouc: annouc = "-" else: annouc = time_utils.get_simple_time_str(annouc) blocked = record.get('blocked', None) if not blocked: blocked = "-" else: blocked = time_utils.get_simple_time_str(blocked) finished = record.get('finished', None) if not finished: finished = "-" else: finished = time_utils.get_simple_time_str(finished) if finished == '-': active_data += template % (filename.ljust(50) if filename != '-' else filename.center(50), uplinked.center(17), \ queued.center(17),jobname.center(20), \ blocked.center(17), annouc.center(17),\ finished.center(17)) else: finish_data += template % (filename.ljust(50) if filename != '-' else filename.center(50), uplinked.center(17), \ queued.center(17),jobname.center(20), \ blocked.center(17), annouc.center(17),\ finished.center(17)) time.sleep(2) print("%s\n%s" % (active_data, finish_data))
self._previous_nb_jobs.append(results['active_file_transfers']) first_line = "Active transfers: %s Blocked transfers : %s Active jobs: %s Total nb entries: %s Finished entries in db: %s " \ % (str(results['active_file_transfers']).ljust(3), \ str(results['blocked_file_transfers']).ljust(3), \ str(results['nb_jobs']).ljust(3), \ str(results['total_nb_of_transfers']).ljust(3), \ str(results['finished_file_transfers']).ljust(3)) sec_line = "New entries : %s Finished transfers: %s Cleaned entries : %s [ last refresh %s ]" % \ (str(results['since_last_print']['deleted']).ljust(3), \ str(results['since_last_print']['new']).ljust(3), \ str(results['since_last_print']['finished']).ljust(3),\ time_utils.get_simple_time_str(a_current_display_time)) total_pad.addstr(1, 1, first_line, curses.A_BOLD) total_pad.addstr(2, 1, sec_line, curses.A_BOLD) #current version of curse doesn't support UTF-8 so cannot use spark #third_line = u"nb jobs trend: %s" % (utils.spark_string(self._previous_nb_jobs)) #total_pad.addstr(3, 1, third_line.encode("utf-8")) total_pad.noutrefresh(1, 1, 1, 1, 3, self._maxx - 2) active_pad.noutrefresh(1, 1, 4, 1, int(round(self._maxy - 2) * (2.00 / 3)) + 1, self._maxx - 2)
def print_screen(self, a_db, a_current_display_time, a_sort_criteria): """ print on screen """ #analyze_utils.print_db_logfile(a_db) #constants to be put in files nb_max_active_records = 70 nb_max_finished_records = 30 # get min max screen size self._maxy, self._maxx = self._full_screen.getmaxyx() total_pad = curses.newpad(100, 300) active_pad = curses.newpad(500, 500) finished_pad = curses.newpad(500, 500) active_stripe = "-ACTIVE------------------------------------------------------------------------------------------------------------------------------------------------------------" active_header = " filename | size | uplinked | queued | jobname | channel | blocked | announced | aborted |" finished_stripe = "-FINISHED------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------" finished_header = " filename | size | uplinked | queued | jobname | channel | blocked | announced | aborted | sent | trans time |" active_template = "%s|%s|%s|%s|%s|%s|%s|%s|%s|" finished_template = "%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|%s|" active_pad.addstr(1, 1, active_stripe) active_pad.addstr(2, 1, active_header) active_printed_records = 0 finished_pad.addstr(1, 1, finished_stripe) finished_pad.addstr(2, 1, finished_header) finished_printed_records = 0 #set x x_active = 3 x_finished = 3 CurseDisplay.LOG.info("------ start Printing on screen ------") #reverse iteration from the lastest records to the oldest one for index in self.get_iter_from_sort_criteria(a_db, a_sort_criteria): # if index which is the last_update_time is superior to the previous_display_time # meaning was updated since the last display then change color if not self._previous_display_time or (index > self._previous_display_time): color = curses.A_BOLD else: color = curses.color_pair(0) for record in a_db._last_update[index]: begin_time = None #reduce filename and jobname size to 50 filename = record['filename'] if filename: filename = os.path.basename(filename) #will not fail if name < 50 filename = filename[:50] else: filename = "--" jobname = record['jobname'] if jobname: #will not fail if name < 20 jobelems = jobname.split('-') jobname = "%s..-%s" % (jobname[:13], jobelems[-1]) else: jobname = "--" channel = record.get('channel', None) if not channel: channel = "--" else: #shrink chan name if start with EUMETSAT if channel.startswith("EUMETSAT Data Channel"): channel = channel.replace("EUMETSAT Data Channel", "EUM Chan") size = record.get('size', None) if not size: size = "--" else: size = utils.human_size(size) uplinked = record.get('uplinked', None) if not uplinked: uplinked = "--" else: begin_time = uplinked uplinked = time_utils.get_simple_time_str(uplinked) queued = record.get('queued', None) if not queued: queued = "--" else: if not begin_time : begin_time = queued queued = time_utils.get_simple_time_str(queued) aborted = record.get('aborted', None) if not aborted: aborted = "--" else: aborted = time_utils.get_simple_time_str(aborted) annouc = record.get('announced', None) if not annouc: annouc = "--" else: annouc = time_utils.get_simple_time_str(annouc) blocked = record.get('blocked', None) if not blocked: blocked = "--" else: blocked = time_utils.get_simple_time_str(blocked) finished = record.get('finished', None) total_time = None #active if not finished: finished = "--" total_time = "--" else: if begin_time: try: total_time = utils.human_time( (finished - begin_time).seconds ) except TypeError, err: self.LOG.error("record = %s\n" % (record)) self.LOG.exception(err) raise err if total_time == 0: total_time = "< 1s" else: total_time = "--" finished = time_utils.get_simple_time_str(finished) #add records to be printed in the right area #it means this is active if finished == "--": if active_printed_records < nb_max_active_records: #format template str_to_print = active_template % (filename.ljust(50) if filename != '--' else filename.center(50), \ size.center(10), uplinked.center(12),\ queued.center(12),jobname.center(19), channel.center(15),\ blocked.center(12), annouc.center(12),\ aborted.center(12)) #insert record to be printed active_pad.addstr(x_active, 1, str_to_print, color) x_active += 1 active_printed_records += 1 else: #finished if finished_printed_records < nb_max_finished_records: #format template str_to_print = finished_template % (filename.ljust(50) if filename != '--' else filename.center(50), \ size.center(10), uplinked.center(12),\ queued.center(12),jobname.center(19), channel.center(15),\ blocked.center(12), annouc.center(12),\ aborted.center(12), finished.center(12), str(total_time).center(12)) #insert record to be printed finished_pad.addstr(x_finished, 1, str_to_print, color ) x_finished += 1 finished_printed_records += 1
def print_screen(self, a_db, a_current_time, a_sort_criteria): """ print a table """ header_Active = "--Active----------------------------------------------------------------------------------------------------------------------------------------------------------\n" header_Finished = "--Finished--------------------------------------------------------------------------------------------------------------------------------------------------------\n" header = " filename | uplinked | queued | jobname | blocked | announced | finished |\n" template = "%s|%s|%s|%s|%s|%s|%s|\n" active_data = header_Active + header finish_data = header_Finished + header #reverse iteration from the lastest records to the oldest one for index in a_db._last_update.get_sorted_iter(sorted, reverse = True): record_list = a_db._last_update[index] for record in record_list: #reduce filename and jobname size to 50 filename = record['filename'] if filename: filename = os.path.basename(filename) #will not fail if name < 50 filename = filename[:50] else: filename = "-" jobname = record['jobname'] if jobname: #will not fail if name < 20 jobelems = jobname.split('-') jobname = "%s..-%s" % (jobname[:13], jobelems[-1]) else: jobname = "-" uplinked = record.get('uplinked', None) if not uplinked: uplinked = "-" else: uplinked = time_utils.get_simple_time_str(uplinked) queued = record.get('queued', None) if not queued: queued = "-" else: queued = time_utils.get_simple_time_str(queued) annouc = record.get('announced', None) if not annouc: annouc = "-" else: annouc = time_utils.get_simple_time_str(annouc) blocked = record.get('blocked', None) if not blocked: blocked = "-" else: blocked = time_utils.get_simple_time_str(blocked) finished = record.get('finished', None) if not finished: finished = "-" else: finished = time_utils.get_simple_time_str(finished) if finished == '-': active_data += template % (filename.ljust(50) if filename != '-' else filename.center(50), uplinked.center(17), \ queued.center(17),jobname.center(20), \ blocked.center(17), annouc.center(17),\ finished.center(17)) else: finish_data += template % (filename.ljust(50) if filename != '-' else filename.center(50), uplinked.center(17), \ queued.center(17),jobname.center(20), \ blocked.center(17), annouc.center(17),\ finished.center(17)) time.sleep(2) print("%s\n%s" %(active_data, finish_data) )
self._previous_nb_jobs.append(results['active_file_transfers']) first_line = "Active transfers: %s Blocked transfers : %s Active jobs: %s Total nb entries: %s Finished entries in db: %s " \ % (str(results['active_file_transfers']).ljust(3), \ str(results['blocked_file_transfers']).ljust(3), \ str(results['nb_jobs']).ljust(3), \ str(results['total_nb_of_transfers']).ljust(3), \ str(results['finished_file_transfers']).ljust(3)) sec_line = "New entries : %s Finished transfers: %s Cleaned entries : %s [ last refresh %s ]" % \ (str(results['since_last_print']['deleted']).ljust(3), \ str(results['since_last_print']['new']).ljust(3), \ str(results['since_last_print']['finished']).ljust(3),\ time_utils.get_simple_time_str(a_current_display_time)) total_pad.addstr(1, 1, first_line , curses.A_BOLD) total_pad.addstr(2, 1, sec_line, curses.A_BOLD) #current version of curse doesn't support UTF-8 so cannot use spark #third_line = u"nb jobs trend: %s" % (utils.spark_string(self._previous_nb_jobs)) #total_pad.addstr(3, 1, third_line.encode("utf-8")) total_pad.noutrefresh(1, 1, 1, 1, 3, self._maxx-2) active_pad.noutrefresh(1, 1, 4, 1, int(round(self._maxy-2)*(2.00/3))+1, self._maxx-2) finished_pad.noutrefresh(1, 1, int(round((self._maxy-2)*(2.00/3)))+2, 1, self._maxy-2, self._maxx-2)