added the tool that was created on 30/05/2022
work related to https://bugzilla.ipr.univ-rennes1.fr/show_bug.cgi?id=3368
This commit is contained in:
		
							parent
							
								
									0840c37eec
								
							
						
					
					
						commit
						5241bbe3f8
					
				|  | @ -0,0 +1,106 @@ | ||||||
|  | from cocluto.inventory import Inventory | ||||||
|  | from cocluto.SimpaDbUtil import SqlDatabaseReader, SqlFile | ||||||
|  | from urllib.parse import urlparse | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def get_md_table_separator_line(columns_width): | ||||||
|  |     sep_line = '|' | ||||||
|  |     for col_width in columns_width: | ||||||
|  |         sep_line += '-' * col_width | ||||||
|  |         sep_line += '|' | ||||||
|  |     return sep_line | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def render_table_md(columns_data, labels): | ||||||
|  |     assert len(labels) == len(columns_data) | ||||||
|  |     num_cols = len(columns_data) | ||||||
|  |     num_rows = len(columns_data[0]) | ||||||
|  |     cols_width = [0 for col in range(num_cols)] | ||||||
|  |     for icol in range(num_cols): | ||||||
|  |         cols_width[icol] = max(cols_width[icol], len(labels[icol])) | ||||||
|  |         for irow in range(num_rows): | ||||||
|  |             cols_width[icol] = max(cols_width[icol], len(columns_data[icol][irow])) | ||||||
|  |     sep_line = get_md_table_separator_line([col_width + 2 for col_width in cols_width]) | ||||||
|  |     line_format = "|" + ''.join([" %%%ds |" % col_width for col_width in cols_width]) | ||||||
|  |     print(sep_line) | ||||||
|  |     print(line_format % tuple(labels)) | ||||||
|  |     print(sep_line) | ||||||
|  |     for irow in range(num_rows): | ||||||
|  |         row = [] | ||||||
|  |         for icol in range(num_cols): | ||||||
|  |             row.append(columns_data[icol][irow]) | ||||||
|  | 
 | ||||||
|  |         print(line_format % tuple(row)) | ||||||
|  |     print(sep_line) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def render_table_wiki(columns_data, labels): | ||||||
|  |     assert len(labels) == len(columns_data) | ||||||
|  |     num_cols = len(columns_data) | ||||||
|  |     num_rows = len(columns_data[0]) | ||||||
|  |     cols_width = [0 for col in range(num_cols)] | ||||||
|  |     for icol in range(num_cols): | ||||||
|  |         cols_width[icol] = max(cols_width[icol], len(labels[icol])) | ||||||
|  |         for irow in range(num_rows): | ||||||
|  |             cols_width[icol] = max(cols_width[icol], len(columns_data[icol][irow])) | ||||||
|  |     cols_width = [col_width + 1 for col_width in cols_width] | ||||||
|  |     header_line_format = "^" + ''.join([" %%%ds ^" % col_width for col_width in cols_width]) | ||||||
|  |     line_format = "|" + ''.join([" %%%ds |" % col_width for col_width in cols_width]) | ||||||
|  |     print(header_line_format % tuple(labels)) | ||||||
|  |     for irow in range(num_rows): | ||||||
|  |         row = [] | ||||||
|  |         for icol in range(num_cols): | ||||||
|  |             row.append(columns_data[icol][irow]) | ||||||
|  | 
 | ||||||
|  |         print(line_format % tuple(row)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | def print_machine_table(machines_fqdn): | ||||||
|  |     itinv_db_url = "file:///home/graffy/work/simpaweb/itinv.git/itinv.sql" | ||||||
|  |     url_parts = urlparse(itinv_db_url) | ||||||
|  |     sql_source = SqlFile(url_parts.path) | ||||||
|  |     sql_reader = SqlDatabaseReader(sql_source) | ||||||
|  |     inventory = Inventory(sql_reader) | ||||||
|  | 
 | ||||||
|  |     machines_name = [] | ||||||
|  |     machines_spec_id = [] | ||||||
|  |     machines_serial_number = [] | ||||||
|  |     for machine_fqdn in machines_fqdn: | ||||||
|  |         machine_name = machine_fqdn.split('.')[0] | ||||||
|  |         machine_spec_id = inventory.machine_name_to_machine_spec_id(machine_name) | ||||||
|  |         serial_number = inventory.get_machine_serial_number(machine_name) | ||||||
|  | 
 | ||||||
|  |         machines_name.append(machine_name) | ||||||
|  |         machines_spec_id.append(machine_spec_id) | ||||||
|  |         machines_serial_number.append(serial_number) | ||||||
|  |     name_label = 'Nom' | ||||||
|  |     model_label = 'Modèle' | ||||||
|  |     serial_label = 'Numéro de Série' | ||||||
|  | 
 | ||||||
|  |     render_table_md([machines_name, machines_spec_id, machines_serial_number], [name_label, model_label, serial_label]) | ||||||
|  |     render_table_wiki([machines_name, machines_spec_id, machines_serial_number], [name_label, model_label, serial_label]) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     machines_fqdn = [ | ||||||
|  |         'physix49.ipr.univ-rennes1.fr', | ||||||
|  |         'physix50.ipr.univ-rennes1.fr', | ||||||
|  |         'physix51.ipr.univ-rennes1.fr', | ||||||
|  |         'physix52.ipr.univ-rennes1.fr', | ||||||
|  |         'physix53.ipr.univ-rennes1.fr', | ||||||
|  |         'physix54.ipr.univ-rennes1.fr', | ||||||
|  |         'physix55.ipr.univ-rennes1.fr', | ||||||
|  |         'physix56.ipr.univ-rennes1.fr', | ||||||
|  |         'physix57.ipr.univ-rennes1.fr', | ||||||
|  |         'physix58.ipr.univ-rennes1.fr', | ||||||
|  |         'simpatix59.ipr.univ-rennes1.fr', | ||||||
|  |         'physix72.ipr.univ-rennes1.fr', | ||||||
|  |         'physix73.ipr.univ-rennes1.fr', | ||||||
|  |         'physix74.ipr.univ-rennes1.fr', | ||||||
|  |         'physix75.ipr.univ-rennes1.fr', | ||||||
|  |         'physix90.ipr.univ-rennes1.fr', | ||||||
|  |         'physix91.ipr.univ-rennes1.fr', | ||||||
|  |         'alambix103.ipr.univ-rennes1.fr', | ||||||
|  |         'alambix104.ipr.univ-rennes1.fr' | ||||||
|  |     ] | ||||||
|  |     print_machine_table(machines_fqdn) | ||||||
		Loading…
	
		Reference in New Issue