From 7932fadb5e38b21b4aa50a7bdb232142367d89f3 Mon Sep 17 00:00:00 2001 From: Brian Warner <warner@allmydata.com> Date: Tue, 18 Nov 2008 18:28:26 -0700 Subject: [PATCH] webapi: add 'summary' string to checker results JSON --- docs/frontends/webapi.txt | 1 + src/allmydata/immutable/checker.py | 8 +++++++- src/allmydata/test/test_system.py | 3 +++ src/allmydata/web/checker_results.py | 1 + 4 files changed, 12 insertions(+), 1 deletion(-) 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() -- 2.45.2