def launch_simulation(self, current_user_id, zip_directory, project_gid): try: project = self.project_service.find_project_lazy_by_gid( project_gid) except ProjectServiceException: raise InvalidIdentifierException() try: simulator_h5_name = DirLoader( zip_directory, None).find_file_for_has_traits_type(Simulator) simulator_file = os.path.join(zip_directory, simulator_h5_name) except IOError: raise InvalidInputException( 'No Simulator h5 file found in the archive') try: simulator_algorithm = AlgorithmService( ).get_algorithm_by_module_and_class(SimulatorAdapter.__module__, SimulatorAdapter.__name__) simulation = self.simulator_service.prepare_simulation_on_server( user_id=current_user_id, project=project, algorithm=simulator_algorithm, zip_folder_path=zip_directory, simulator_file=simulator_file) return simulation.gid except Exception as excep: self.logger.error(excep, exc_info=True) raise ServiceException(str(excep))
def load_burst_configuration_from_folder(simulator_folder, project): bc_h5_filename = DirLoader( simulator_folder, None).find_file_for_has_traits_type(BurstConfiguration) burst_config = BurstConfiguration(project.id) with BurstConfigurationH5( os.path.join(simulator_folder, bc_h5_filename)) as bc_h5: bc_h5.load_into(burst_config) return burst_config
def load_simulation_from_zip(self, zip_file, project): import_service = ImportService() simulator_folder = import_service.import_simulator_configuration_zip(zip_file) simulator_h5_filename = DirLoader(simulator_folder, None).find_file_for_has_traits_type(SimulatorAdapterModel) simulator_h5_filepath = os.path.join(simulator_folder, simulator_h5_filename) simulator = h5.load_view_model_from_file(simulator_h5_filepath) burst_config = self.load_burst_configuration_from_folder(simulator_folder, project) burst_config_copy = burst_config.clone() simulator.generic_attributes.parent_burst = burst_config_copy.gid return simulator, burst_config_copy, simulator_folder
def load_from_zip(self, zip_file, project): import_service = ImportService() simulator_folder = import_service.import_simulator_configuration_zip( zip_file) simulator_h5_filename = DirLoader( simulator_folder, None).find_file_for_has_traits_type(Simulator) with SimulatorH5(os.path.join(simulator_folder, simulator_h5_filename)) as sim_h5: simulator_gid = sim_h5.gid.load() simulator = SimulatorSerializer.deserialize_simulator( simulator_gid, simulator_folder) burst_config = self.burst_service.load_burst_configuration_from_folder( simulator_folder, project) return simulator, burst_config