]> git.rkrishnan.org Git - tahoe-lafs/tahoe-lafs.git/blob - src/allmydata/scripts/tahoe_add_alias.py
CLI: check for pre-existing aliases in 'tahoe create-alias' and 'tahoe add-alias'
[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     assert ":" not in alias
14     assert " " not in alias
15
16     old_aliases = get_aliases(nodedir)
17     if alias in old_aliases:
18         print >>stderr, "Alias '%s' already exists!" % alias
19         return 1
20     aliasfile = os.path.join(nodedir, "private", "aliases")
21     cap = uri.from_string_dirnode(cap).to_string()
22     f = open(aliasfile, "a")
23     f.write("%s: %s\n" % (alias, cap))
24     f.close()
25     print >>stdout, "Alias '%s' added" % (alias,)
26     return 0
27
28 def create_alias(options):
29     # mkdir+add_alias
30     nodedir = options['node-directory']
31     alias = options.alias
32     stdout = options.stdout
33     stderr = options.stderr
34     assert ":" not in alias
35     assert " " not in alias
36
37     old_aliases = get_aliases(nodedir)
38     if alias in old_aliases:
39         print >>stderr, "Alias '%s' already exists!" % alias
40         return 1
41
42     aliasfile = os.path.join(nodedir, "private", "aliases")
43
44     nodeurl = options['node-url']
45     if not nodeurl.endswith("/"):
46         nodeurl += "/"
47     url = nodeurl + "uri?t=mkdir"
48     resp = do_http("POST", url)
49     rc = check_http_error(resp, stderr)
50     if rc:
51         return rc
52     new_uri = resp.read().strip()
53
54     # probably check for others..
55     f = open(aliasfile, "a")
56     f.write("%s: %s\n" % (alias, new_uri))
57     f.close()
58     print >>stdout, "Alias '%s' created" % (alias,)
59     return 0
60
61 def list_aliases(options):
62     nodedir = options['node-directory']
63     stdout = options.stdout
64     stderr = options.stderr
65     aliases = get_aliases(nodedir)
66     alias_names = sorted(aliases.keys())
67     max_width = max([len(name) for name in alias_names] + [0])
68     fmt = "%" + str(max_width) + "s: %s"
69     for name in alias_names:
70         print >>stdout, fmt % (name, aliases[name])
71