def stage_out_to_operation_folder(working_dir, operation, simulator_gid):
        # type: (Storage, Operation, typing.Union[uuid.UUID, str]) -> (list, Operation, str)
        encrypted_files = HPCSchedulerClient._stage_out_results(
            working_dir, simulator_gid)
        encryption_handler = EncryptionHandler(simulator_gid)

        simulation_results = list()
        metric_op = None
        metric_file = None
        for encrypted_file in encrypted_files:
            if os.path.basename(encrypted_file).startswith(
                    DatatypeMeasureH5.file_name_base()):
                metric_op_dir, metric_op = BurstService.prepare_metrics_operation(
                    operation)
                metric_files = encryption_handler.decrypt_files_to_dir(
                    [encrypted_file], metric_op_dir)
                metric_file = metric_files[0]
            else:
                simulation_results.append(encrypted_file)

        project = dao.get_project_by_id(operation.fk_launched_in)
        operation_dir = HPCSchedulerClient.file_handler.get_project_folder(
            project, str(operation.id))
        h5_filenames = EncryptionHandler(simulator_gid).decrypt_files_to_dir(
            simulation_results, operation_dir)
        return h5_filenames, metric_op, metric_file
Ejemplo n.º 2
0
    def _handle_metric_results(metric_encrypted_file, metric_vm_encrypted_file,
                               operation, encryption_handler):
        if not metric_encrypted_file:
            return None, None

        metric_op_dir, metric_op = BurstService.prepare_metrics_operation(
            operation)
        metric_files = encryption_handler.decrypt_files_to_dir(
            [metric_encrypted_file, metric_vm_encrypted_file], metric_op_dir)
        metric_file = metric_files[0]
        metric_vm = h5.load_view_model_from_file(metric_files[1])
        metric_op.view_model_gid = metric_vm.gid.hex
        dao.store_entity(metric_op)
        return metric_op, metric_file