3 from allmydata.scripts.common import BasedirOptions
4 from allmydata.util.assertutil import precondition
5 from allmydata.util.encodingutil import listdir_unicode, quote_output
7 class CreateStatsGathererOptions(BasedirOptions):
10 def getSynopsis(self):
11 return "Usage: %s [global-opts] create-stats-gatherer [options] NODEDIR" % (self.command_name,)
14 stats_gatherer_tac = """
17 from allmydata import stats
18 from twisted.application import service
21 g = stats.StatsGathererService(verbose=verbose)
23 application = service.Application('allmydata_stats_gatherer')
24 g.setServiceParent(application)
28 def create_stats_gatherer(config, out=sys.stdout, err=sys.stderr):
29 basedir = config['basedir']
30 # This should always be called with an absolute Unicode basedir.
31 precondition(isinstance(basedir, unicode), basedir)
33 if os.path.exists(basedir):
34 if listdir_unicode(basedir):
35 print >>err, "The base directory %s is not empty." % quote_output(basedir)
36 print >>err, "To avoid clobbering anything, I am going to quit now."
37 print >>err, "Please use a different directory, or empty this one."
39 # we're willing to use an empty directory
42 f = open(os.path.join(basedir, "tahoe-stats-gatherer.tac"), "wb")
43 f.write(stats_gatherer_tac)
48 ["create-stats-gatherer", None, CreateStatsGathererOptions, "Create a stats-gatherer service."],
52 "create-stats-gatherer": create_stats_gatherer,