コード例 #1
0
 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 )
コード例 #2
0
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()
コード例 #3
0
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()