Пример #1
0
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)
def copy_objectstore(firstRoot, repDir, tmpStoreName):
    """copies the objectstore minus the big data items.
    only copying the first root.  I assume this is ok.  the multiple
    roots will just get merged over time at one root on the village side."""
    
    dst = os.path.join(repDir, 'ObjectStore')

    if os.path.exists(tmpStoreName):
        ryw.give_news2('moving a pre-copied object store... &nbsp;&nbsp;',
                       logging.info)
        logging.debug('copy_objectstore: moving a pre-copied store: ' +
                      tmpStoreName)
        try:
            shutil.move(tmpStoreName, dst)
            ryw.cleanup_partial_dir(
                ryw.parent_dir(tmpStoreName), 'copy_objectstore:', True)
        except:
            ryw.give_bad_news('copy_objectstore: failed to move store: ' +
                              tmpStoreName, logging.critical)
            return False
        ryw.give_news2('done. ', logging.info)
        ryw.give_news2('<BR>', logging.info)
        return True

    ryw.give_news2('copying object store... &nbsp;&nbsp;', logging.info)
    logging.debug('copy_objectstore: ' + firstRoot + ' -> ' + repDir)
    try:
        success = ryw_copytree.copy_tree_diff_repo(firstRoot, dst)
        if not success:
            raise 'copy_tree_diff_repo failed.'
    except:
        ryw.give_bad_news('copy_objectstore: copy_tree_diff_repo failed: '+
                          firstRoot + ' -> ' + dst, logging.critical)
        return False

    logging.debug('copy_objectstore: done: ' + dst)
    ryw.give_news2('done. ', logging.info)
    ryw.give_news2('<BR>', logging.info)
    return True