def run(self, executable, initscript, infile, key, db_name, db_user, db_host): # executable: path to KernelControl executable # initscript: path to lofarinit.sh # infile: MeasurementSet for processing # key, db_name, db_user, db_host: database connection parameters # ---------------------------------------------------------------------- with log_time(self.logger): if os.path.exists(infile): self.logger.info("Processing %s" % (infile)) else: self.logger.error("Dataset %s does not exist" % (infile)) return 1 # Build a configuration parset specifying database parameters # for the kernel # ------------------------------------------------------------------ self.logger.debug("Setting up kernel parset") filesystem = "%s:%s" % (os.uname()[1], get_mountpoint(infile)) fd, parset_filename = mkstemp() kernel_parset = Parset() for key, value in { "ObservationPart.Filesystem": filesystem, "ObservationPart.Path": infile, "BBDB.Key": key, "BBDB.Name": db_name, "BBDB.User": db_user, "BBDB.Host": db_host, "ParmLog": "", "ParmLoglevel": "", "ParmDB.Sky": infile + ".sky", "ParmDB.Instrument": infile + ".instrument" }.iteritems(): kernel_parset.add(key, value) kernel_parset.writeFile(parset_filename) os.close(fd) self.logger.debug("Parset written to %s" % (parset_filename, )) # Run the kernel # Catch & log output from the kernel logger and stdout # ------------------------------------------------------------------ working_dir = mkdtemp() env = read_initscript(self.logger, initscript) try: cmd = [executable, parset_filename, "0"] self.logger.debug("Executing BBS kernel") with CatchLog4CPlus( working_dir, self.logger.name + "." + os.path.basename(infile), os.path.basename(executable), ): bbs_kernel_process = Popen(cmd, stdout=PIPE, stderr=PIPE, cwd=working_dir) sout, serr = bbs_kernel_process.communicate() log_process_output("BBS kernel", sout, serr, self.logger) if bbs_kernel_process.returncode != 0: raise CalledProcessError(bbs_kernel_process.returncode, executable) except CalledProcessError, e: self.logger.error(str(e)) return 1 finally:
def run(self, executable, infiles, db_key, db_name, db_user, db_host): """ Depricated functionality """ # executable : path to KernelControl executable # infiles : tuple of MS, instrument- and sky-model files # db_* : database connection parameters # ---------------------------------------------------------------------- self.logger.debug("executable = %s" % executable) self.logger.debug("infiles = %s" % str(infiles)) self.logger.debug("db_key = %s" % db_key) self.logger.debug("db_name = %s" % db_name) self.logger.debug("db_user = %s" % db_user) self.logger.debug("db_host = %s" % db_host) (ms, parmdb_instrument, parmdb_sky) = infiles with log_time(self.logger): if os.path.exists(ms): self.logger.info("Processing %s" % (ms)) else: self.logger.error("Dataset %s does not exist" % (ms)) return 1 # Build a configuration parset specifying database parameters # for the kernel # ------------------------------------------------------------------ self.logger.debug("Setting up BBSKernel parset") # Getting the filesystem must be done differently, using the # DataProduct keys in the parset provided by the scheduler. filesystem = "%s:%s" % (os.uname()[1], get_mountpoint(ms)) fd, parset_file = mkstemp() kernel_parset = parameterset() for key, value in { "ObservationPart.Filesystem": filesystem, "ObservationPart.Path": ms, "BBDB.Key": db_key, "BBDB.Name": db_name, "BBDB.User": db_user, "BBDB.Host": db_host, "ParmDB.Sky": parmdb_sky, "ParmDB.Instrument": parmdb_instrument }.iteritems(): kernel_parset.add(key, value) kernel_parset.writeFile(parset_file) os.close(fd) self.logger.debug("BBSKernel parset written to %s" % parset_file) # Run the kernel # Catch & log output from the kernel logger and stdout # ------------------------------------------------------------------ working_dir = mkdtemp(suffix=".%s" % (os.path.basename(__file__),)) try: self.logger.info("******** {0}".format(open(parset_file).read())) cmd = [executable, parset_file, "0"] self.logger.debug("Executing BBS kernel") with CatchLog4CPlus( working_dir, self.logger.name + "." + os.path.basename(ms), os.path.basename(executable), ): bbs_kernel_process = Popen( cmd, stdout=PIPE, stderr=PIPE, cwd=working_dir ) sout, serr = bbs_kernel_process.communicate() log_process_output("BBS kernel", sout, serr, self.logger) if bbs_kernel_process.returncode != 0: raise CalledProcessError( bbs_kernel_process.returncode, executable ) except CalledProcessError, e: self.logger.error(str(e)) return 1 finally:
def run(self, executable, infiles, db_key, db_name, db_user, db_host): """ Depricated functionality """ # executable : path to KernelControl executable # infiles : tuple of MS, instrument- and sky-model files # db_* : database connection parameters # ---------------------------------------------------------------------- self.logger.debug("executable = %s" % executable) self.logger.debug("infiles = %s" % str(infiles)) self.logger.debug("db_key = %s" % db_key) self.logger.debug("db_name = %s" % db_name) self.logger.debug("db_user = %s" % db_user) self.logger.debug("db_host = %s" % db_host) (ms, parmdb_instrument, parmdb_sky) = infiles with log_time(self.logger): if os.path.exists(ms): self.logger.info("Processing %s" % (ms)) else: self.logger.error("Dataset %s does not exist" % (ms)) return 1 # Build a configuration parset specifying database parameters # for the kernel # ------------------------------------------------------------------ self.logger.debug("Setting up BBSKernel parset") # Getting the filesystem must be done differently, using the # DataProduct keys in the parset provided by the scheduler. filesystem = "%s:%s" % (os.uname()[1], get_mountpoint(ms)) fd, parset_file = mkstemp() kernel_parset = parameterset() for key, value in { "ObservationPart.Filesystem": filesystem, "ObservationPart.Path": ms, "BBDB.Key": db_key, "BBDB.Name": db_name, "BBDB.User": db_user, "BBDB.Host": db_host, "ParmDB.Sky": parmdb_sky, "ParmDB.Instrument": parmdb_instrument }.items(): kernel_parset.add(key, value) kernel_parset.writeFile(parset_file) os.close(fd) self.logger.debug("BBSKernel parset written to %s" % parset_file) # Run the kernel # Catch & log output from the kernel logger and stdout # ------------------------------------------------------------------ working_dir = mkdtemp(suffix=".%s" % (os.path.basename(__file__), )) try: self.logger.info("******** {0}".format( open(parset_file).read())) cmd = [executable, parset_file, "0"] self.logger.debug("Executing BBS kernel") with CatchLog4CPlus( working_dir, self.logger.name + "." + os.path.basename(ms), os.path.basename(executable), ): bbs_kernel_process = Popen(cmd, stdout=PIPE, stderr=PIPE, cwd=working_dir) sout, serr = bbs_kernel_process.communicate() log_process_output("BBS kernel", sout, serr, self.logger) if bbs_kernel_process.returncode != 0: raise CalledProcessError(bbs_kernel_process.returncode, executable) except CalledProcessError as e: self.logger.error(str(e)) return 1 finally: os.unlink(parset_file) shutil.rmtree(working_dir) return 0
def run( self, executable, initscript, infile, key, db_name, db_user, db_host ): # executable: path to KernelControl executable # initscript: path to lofarinit.sh # infile: MeasurementSet for processing # key, db_name, db_user, db_host: database connection parameters # ---------------------------------------------------------------------- with log_time(self.logger): if os.path.exists(infile): self.logger.info("Processing %s" % (infile)) else: self.logger.error("Dataset %s does not exist" % (infile)) return 1 # Build a configuration parset specifying database parameters # for the kernel # ------------------------------------------------------------------ self.logger.debug("Setting up kernel parset") filesystem = "%s:%s" % (os.uname()[1], get_mountpoint(infile)) fd, parset_filename = mkstemp() kernel_parset = Parset() for key, value in { "ObservationPart.Filesystem": filesystem, "ObservationPart.Path": infile, "BBDB.Key": key, "BBDB.Name": db_name, "BBDB.User": db_user, "BBDB.Host": db_host, "ParmLog": "", "ParmLoglevel": "", "ParmDB.Sky": infile + ".sky", "ParmDB.Instrument": infile + ".instrument" }.iteritems(): kernel_parset.add(key, value) kernel_parset.writeFile(parset_filename) os.close(fd) self.logger.debug("Parset written to %s" % (parset_filename,)) # Run the kernel # Catch & log output from the kernel logger and stdout # ------------------------------------------------------------------ working_dir = mkdtemp(suffix=".%s" % (os.path.basename(__file__),)) env = read_initscript(self.logger, initscript) try: cmd = [executable, parset_filename, "0"] self.logger.debug("Executing BBS kernel") with CatchLog4CPlus( working_dir, self.logger.name + "." + os.path.basename(infile), os.path.basename(executable), ): bbs_kernel_process = Popen( cmd, stdout=PIPE, stderr=PIPE, cwd=working_dir ) sout, serr = bbs_kernel_process.communicate() log_process_output("BBS kernel", sout, serr, self.logger) if bbs_kernel_process.returncode != 0: raise CalledProcessError( bbs_kernel_process.returncode, executable ) except CalledProcessError, e: self.logger.error(str(e)) return 1 finally: