summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <daniel.silverstone@codethink.co.uk>2012-10-10 17:18:44 +0100
committerDaniel Silverstone <daniel.silverstone@codethink.co.uk>2012-10-10 17:18:44 +0100
commit312a0f484a688d7af4f904064c38311d58bc1c37 (patch)
tree7dd99262fb5e329a31ea50db18beb2bdd17d798e
parent08d3c749b0f1316bd3fa8d290cc1ad42a6906c19 (diff)
downloadlorry-controller-312a0f484a688d7af4f904064c38311d58bc1c37.tar.gz
Purge dead troves
-rw-r--r--lorrycontroller/workingstate.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/lorrycontroller/workingstate.py b/lorrycontroller/workingstate.py
index 9a99004..082647e 100644
--- a/lorrycontroller/workingstate.py
+++ b/lorrycontroller/workingstate.py
@@ -53,11 +53,26 @@ class WorkingStateManager(object):
return self
def __exit__(self, exctype, excvalue, exctraceback):
+ self.purge_dead_troves()
if not self.app.settings['dry-run']:
self.save_state()
else:
logging.debug("DRY-RUN: Not saving state again")
+ def purge_dead_troves(self):
+ old_trove_count = len(self.trove_state.keys())
+ all_troves = self.trove_state
+ self.trove_state = {}
+ new_trove_count = 0
+ for trove in self.app.conf.troves:
+ uuid = trove['uuid']
+ self.trove_state[uuid] = trove
+ new_trove_count += 1
+ if old_trove_count != new_trove_count:
+ trove_diff = old_trove_count - new_trove_count
+ logging.info("Purged %d dead trove entr%s from the state file" % (
+ trove_diff, ("y" if trove_diff == 1 else "ies")))
+
def _load_state(self):
self.lorry_state_file = os.path.join(self.workdir,
"last-lorry-state.json")