in docker/services/metrics_service.py [0:0]
def merge_metric_files(self, metrics_folder_path, algorithm: Algorithm):
metric_files = [y for x in os.walk(metrics_folder_path)
for y in glob.glob(os.path.join(x[0], '*.csv'))]
instance_id_date_mapping = {}
for file in metric_files:
path_items = file.split(os.sep)[::-1]
instance_id, date = path_items[0:2]
instance_id = instance_id.replace(CSV_EXTENSION, '')
if instance_id in instance_id_date_mapping:
instance_id_date_mapping[instance_id].append(file)
else:
instance_id_date_mapping[instance_id] = [file]
resulted_files = []
for instance_id, files in instance_id_date_mapping.items():
if len(files) == 1:
resulted_files.append(files[0])
continue
most_recent = max(files)
files = sorted(files)
csv_to_combine = [self.read_metrics(f, algorithm=algorithm,
parse_index=False)
for f in files]
combined_csv = pd.concat(csv_to_combine)
combined_csv.sort_values(algorithm.timestamp_attribute)
combined_csv.to_csv(most_recent, index=False)
resulted_files.append(most_recent)
for file in metric_files:
if file not in resulted_files:
os.remove(file)
return resulted_files