summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-12-21 20:01:58 +0100
committerLars Wirzenius <liw@liw.fi>2015-12-21 22:38:37 +0100
commit25ab70f0f8369677e41736ed0fdd8d1d6968faf7 (patch)
tree147a5d48349bd437eff6d580d188cc9ba6ba29cd
parente58a9275338e3d7f10d5f1dbd8fff5de3ac0df76 (diff)
downloadobnam-25ab70f0f8369677e41736ed0fdd8d1d6968faf7.tar.gz
Change GA remove_generations to find unused chunks
-rw-r--r--obnamlib/fmt_ga/client.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/obnamlib/fmt_ga/client.py b/obnamlib/fmt_ga/client.py
index b267aae0..441b93ea 100644
--- a/obnamlib/fmt_ga/client.py
+++ b/obnamlib/fmt_ga/client.py
@@ -201,9 +201,21 @@ class GAClient(object):
client_name=self._client_name,
gen_id=gen_number)
+ chunks_in_removed = self.get_generation_chunk_ids(gen_number)
+ chunks_remaining = self._get_chunk_ids_used_by_generations(remaining)
+ unused_chunks = set(chunks_in_removed).difference(chunks_remaining)
+
self._generations.set_generations(remaining)
- return [] # FIXME
+ return list(unused_chunks)
+
+ def _get_chunk_ids_used_by_generations(self, generations):
+ chunk_ids = set()
+ for generation in generations:
+ gen_number = generation.get_number()
+ chunk_ids = chunk_ids.union(
+ set(self.get_generation_chunk_ids(gen_number)))
+ return chunk_ids
def get_generation_key(self, gen_number, key):
self._load_data()
@@ -408,7 +420,7 @@ class GAGenerationList(object):
def set_generations(self, generations):
self._generations = generations
- self._by_number = dict((gen.get_number, gen) for gen in generations)
+ self._by_number = dict((gen.get_number(), gen) for gen in generations)
class GAGeneration(object):