def check_db(self): if not self.session and not self.job : try : self.session = get_session() except Exception as err : self.session = None logging.warning( "Error creating database session: %s" % str( err ) ) else : try : self.job = self.session.query( Job ).\ filter( Job.gw_job == self.job_id ).\ order_by( Job.id ).all()[-1] except : self.job = None logging.warning( "Error finding job '%s' on the database" % self.job_id )
def run( arg ) : logging.basicConfig( format = '%(message)s', level = logging.DEBUG if arg[ '--dbg' ] else logging.DEBUG, stream = sys.stdout ) if arg[ 'define' ] : Experiment.create_files( arg[ '<name>' ], "default" if not arg[ '--from-template' ] else arg[ '--from-template' ], arg[ '--force' ], arg[ '--dir' ] ) else : # create a session to connect with the database session = get_session() try : if arg[ 'list' ] : l_exps = session.query( Experiment ) if arg[ '--pattern' ] : l_exps = l_exps.filter( Experiment.name.like( arg[ '--pattern' ].replace('*','%') ) ) if not l_exps.all() : logging.info( "There are not experiments" ) else : # Header logging.info( "\033[1;4m%-40s\033[0m" % ( "EXPERIMENT" ) ) for e in l_exps : logging.info("%-s" % ( e.name ) ) else : try : exp = session.query( Experiment ).\ filter_by( name = arg[ '<name>' ] ).one() exp.dryrun = arg[ '--dry-run' ] except NoResultFound : if arg[ 'create' ] : exp2 = Experiment() exp2.name = arg[ '<name>' ] exp2.dryrun = arg[ '--dry-run' ] exp2.prepare( update = False, directory = arg[ '--dir' ] ) session.add( exp2 ) else : raise Exception( "'%s' experiment does not exist" % arg[ '<name>' ] ) else : # Options if arg[ 'edit' ] : exp.edit( ) if arg[ 'update' ] : exp.prepare( update = True ) elif arg[ 'submit' ] : if arg['--wps-only']: exp.run_wps( rerun = arg[ '--rerun' ], priority = int( arg[ '--priority' ] ), ) else: exp.run( arg[ '--rerun' ], arg[ '--pattern' ], arg[ '--rea-state' ], int( arg[ '--priority' ] ) ) elif arg[ 'status' ] : if not arg[ '--delay' ] : exp.get_status( arg[ '--pattern' ], arg[ '--rea-state' ],arg['--show-chunks'] ) else : try: while True : cls() exp.get_status( arg[ '--pattern' ], arg[ '--rea-state' ] ) time.sleep( int( arg[ '--delay' ] ) ) except KeyboardInterrupt : pass elif arg[ 'cancel' ] : exp.cancel( arg[ '--pattern' ], arg[ '--rea-state' ], arg[ '--hard' ] ) elif arg[ 'set-priority' ] : exp.set_priority( arg[ '--pattern' ], int( arg[ '<priority>' ] ) ) elif arg[ 'statistics' ] : exp.statistics( arg[ '--pattern' ] ) elif arg[ 'delete' ] : exp.delete( ) session.delete( exp ) logging.info( "'%s' experiment has been deleted from the database" % exp.name ) elif arg[ 'create' ] : logging.info( "'%s' experiment already exists" % exp.name ) if arg[ '--dry-run' ] : session.rollback() else : session.commit() if arg[ 'submit' ] : if arg["--wps-only"]: exp.release_wps() else: exp.release() session.commit() except OperationalError as err : logging.error( err.message ) except KeyboardInterrupt : session.rollback() except Exception as err : session.rollback() #logging.error( str( err ) ) session.close() exit(str(err)) finally: session.close()
def run(arg): logging.basicConfig(format='%(message)s', level=logging.DEBUG if arg['--dbg'] else logging.INFO, stream=sys.stdout) # create a session to connect with the database session = get_session() try: try: rea = session.query( Realization ).\ filter( Realization.name == arg[ '<name>' ], Realization.exp_id != None ).one() rea.dryrun = arg['--dry-run'] except NoResultFound: raise Exception("'%s' realization does not exist" % arg['<name>']) else: if arg['submit']: rea.run(first_chunk_run=arg['<first_ch>'], last_chunk_run=arg['<last_ch>'], rerun=arg['--rerun'], priority=int(arg['--priority'])) elif arg['status']: if not arg['--delay']: rea.status_header() rea.get_status() else: try: while True: cls() rea.status_header() rea.get_status() time.sleep(int(arg['--delay'])) except KeyboardInterrupt: pass elif arg['log']: rea.get_log(arg['<chunk_id>'], arg['--dir']) elif arg['info']: rea.information() elif arg['set-priority']: rea.set_priority(int(arg['<priority>'])) elif arg['set-restart']: rea.set_restart(arg['<date>']) elif arg['get-restart']: rea.get_restart() else: rea.cancel(arg['--hard']) if arg['--dry-run']: session.rollback() else: session.commit() if arg['submit']: rea.release() session.commit() except OperationalError as err: logging.error(err.message) except KeyboardInterrupt: session.rollback() except Exception as err: session.rollback() logging.error(str(err)) finally: session.close()