Esempio n. 1
0
File: add.py Progetto: zidz/bhindex
def main(args, config, db):
    from bithorde import Client, parseConfig

    bithorde = Client(parseConfig(config.items('BITHORDE')))
    if args.link:
        bhupload = bithorde.link
    else:
        bhupload = bithorde.upload

    add = AddController(Filesystem(db), bhupload)
    for path in find_files(args):
        print("Adding %s" % path)
        try:
            f = add(path, force=args.force)
        except FileExistsError:
            print("  file exists, skipped...")
        except:
            import traceback
            print("  unexpected error:")
            traceback.print_exc()
        else:
            print("  -> %s" % f.ids())

    if add.added and args.export_links:
        export_from_config(db, bithorde, config)
Esempio n. 2
0
def main(args, config, db):
    if not args.output_dir:
        raise argparse.ArgumentError(
            None, "Needs link output-dir in either config or as argument\n")

    bithorde = Client(parseConfig(config.items('BITHORDE')))

    return export(db, bithorde, args.output_dir, args.target_dir, args.prefix, args.force_all)
Esempio n. 3
0
def main(args, config, db):
    from bithorde import Client, parseConfig

    bithorde = Client(parseConfig(config.items('BITHORDE')))
    c = Cat(Filesystem(db), bithorde)

    for path in args.path:
        for chunk in c(Path(path)):
            stdout.write(chunk)
Esempio n. 4
0
def main(args, config, db):
    bithorde = Client(parseConfig(config.items('BITHORDE')))

    scanner = Scanner(db, bithorde)

    log = logging.getLogger('scanner')

    scanner.run(db.query({'xt': ANY}), args.all_objects)

    log.info("Scanned %d assets. %d available, totaling %d GB",
             scanner.processed, scanner.available, scanner.size / (1024 * 1024 * 1024))
Esempio n. 5
0
def main(args, config, db):
    bithorde = Client(parseConfig(config.items('BITHORDE')))

    scanner = Scanner(db, bithorde)

    if args.all_objects:
        scanner.run_batch(db.query(ObjId.startswith('tree:tiger:'), scanner.fields))
        scanner.log.info("Scanned %d assets. %d available, totaling %d GB",
                         scanner.processed, scanner.available, scanner.size / (1024 * 1024 * 1024))
    else:
        scanner.run()
Esempio n. 6
0
def setup(args, config, db):
    from .util import noop_context_manager
    bithorde = Client(parseConfig(config.items('BITHORDE')))

    # fsopts = set(llfuse.default_options())
    fsopts = ['nonempty', 'allow_other', 'max_read=262144', 'fsname=bhindex']
    if args.fs_debug:
        fsopts.append('debug')
    ops = Operations(database=db, bithorde=bithorde)

    llfuse.init(ops, args.mountpoint, fsopts)

    if args.scan:
        scanner = Thread(target=background_scan, args=(args, config, bithorde))
        scanner.setDaemon(True)
    else:
        scanner = None

    return noop_context_manager(), (scanner,)
Esempio n. 7
0
def init_logging():
    formatter = logging.Formatter('%(message)s')
    handler = logging.StreamHandler()
    handler.setFormatter(formatter)
    handler.setLevel(logging.DEBUG)
    log.setLevel(logging.DEBUG)
    log.addHandler(handler)

if __name__ == '__main__':
    init_logging()
    try:
        self, mountpoint = sys.argv
    except:
        raise SystemExit('Usage: %s <mountpoint>' % sys.argv[0])

    bithorde = Client(parseConfig(config.items('BITHORDE')), autoconnect=False)
    bithorde.connect()

    mount_point_created = None
    if not os.path.exists(mountpoint):
        os.mkdir(mountpoint)
        mount_point_created = mountpoint

    def cleanup(remove_mountpoint):
        if remove_mountpoint:
            os.rmdir(remove_mountpoint)

    atexit.register(cleanup, mount_point_created)

    try:
        print("Entering llfuse")