summaryrefslogtreecommitdiff
path: root/fuse-httpfs
blob: f68be8f69e4f047855b3a6b77a78b9110d035bf7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/usr/bin/env python3
import sys
import fuse
import logging
import argparse
import httpfs

FORMAT = "%(threadName)s %(asctime)-15s %(levelname)s:%(name)s " + \
    "%(filename)s:%(lineno)s %(message)s"
logging.basicConfig(level=logging.INFO, format=FORMAT)

p = argparse.ArgumentParser(
    formatter_class=argparse.ArgumentDefaultsHelpFormatter)
p.add_argument("mountpoint", help="Target directory")
p.add_argument("--max_background", type=int, default=15,
               help="Maximum number of background threads")
p.add_argument("--no_foreground", action="store_true", default=False,
               help="Fork into background as a daemon")
p.add_argument("--debug", action="store_true",
               help="Enable debug logging")
p.add_argument("--debug-requests", action="store_true",
               help="Enable python-requests debug logging")
p.add_argument("--nothreads", action="store_true",
               help="Disable fuse threads")
p.add_argument("--poolsize", type=int, default=httpfs.Config.poolsize,
               help="Max no. of concurrent http requests")
p.add_argument("--timeout", type=float, default=None,
               help="HTTP connect and read timeout")
p.add_argument("--ssl", choices=["default", "system", "none"],
               help="SSL Verification", default="default")
p.add_argument("--system-ca", default="/etc/ssl/certs/ca-certificates.crt",
               help="Path to system ca bundle")

args = vars(p.parse_args(sys.argv[1:]))

httpfs.Config.timeout = args.pop("timeout")
httpfs.Config.mountpoint = args.pop("mountpoint")
httpfs.Config.verify = args.pop("ssl")
httpfs.Config.system_ca = args.pop("system_ca")
httpfs.Config.poolsize = args.pop("poolsize")
kwargs = {}
if not args.pop("no_foreground"):
    kwargs["foreground"] = True
if args.pop("debug"):
    kwargs["debug"] = True
    logging.getLogger(httpfs.__name__).setLevel(logging.DEBUG)
if args.pop("debug_requests"):
    logging.getLogger("requests.packages.urllib3").setLevel(logging.DEBUG)
kwargs.update(args)

fuse = fuse.FUSE(httpfs.Httpfs(), httpfs.Config.mountpoint, **kwargs)