def check_local_space(initial=True): """ Do we have enough local disk space left to run the job? For the initial local space check, the Pilot will require 2 GB of free space, but during running this can be lowered to 1 GB. :param initial: True means a 2 GB limit, False means a 1 GB limit (optional Boolean) :return: pilot error code (0 if success, NOLOCALSPACE if failure) """ ec = 0 diagnostics = "" # is there enough local space to run a job? cwd = os.getcwd() logger.debug('checking local space on %s', cwd) spaceleft = convert_mb_to_b(get_local_disk_space(cwd)) # B (diskspace is in MB) free_space_limit = human2bytes(config.Pilot.free_space_limit) if initial else human2bytes(config.Pilot.free_space_limit_running) if spaceleft <= free_space_limit: diagnostics = 'too little space left on local disk to run job: %d B (need > %d B)' %\ (spaceleft, free_space_limit) ec = errors.NOLOCALSPACE logger.warning(diagnostics) else: logger.info('sufficient remaining disk space (%d B)', spaceleft) return ec, diagnostics
def check_output_file_sizes(job): """ Are the output files within the allowed size limits? :param job: job object. :return: exit code (int), error diagnostics (string) """ exit_code = 0 diagnostics = "" # loop over all known output files for fspec in job.outdata: path = os.path.join(job.workdir, fspec.lfn) if os.path.exists(path): # get the current file size fsize = get_local_file_size(path) max_fsize = human2bytes(config.Pilot.maximum_output_file_size) if fsize and fsize < max_fsize: logger.info('output file %s is within allowed size limit (%d B < %d B)', path, fsize, max_fsize) else: exit_code = errors.OUTPUTFILETOOLARGE diagnostics = 'output file %s is not within allowed size limit (%d B > %d B)' % (path, fsize, max_fsize) logger.warning(diagnostics) else: logger.info('output file size check: skipping output file %s since it does not exist', path) return exit_code, diagnostics
def check_local_space(): """ Do we have enough local disk space left to run the job? :return: pilot error code (0 if success, NOLOCALSPACE if failure) """ ec = 0 diagnostics = "" # is there enough local space to run a job? cwd = os.getcwd() logger.debug('checking local space on %s' % cwd) spaceleft = convert_mb_to_b(get_local_disk_space(cwd)) # B (diskspace is in MB) free_space_limit = human2bytes(config.Pilot.free_space_limit) if spaceleft <= free_space_limit: diagnostics = 'too little space left on local disk to run job: %d B (need > %d B)' %\ (spaceleft, free_space_limit) ec = errors.NOLOCALSPACE logger.warning(diagnostics) else: logger.info('sufficient remaining disk space (%d B)' % spaceleft) return ec, diagnostics