def addRobotWriteRequest(name, items, itempath, currentSize, tmpStoreName, tmpDirOption = '', onlyMeta = False): logging.debug('addRobotWriteRequest: entered...') success,resources,robotJobsDir,tmpOutDir,searchFile,viewRoot,firstRoot, \ robotPresent = get_resources(tmpDirOption = tmpDirOption) if not success: return (False, None, None) if not onlyMeta and not check_free_disk_space(currentSize, tmpOutDir): return (False, None, None) tmpImgDir,objPrefix = ryw_upload.attempt_just_make_tmpdir( tmpOutDir, 'Im_'+name[:3]+'_', '') if not tmpImgDir: return (False, None, None) ryw.give_news2('<BR>outgoing data image name: ' + tmpImgDir, logging.info) if not write_recipient_file(tmpImgDir, name): cleanup_image(tmpImgDir) return (False, None, None) repDir = os.path.join(tmpImgDir, 'repository') if not ryw.try_mkdir(repDir, 'addRobotWriteRequest'): cleanup_image(tmpImgDir) return (False, None, None) # noObjStore: # not copy_objectstore(firstRoot, repDir, tmpStoreName) or \ # not copy_view(repDir, viewRoot) or \ if not write_user_credentials(repDir, name) or \ not copy_scripts(repDir) or \ not copy_search_file(searchFile, repDir) or \ not copy_reverse_lists(repDir) or \ not copy_objects(items, itempath, repDir, tmpImgDir, metaOnly = onlyMeta) or \ not generate_html(items, itempath, repDir, tmpImgDir) or \ not copy_autorunfiles(tmpImgDir): cleanup_image(tmpImgDir) return (False, None, None) ryw.give_news(' ', logging.info) ryw.give_news('done copying all data, now invoking the robot.', logging.info) # success,jrq = write_robot_job_file(robotJobsDir, tmpImgDir, objPrefix, robotPresent = robotPresent) # if not success: # cleanup_image(tmpImgDir) # ryw.cleanup_path(jrq, 'addRobotWriteRequest:') # return (False, None, None) return (True, tmpImgDir, "blah")
def main_nonoverlap(): ryw.check_logging(os.path.join(RepositoryRoot, "WWW", "logs"), "upload.log") logging.debug("ReadIncomingCDStack: entered...") success, numDiscs, resources, robotJobsDir, tmpIn = get_init_vals() if not success: sys.exit(1) freeGB = ryw.free_MB(tmpIn) / 1000.0 ryw.give_news("current available disk space: " + repr(freeGB) + " GB.", logging.info) tmpdir, objPrefix = ryw_upload.attempt_just_make_tmpdir(tmpIn, "I_", "") if not tmpdir: ryw.give_bad_news("ReadIncomingCDStack: failed to make tmpdir.", logging.critical) sys.exit(1) ryw.give_news("begin copying incoming discs...", logging.info) jobFile = robot_read_all(robotJobsDir, objPrefix, numDiscs, tmpdir) if not jobFile: ryw_upload.cleanup_incoming(tmpdir, jobFile) sys.exit(1) # monitor the robot's job folder for completion of job. ryw.give_news("", logging.info) oldDone = [] while True: ryw.give_news2("*", logging.info) time.sleep(5) logging.debug("ReadIncomingCDStack: done sleeping...") success, done, doneList = check_finished(jobFile, tmpdir) if not success: ryw_upload.cleanup_incoming(tmpdir, jobFile) sys.exit(1) if not done: success, doneList = check_partial_completion(tmpdir) if not success: ryw_upload.cleanup_incoming(tmpdir, jobFile) sys.exit(1) # process_finished_copies(tmpdir, doneList) print_done_discs(doneList, oldDone) oldDone = doneList if done: logging.debug("ReadIncomingCDStack: done.") break print_conclusion(doneList, tmpdir, jobFile)
def NOTUSED_main_overlap(): ryw.check_logging(os.path.join(RepositoryRoot, "WWW", "logs"), "upload.log") logging.debug("ReadIncomingCDStack: entered...") success, numDiscs, resources, robotJobsDir, tmpIn = get_init_vals() if not success: sys.exit(1) freeGB = ryw.free_MB(tmpIn) / 1000.0 ryw.give_news("ReadIncomingCDStack: current available disk space: " + repr(freeGB) + " GB.", logging.info) tmpdir, objPrefix = ryw_upload.attempt_just_make_tmpdir(tmpIn, "I_", "") if not tmpdir: ryw.give_bad_news("ReadIncomingCDStack: failed to make tmpdir.", logging.critical) sys.exit(1) jobFile = robot_read_all(robotJobsDir, objPrefix, numDiscs, tmpdir) if not jobFile: ryw_upload.cleanup_incoming(tmpdir, jobFile) sys.exit(1) # monitor the robot's job folder for completion of job # also periodically monitor the tmp folder for completed disk reads while True: ryw.give_news2("*", logging.info) time.sleep(5) logging.debug("ReadIncomingCDStack: done sleeping...") success, done, doneList = check_finished(jobFile, tmpdir) if not success: ryw_upload.cleanup_incoming(tmpdir, jobFile) sys.exit(1) if not done: success, doneList = check_partial_completion(tmpdir) if not success: ryw_upload.cleanup_incoming(tmpdir, jobFile) sys.exit(1) process_finished_copies(tmpdir, doneList) if done: logging.debug("ReadIncomingCDStack: done.") break logging.debug("ReadIncomingCDStack: removing robot job data: " + tmpdir + " " + jobFile) ryw_upload.cleanup_incoming(tmpdir, jobFile)
def obj_store_size_inKB_not_used(tmpdir=""): if tmpdir: ryw.give_news2('temp objectstore copied to: ' + tmpdir + '<BR>', logging.info) ryw.give_news2('computing outgoing objectstore size...', logging.info) try: resources = su.parseKeyValueFile(os.path.join(RepositoryRoot, 'Resources.txt')) objectstoreroots = resources['objectstore'].split(';') firstRoot = objectstoreroots[0] if tmpdir: tmpOutDir = tmpdir else: tmpOutDir = resources['tmpout'] except: ryw.give_bad_news('obj_store_size_inKB: get_resources failed.', logging.critical) return (False, None, None, None) tmpStoreDir,objPrefix = ryw_upload.attempt_just_make_tmpdir( tmpOutDir, 'outgoing_obj_store_', '') if not tmpStoreDir: ryw.give_bad_news('obj_store_size_inKB: failed to make tmpdir: ' + tmpOutDir, logging.critical) return (False, None, None, None) tmpStoreName = os.path.join(tmpStoreDir, 'outgoing_store') try: success = ryw_copytree.copy_tree_diff_repo(firstRoot, tmpStoreName) if not success: raise 'copy_tree_diff_repo failed.' except: ryw.give_bad_news('obj_store_size_inKB: copy_tree_diff_repo failed: '+ firstRoot + ' -> ' + tmpStoreName, logging.critical) return (False, None, None, None) kB = ryw_disc.getRecursiveSizeInKB(tmpStoreName) logging.debug('obj_store_size_inKB: ' + tmpStoreName + ' = ' + str(kB)) ryw.give_news2 (str(kB) + ' KB<BR>', logging.info) return (True, kB, tmpStoreDir, tmpStoreName)