def merge_metric_files()

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