From: Brian Warner Date: Wed, 19 Nov 2008 01:28:26 +0000 (-0700) Subject: webapi: add 'summary' string to checker results JSON X-Git-Tag: allmydata-tahoe-1.3.0~409 X-Git-Url: https://git.rkrishnan.org/simplejson/__init__.py.html?a=commitdiff_plain;h=7932fadb5e38b21b4aa50a7bdb232142367d89f3;p=tahoe-lafs%2Ftahoe-lafs.git webapi: add 'summary' string to checker results JSON --- diff --git a/docs/frontends/webapi.txt b/docs/frontends/webapi.txt index a91a478d..2ecba410 100644 --- a/docs/frontends/webapi.txt +++ b/docs/frontends/webapi.txt @@ -750,6 +750,7 @@ POST $URL?t=check storage-index: a base32-encoded string with the objects's storage index, or an empty string for LIT files + summary: a string, with a one-line summary of the stats of the file results: a dictionary that describes the state of the file. For LIT files, this dictionary has only the 'healthy' key, which will always be True. For distributed files, this dictionary has the following diff --git a/src/allmydata/immutable/checker.py b/src/allmydata/immutable/checker.py index 91bced99..3c6218ee 100644 --- a/src/allmydata/immutable/checker.py +++ b/src/allmydata/immutable/checker.py @@ -109,7 +109,11 @@ class SimpleCHKFileChecker: ",".join(["sh%d" % shnum for shnum in sorted(missing)])) r.set_report(report) - # TODO: r.set_summary(summary) + if healthy: + r.set_summary("Healthy") + else: + r.set_summary("Not Healthy") + # TODO: more detail return r class VerifyingOutput: @@ -123,6 +127,7 @@ class VerifyingOutput: self._results = results results.set_healthy(False) results.set_recoverable(False) + results.set_summary("Not Healthy") def setup_hashtrees(self, plaintext_hashtree, crypttext_hashtree): self._crypttext_hash_tree = crypttext_hashtree @@ -145,6 +150,7 @@ class VerifyingOutput: def finish(self): self._results.set_healthy(True) self._results.set_recoverable(True) + self._results.set_summary("Healthy") # the return value of finish() is passed out of FileDownloader._done, # but SimpleCHKFileVerifier overrides this with the CheckerResults # instance instead. diff --git a/src/allmydata/test/test_system.py b/src/allmydata/test/test_system.py index 716544ee..c519dfaa 100644 --- a/src/allmydata/test/test_system.py +++ b/src/allmydata/test/test_system.py @@ -2204,6 +2204,9 @@ class DeepCheckWebGood(DeepCheckBase, unittest.TestCase): self.failUnlessEqual(data["storage-index"], base32.b2a(n.get_storage_index()), where) + self.failUnless("summary" in data, (where, data)) + self.failUnlessEqual(data["summary"].lower(), "healthy", + "%s: '%s'" % (where, data["summary"])) r = data["results"] self.failUnlessEqual(r["healthy"], True, where) needs_rebalancing = bool( len(self.clients) < 10 ) diff --git a/src/allmydata/web/checker_results.py b/src/allmydata/web/checker_results.py index ff19aa08..d59344eb 100644 --- a/src/allmydata/web/checker_results.py +++ b/src/allmydata/web/checker_results.py @@ -82,6 +82,7 @@ class ResultsBase: def _json_check_results(self, r): data = {} data["storage-index"] = r.get_storage_index_string() + data["summary"] = r.get_summary() data["results"] = self._json_check_counts(r.get_data()) data["results"]["needs-rebalancing"] = r.needs_rebalancing() data["results"]["healthy"] = r.is_healthy()