def run_model(dbsession,modelrun): mapping = create_resource_mapping(modelschemas[modelrun.model_name],modelrun) modelrun.progress_state = PROGRESS_STATES['RUNNING'] dbsession.commit() kwargs = {'dbsession':dbsession,'modelrun_id':modelrun.id} kwargs.update(mapping) try: #run the model model_modules[modelrun.model_name]['method'](event_emitter=ee,**kwargs) output_mapping = resolve_output_map(mapping,modelschemas[modelrun.model_name]) for m in output_mapping: if os.path.exists(output_mapping[m]['location']): output_resource = ModelResource() output_resource.resource_type=output_mapping[m]['type'] output_resource.resource_location = output_mapping[m]['location'] output_resource.resource_size = os.stat(output_resource.resource_location).st_size modelrun.resources.append(output_resource) modelrun.progress_state=PROGRESS_STATES['FINISHED'] logging.info('done running::{modelrun}'.format(modelrun=modelrun)) except: logging.info('Erorr Happended while running model:{modelrun}'.format(modelrun=modelrun)) logging.info(traceback.format_exc()) modelrun.progress_state=PROGRESS_STATES['ERROR'] dbsession.commit()
def create_output_resources(modelrunner,output_map): resources = [] for m in output_map: if os.path.exists(output_map[m]): obj = storage.container.upload_object(output_map[m],os.path.basename(output_map[m])) output_resource = ModelResource() output_resource.resource_type = modelrunner.get_resource_type_from_map(m,'outputs') output_resource.resource_name = obj.name output_resource.resource_size = obj.size resources.append(output_resource) return resources