X-Git-Url: http://git.vrable.net/?p=cumulus.git;a=blobdiff_plain;f=python%2Fcumulus%2Fretention.py;h=b0e007887f6e8cde917f8bf40efde9d09ac4161b;hp=a7ae983bad5cf80d82cdba22d25fbb7fcb79481b;hb=3d780590edec4583eb3ef0ca16120afd0f7451f9;hpb=dd3fe2c70bef48563e0f67b7cb259f00bb42f45c diff --git a/python/cumulus/retention.py b/python/cumulus/retention.py index a7ae983..b0e0078 100644 --- a/python/cumulus/retention.py +++ b/python/cumulus/retention.py @@ -102,10 +102,12 @@ class RetentionEngine(object): def add_policy(self, backup_class, retention_period): self._policies[backup_class] = retention_period - self._last_snapshots[backup_class] = (None, None) + self._last_snapshots[backup_class] = (None, None, False) @staticmethod def parse_timestamp(s): + if isinstance(s, datetime.datetime): + return s return datetime.datetime.strptime(s, TIMESTAMP_FORMAT) def consider_snapshot(self, snapshot): @@ -134,9 +136,11 @@ class RetentionEngine(object): partition = _backup_classes[backup_class](timestamp_policy) last_snapshot = self._last_snapshots[backup_class] if self._last_snapshots[backup_class][0] != partition: - self._last_snapshots[backup_class] = (partition, snapshot) self._labels.add(backup_class) - if snapshot_age < retention_period: retain = True + retain_label = snapshot_age < retention_period + self._last_snapshots[backup_class] = (partition, snapshot, + retain_label) + if retain_label: retain = True return retain def last_labels(self): @@ -148,4 +152,5 @@ class RetentionEngine(object): def last_snapshots(self): """Returns the most recent snapshot in each backup class.""" - return dict((k, v[1]) for (k, v) in self._last_snapshots.iteritems()) + return dict((k, v[1]) for (k, v) + in self._last_snapshots.iteritems() if v[2])