def __migrate_user_id(context): output_folder = os.path.join(context.log_folder, 'processes') if not os.path.exists(output_folder): return log_files = [ os.path.join(output_folder, file) for file in os.listdir(output_folder) if file.lower().endswith('.log') ] for log_file in log_files: (correct, parameters_text ) = ExecutionLoggingService._read_parameters_text(log_file) if not correct: continue parameters = ExecutionLoggingService._parse_history_parameters( parameters_text) if not parameters or ('user' not in parameters): continue if ('user_id' in parameters) and ('user_name' in parameters): continue file_content = file_utils.read_file(log_file, keep_newlines=True) file_parts = file_content.split( execution.logging.OUTPUT_STARTED_MARKER + os.linesep, 1) parameters_text = file_parts[0] user = parameters['user'] if 'user_id' not in parameters: parameters_text += 'user_id:' + user + os.linesep if 'user_name' not in parameters: parameters_text += 'user_name:' + user + os.linesep new_content = parameters_text + execution.logging.OUTPUT_STARTED_MARKER + os.linesep + file_parts[ 1] file_utils.write_file(log_file, new_content.encode(execution.logging.ENCODING), byte_content=True)
def __migrate_user_id(context): output_folder = os.path.join(context.log_folder, 'processes') if not os.path.exists(output_folder): return log_files = [os.path.join(output_folder, file) for file in os.listdir(output_folder) if file.lower().endswith('.log')] for log_file in log_files: (correct, parameters_text) = ExecutionLoggingService._read_parameters_text(log_file) if not correct: continue parameters = ExecutionLoggingService._parse_history_parameters(parameters_text) if not parameters or ('user' not in parameters): continue if ('user_id' in parameters) and ('user_name' in parameters): continue file_content = file_utils.read_file(log_file, keep_newlines=True) file_parts = file_content.split(execution.logging.OUTPUT_STARTED_MARKER + os.linesep, 1) parameters_text = file_parts[0] user = parameters['user'] if 'user_id' not in parameters: parameters_text += 'user_id:' + user + os.linesep if 'user_name' not in parameters: parameters_text += 'user_name:' + user + os.linesep new_content = parameters_text + execution.logging.OUTPUT_STARTED_MARKER + os.linesep + file_parts[1] file_utils.write_file(log_file, new_content.encode(execution.logging.ENCODING), byte_content=True)
def __migrate_old_files(context): output_folder = os.path.join(context.log_folder, 'processes') if not os.path.exists(output_folder): return log_files = [ os.path.join(output_folder, file) for file in os.listdir(output_folder) if file.lower().endswith('.log') ] def is_new_format(log_file): with open(log_file, 'r') as f: first_line = f.readline().strip() if not first_line.startswith('id:'): return False for line in f: if line.strip() == execution.logging.OUTPUT_STARTED_MARKER: return True return False old_files = [ log_file for log_file in log_files if not is_new_format(log_file) ] if not old_files: return existing_ids = set() for file in log_files: correct, parameters_text = ExecutionLoggingService._read_parameters_text( file) if not correct: continue parameters = ExecutionLoggingService._parse_history_parameters( parameters_text) if not parameters or 'id' not in parameters: continue existing_ids.add(parameters['id']) id_generator = (str(id) for id in itertools.count()) id_generator = filter(lambda id: id not in existing_ids, id_generator) for old_file in old_files: log_basename = os.path.basename(old_file) filename = os.path.splitext(log_basename)[0] match = re.fullmatch( '(.+)_([^_]+)_((\d\d)(\d\d)(\d\d)_(\d\d)(\d\d)(\d\d))', filename) if match: script_name = match.group(1) username = match.group(2) start_time = datetime.strptime(match.group(3), '%y%m%d_%H%M%S') id = next(id_generator) else: script_name = 'unknown' username = '******' start_time = sec_to_datetime(os.path.getctime(old_file)) id = next(id_generator) new_begin = '' new_begin += 'id:' + id + '\n' new_begin += 'user_name:' + username + '\n' new_begin += 'user_id:' + username + '\n' new_begin += 'script:' + script_name + '\n' new_begin += 'start_time:' + str(to_millis(start_time)) + '\n' new_begin += 'command:unknown' + '\n' new_begin += execution.logging.OUTPUT_STARTED_MARKER + '\n' file_content = file_utils.read_file(old_file) file_content = new_begin + file_content file_utils.write_file(old_file, file_content)
def __migrate_old_files(context): output_folder = os.path.join(context.log_folder, 'processes') if not os.path.exists(output_folder): return log_files = [os.path.join(output_folder, file) for file in os.listdir(output_folder) if file.lower().endswith('.log')] def is_new_format(log_file): with open(log_file, 'r') as f: first_line = f.readline().strip() if not first_line.startswith('id:'): return False for line in f: if line.strip() == execution.logging.OUTPUT_STARTED_MARKER: return True return False old_files = [log_file for log_file in log_files if not is_new_format(log_file)] if not old_files: return existing_ids = set() for file in log_files: correct, parameters_text = ExecutionLoggingService._read_parameters_text(file) if not correct: continue parameters = ExecutionLoggingService._parse_history_parameters(parameters_text) if not parameters or 'id' not in parameters: continue existing_ids.add(parameters['id']) id_generator = (str(id) for id in itertools.count()) id_generator = filter(lambda id: id not in existing_ids, id_generator) for old_file in old_files: log_basename = os.path.basename(old_file) filename = os.path.splitext(log_basename)[0] match = re.fullmatch('(.+)_([^_]+)_((\d\d)(\d\d)(\d\d)_(\d\d)(\d\d)(\d\d))', filename) if match: script_name = match.group(1) username = match.group(2) start_time = datetime.strptime(match.group(3), '%y%m%d_%H%M%S') id = next(id_generator) else: script_name = 'unknown' username = '******' start_time = sec_to_datetime(os.path.getctime(old_file)) id = next(id_generator) new_begin = '' new_begin += 'id:' + id + '\n' new_begin += 'user_name:' + username + '\n' new_begin += 'user_id:' + username + '\n' new_begin += 'script:' + script_name + '\n' new_begin += 'start_time:' + str(to_millis(start_time)) + '\n' new_begin += 'command:unknown' + '\n' new_begin += execution.logging.OUTPUT_STARTED_MARKER + '\n' file_content = file_utils.read_file(old_file) file_content = new_begin + file_content file_utils.write_file(old_file, file_content)