diff options
author | Lars Wirzenius <liw@liw.fi> | 2015-12-21 20:01:58 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2015-12-21 22:38:37 +0100 |
commit | 25ab70f0f8369677e41736ed0fdd8d1d6968faf7 (patch) | |
tree | 147a5d48349bd437eff6d580d188cc9ba6ba29cd | |
parent | e58a9275338e3d7f10d5f1dbd8fff5de3ac0df76 (diff) | |
download | obnam-25ab70f0f8369677e41736ed0fdd8d1d6968faf7.tar.gz |
Change GA remove_generations to find unused chunks
-rw-r--r-- | obnamlib/fmt_ga/client.py | 16 |
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): |