]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/scripts/tahoe_add_alias.py
CLI: add create-alias command, to merge mkdir and add-alias into a single (secure...
[tahoe-lafs/tahoe-lafs.git] / src / allmydata / scripts / tahoe_add_alias.py
1
2 import os.path
3 from allmydata import uri
4 from allmydata.scripts.common_http import do_http, check_http_error
5 from allmydata.scripts.common import get_aliases
6
7 def add_alias(options):
8     nodedir = options['node-directory']
9     alias = options.alias
10     cap = options.cap
11     stdout = options.stdout
12     stderr = options.stderr
13     aliasfile = os.path.join(nodedir, "private", "aliases")
14     cap = uri.from_string_dirnode(cap).to_string()
15     assert ":" not in alias
16     assert " " not in alias
17     # probably check for others..
18     f = open(aliasfile, "a")
19     f.write("%s: %s\n" % (alias, cap))
20     f.close()
21     print >>stdout, "Alias '%s' added" % (alias,)
22     return 0
23
24 def create_alias(options):
25     # mkdir+add_alias
26     nodedir = options['node-directory']
27     alias = options.alias
28     stdout = options.stdout
29     stderr = options.stderr
30     aliasfile = os.path.join(nodedir, "private", "aliases")
31     assert ":" not in alias
32     assert " " not in alias
33
34     nodeurl = options['node-url']
35     if not nodeurl.endswith("/"):
36         nodeurl += "/"
37     url = nodeurl + "uri?t=mkdir"
38     resp = do_http("POST", url)
39     rc = check_http_error(resp, stderr)
40     if rc:
41         return rc
42     new_uri = resp.read().strip()
43
44     # probably check for others..
45     f = open(aliasfile, "a")
46     f.write("%s: %s\n" % (alias, new_uri))
47     f.close()
48     print >>stdout, "Alias '%s' created" % (alias,)
49     return 0
50
51 def list_aliases(options):
52     nodedir = options['node-directory']
53     stdout = options.stdout
54     stderr = options.stderr
55     aliases = get_aliases(nodedir)
56     alias_names = sorted(aliases.keys())
57     max_width = max([len(name) for name in alias_names] + [0])
58     fmt = "%" + str(max_width) + "s: %s"
59     for name in alias_names:
60         print >>stdout, fmt % (name, aliases[name])
61