Commit Graph

127 Commits

Author SHA1 Message Date
robk-tahoe
b80cfeb186 munin stats: suppress output of data more that 5min old
if a node fails to report stats, the natural thing to do in re munin is to 
supress the data for that data series.  the previous tahoe-stats would output
whatever data was present in the stats_gatherer's stats.pickle, regardless of
how old.

this change means that if the gatherer hasn't received data within the last
5 min, then no data is reported to munin for that node.
2008-01-31 21:04:23 -07:00
robk-tahoe
e910a64e7d munin stats: change truncated nodeid to 4 char (not 8) 2008-01-31 19:21:17 -07:00
Brian Warner
bf25a041f3 tarballs: stick with setup.py's sdist command, which gives us bz2/gz/zip but not rz/7z/lrz. Closes #298. 2008-01-31 13:52:48 -07:00
Brian Warner
4a363f0281 add 'tarballs' target, to generate compressed source tarballs 2008-01-30 20:45:14 -07:00
robk-tahoe
7b9f3207d0 stats: add a simple stats gathering system
We have a desire to collect runtime statistics from multiple nodes primarily
for server monitoring purposes.   This implements a simple implementation of
such a system, as a skeleton to build more sophistication upon.

Each client now looks for a 'stats_gatherer.furl' config file.  If it has
been configured to use a stats gatherer, then it instantiates internally
a StatsProvider.  This is a central place for code which wishes to offer
stats up for monitoring to report them to, either by calling 
stats_provider.count('stat.name', value) to increment a counter, or by
registering a class as a stats producer with sp.register_producer(obj).

The StatsProvider connects to the StatsGatherer server and provides its
provider upon startup.  The StatsGatherer is then responsible for polling
the attached providers periodically to retrieve the data provided.
The provider queries each registered producer when the gatherer queries
the provider.  Both the internal 'counters' and the queried 'stats' are
then reported to the gatherer.

This provides a simple gatherer app, (c.f. make stats-gatherer-run)
which prints its furl and listens for incoming connections.  Once a
minute, the gatherer polls all connected providers, and writes the
retrieved data into a pickle file.

Also included is a munin plugin which knows how to read the gatherer's
stats.pickle and output data munin can interpret.  this plugin, 
tahoe-stats.py can be symlinked as multiple different names within
munin's 'plugins' directory, and inspects argv to determine which
data to display, doing a lookup in a table within that file.
It looks in the environment for 'statsfile' to determine the path to
the gatherer's stats.pickle.  An example plugins-conf.d file is
provided.
2008-01-30 20:11:07 -07:00
Zooko O'Whielacronx
284c1652a9 setup: make find_trial self-contained so that we don't have a bootstrapping problem -- if allmydata can't be imported we still want to be able to run find_trial 2008-01-23 10:04:26 -07:00
Zooko O'Whielacronx
faad785859 setup: include cli.exe in the bootstrap setptools egg so that it will work on Windows (also include gui.exe just in case) 2008-01-22 12:33:55 -07:00
Zooko O'Whielacronx
b1152860cd setup: bundle setuptools_darcs-1.1.7
fixes #263
2008-01-22 11:01:36 -07:00
Zooko O'Whielacronx
451ca7792e setup: add a setuptools bootstrap egg that works on all versions of Python
For versions of Python >= 2.3.
2008-01-22 11:00:12 -07:00
Zooko O'Whielacronx
1f2e3fc912 setup: simplify the setup by removing the "tahoe dependencies" fake project
Now we use "./setup.py develop" to ensure that changes to our source code are immediately used without requiring a "make" step.  This simplification will hopefully pave the way for easier py2exe and py2app, solving the "Unit tests test the installed version" bug (#145), and perhaps also #164 and #176.

This patch also conditionalizes the use of setuptools_darcs on the absence of a PKG-INFO file, which is part of fixing #263.
2008-01-22 08:35:38 -07:00
robk-tahoe
3cb08209d2 windows installer build refinements
this resolves problems of py2exe's modulefinder collection of sources from
.zipped egg files, not by using easy_install to reach the --always-unzip
option, but rather with a small tool which unpacks any zipped egg files found
in misc/dependencies.  this fixes the py2exe build given rollback of the 
easy_install stuff which had broken the unix builds.  misc/hatch-eggs.py
performs the honours.

this also includes a misc/sub-ver.py tool which substitutes elements of the
verion number for the current code base (by importing allmydata.__version__
hence make-version should be run first, and the python path carefully managed)
into template files using python's string interpolation of named args from a
dict as the templating syntax.  i.e. %(major)d %(minor)d %(point)d %(nano)d
each expand to the individual components of the version number as codified
by the pyutil.version_class.Version class.  there is also a %(build)s tag
which expands to the string form of the whole version number.  This tool is
used to interpolate the automatically generated version information into the
innosetup source file in a form consistent with innosetup/windows' restrictions
2008-01-14 17:53:54 -07:00
Zooko O'Whielacronx
88c93469ff setup: add darcsver-1.0.1.tar to misc/dependencies/ 2008-01-16 14:08:26 -07:00
Brian Warner
16e2b3307a build-deps-setup.py: import twisted early, to make setuptools on dapper use the right version 2008-01-10 20:15:02 -07:00
robk-tahoe
2585908296 tweaks to build process to support py2exe
py2exe is unable to handle .eggs which are packaged as zip files
in preference it will pull in other versions of libraries if they 
can be found in the environment.

this changes causes .eggs to be built as .egg directories, which
py2exe can handle.
2008-01-09 19:02:53 -07:00
Zooko O'Whielacronx
80adf18fcc setup: remove hard import of ez_setup -- we can proceed even if ez_setup can't be imported 2008-01-10 14:01:52 -07:00
Zooko O'Whielacronx
72aa8f5cb8 setup: shebang usr bin env python 2008-01-10 14:01:31 -07:00
Zooko O'Whielacronx
1ab03fe9d2 setup: update in-line doc of get-version.py 2008-01-08 10:51:01 -07:00
Brian Warner
813706a01e debian: update dependencies to match calc-deps.py, mainly pycryptopp-0.2.8 2008-01-02 15:14:34 -07:00
Zooko O'Whielacronx
b412847485 setup: whoops, fix the use of source-tree-root-dir eggs in our Makefile 2008-01-01 01:53:31 -07:00
Zooko O'Whielacronx
97f2953cec setup: fix bin/tahoe to include .egg's from the source tree root dir as well
This is necessary, as we can't prevent setuptools from respecting any such eggs, therefore we need to respect them in order to maintain consistency.  However, we don't normally install any "install_requires" eggs into the source tree root dir.
2008-01-01 01:51:28 -07:00
Zooko O'Whielacronx
9b38eebcaf setup: finish renaming of docs/testnet to docs/testgrid 2007-12-31 23:36:59 -07:00
Zooko O'Whielacronx
58bedc60a2 setup: add darcsver source tarball to misc/dependencies
In the future, we're likely to stop keeping misc/dependencies under revision control, as per

http://allmydata.org/trac/tahoe/ticket/249
2007-12-31 23:26:51 -07:00
Brian Warner
bd187dfc50 upgrade to foolscap-0.2.3 2007-12-24 17:23:27 -07:00
Zooko O'Whielacronx
bfc69178b2 setup: fix bug in bugfix to patch to include .egg's found in CWD 2007-12-22 11:19:52 -07:00
Zooko O'Whielacronx
2ee424b3a3 setup: fix bug in previous patch to include .egg's from CWD 2007-12-22 11:14:27 -07:00
Zooko O'Whielacronx
7fdcbddbbc setup: we also need to include .egg's in the CWD in our search path, because if we install a 3rd party library into support/, and *it* installs a library that *it* requires, that one will appear in CWD
It would be nice to figure out a way to force them to all appear in support/ where they belong.
2007-12-22 11:04:24 -07:00
Zooko O'Whielacronx
27a0d59308 setup: zope.interface bundle .tar instead of .tar.gz because multiple bundled .tar's compress together much more nicely than multiple bundled .tar.gz's do. :-) 2007-12-22 10:50:54 -07:00
Zooko O'Whielacronx
48b13dcab8 setup: upgrade bundle zfec-1.1.tar.gz to zfec-1.3.4.tar 2007-12-22 10:50:39 -07:00
Zooko O'Whielacronx
a9545aa4b0 setup: simplejson bundle .tar instead of .tar.gz because multiple bundled .tar's compress together much more nicely than multiple bundled .tar.gz's do. :-) 2007-12-22 10:50:29 -07:00
Zooko O'Whielacronx
840fb23229 setup: upgrade bundle from setuptools_darcs-1.0.6.tar.gz to setuptools_darcs-1.1.5.tar 2007-12-22 10:50:03 -07:00
Zooko O'Whielacronx
d5bb1ac316 setup: bundle pyutil-1.3.12.tar 2007-12-22 10:49:47 -07:00
Zooko O'Whielacronx
336c482561 setup: pycryptopp: bundle .tar instead of .tar.gz because multiple bundled .tar's compress together much more nicely than multiple bundled .tar.gz's do. :-) 2007-12-22 10:49:35 -07:00
Zooko O'Whielacronx
2add4f5edb setup: foolscap bundle .tar instead of .tar.gz because multiple bundled .tar's compress together much more nicely than multiple bundled .tar.gz's do. :-) 2007-12-22 10:49:20 -07:00
Zooko O'Whielacronx
fd4880face setup: bundle argparse-0.8.0.tar
It isn't actually needed for Tahoe, only for the command-line tools from pyutil.  Later I will make an "extras" category within pyutil to specify in a machine-readable way that argparse is not required for pyutil unless you want the command-line tools.
2007-12-22 10:47:54 -07:00
Zooko O'Whielacronx
70b84e9298 setup: Nevow bundle .tar instead of .tar.gz because multiple bundled .tar's compress together much more nicely than multiple bundled .tar.gz's do. :-) 2007-12-22 10:47:06 -07:00
Zooko O'Whielacronx
c3a265839c setup: refactor ez_setup.py and setup.py to satisfy the Desert Island scenario, to find and use setuptools egg in-place in misc/dependencies, and make it setup_require pyutil (for darcsver) 2007-12-22 10:44:47 -07:00
Zooko O'Whielacronx
922234ec29 setup: bundle setuptools_darcs plugin in misc/dependencies 2007-12-12 19:20:42 -07:00
Zooko O'Whielacronx
cbd6881a47 setup: remove misc/make-version.py and invoke "darcsver" from the pyutil library
misc/make-version.py has a limitation which prevents it from generating version
stamps from our current darcs history.  This limitation has been fixed in
pyutil's "darcsver".  Rather than copy the fix from there to
misc/make-version.py, I'm making it so that you have to install pyutil if you
want to automatically generate _version.py files from the current darcs
history.
2007-12-20 18:17:55 -07:00
Brian Warner
e8c55fe85d move to foolscap-0.2.2 2007-12-12 20:21:45 -07:00
Zooko O'Whielacronx
1ac09840a4 a few documentation and naming convention updates
Notable: the argument to make REPORTER has been renamed to TRIALARGS.
2007-12-12 19:34:08 -07:00
Brian Warner
48e7a65882 upgrade to foolscap-0.2.1, with a new logging framework 2007-12-10 18:35:08 -07:00
Brian Warner
0618cf792d build-deps: require setuptools 0.6c4 or later, because older ones don't allow foolscap to use os.random at import time 2007-12-10 20:06:59 -07:00
Brian Warner
725621aded debian: add Depends: on python-pycryptopp, now that it's been packaged 2007-11-19 13:04:50 -07:00
Brian Warner
c86e803282 logtool: add 'gather' and 'dump' modes 2007-11-18 18:32:04 -07:00
Brian Warner
b502c3fea1 logtool: rename get-logs.py to logtool.py 2007-11-18 18:30:55 -07:00
Brian Warner
b29ce1c30a logpublisher: implement subscribe/publish for log, add a sample client 2007-11-16 20:07:50 -07:00
Zooko O'Whielacronx
59d6c3c822 decentralized directories: integration and testing
* use new decentralized directories everywhere instead of old centralized directories
 * provide UI to them through the web server
 * provide UI to them through the CLI
 * update unit tests to simulate decentralized mutable directories in order to test other components that rely on them
 * remove the notion of a "vdrive server" and a client thereof
 * remove the notion of a "public vdrive", which was a directory that was centrally published/subscribed automatically by the tahoe node (you can accomplish this manually by making a directory and posting the URL to it on your web site, for example)
 * add a notion of "wait_for_numpeers" when you need to publish data to peers, which is how many peers should be attached before you start.  The default is 1.
 * add __repr__ for filesystem nodes (note: these reprs contain a few bits of the secret key!)
 * fix a few bugs where we used to equate "mutable" with "not read-only".  Nowadays all directories are mutable, but some might be read-only (to you).
 * fix a few bugs where code wasn't aware of the new general-purpose metadata dict the comes with each filesystem edge
 * sundry fixes to unit tests to adjust to the new directories, e.g. don't assume that every share on disk belongs to a chk file.
2007-12-03 14:52:42 -07:00
Zooko O'Whielacronx
211bf154d0 setup: pycryptopp: upgrade from v0.2.7 to v0.2.8 2007-11-19 15:55:17 -07:00
Zooko O'Whielacronx
cadc14fbca setup: pycryptopp: upgrade from v0.2.6 to v0.2.7 (adds AES) 2007-11-19 15:07:11 -07:00
Zooko O'Whielacronx
a82954eced setup: upgrade bundled pycryptopp from v0.2.5 to v0.2.6 2007-11-09 18:14:36 -07:00