diff --git a/CondCore/Utilities/python/o2o.py b/CondCore/Utilities/python/o2o.py index 53b417530631d..a932c35315ade 100644 --- a/CondCore/Utilities/python/o2o.py +++ b/CondCore/Utilities/python/o2o.py @@ -145,8 +145,9 @@ def log( self, level, message ): fileLog = getattr(self.logger, level ) fileLog( message ) - def connect( self, service, auth ): - self.session = O2OMgr.getSession( self,service, auth ) + def connect( self, service, args ): + self.session = O2OMgr.getSession( self,service, args.auth ) + self.verbose = args.verbose if self.session is None: return False else: @@ -202,11 +203,17 @@ def executeJob( self, job_name, command ): else: if enabled == 0: O2OMgr.logger( self).info( 'The job %s has been disabled.', job_name ) - return 0 + return 5 try: O2OMgr.logger( self ).info('Executing job %s', job_name ) pipe = subprocess.Popen( command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT ) - out = pipe.communicate()[0] + out = '' + for line in iter(pipe.stdout.readline, ''): + if self.verbose: + sys.stdout.write(line) + sys.stdout.flush() + out += line + pipe.communicate() O2OMgr.logger( self ).info( 'Job %s returned code: %s' %(job_name,pipe.returncode) ) except Exception as e: O2OMgr.logger( self ).error( str(e) ) @@ -214,6 +221,6 @@ def executeJob( self, job_name, command ): self.endJob( pipe.returncode, out ) with open(logFile,'a') as logF: logF.write(out) - return 0 + return pipe.returncode diff --git a/CondCore/Utilities/scripts/o2oRun.py b/CondCore/Utilities/scripts/o2oRun.py index a07471976db79..fac474bba11d5 100755 --- a/CondCore/Utilities/scripts/o2oRun.py +++ b/CondCore/Utilities/scripts/o2oRun.py @@ -17,6 +17,7 @@ def main( argv ): parser.add_argument("-d","--dev", action="store_true", help="bookkeeping in dev database") parser.add_argument("-p","--private", action="store_true", help="bookkeeping in private database") parser.add_argument("-a","--auth", type=str, help="path of the authentication file") + parser.add_argument("-v","--verbose", action="store_true", help="job output mirrored to screen (default=logfile only)") args = parser.parse_args() if not args.name: @@ -32,7 +33,7 @@ def main( argv ): db_service = o2olib.prod_db_service runMgr = o2olib.O2ORunMgr() ret = -1 - if runMgr.connect( db_service, args.auth ): + if runMgr.connect( db_service, args ): ret = runMgr.executeJob( args.name, command ) return ret