Browse Source

added property _CollectionStatus.last_incremental_backup_time

Fabian Peter Hammerle 7 years ago
parent
commit
371a50acae
3 changed files with 38 additions and 2 deletions
  1. 4 0
      duplitab/__init__.py
  2. 1 2
      scripts/duplitab
  3. 33 0
      tests/test_collection.py

+ 4 - 0
duplitab/__init__.py

@@ -45,6 +45,10 @@ class _CollectionStatus(_Status):
     def __init__(self, primary_chain):
         self.primary_chain = primary_chain
 
+    @property
+    def last_incremental_backup_time(self):
+        return self.primary_chain.last_backup_time if self.primary_chain else None
+
     @classmethod
     def _parse(cls, text):
         if 'No backup chains with active signatures found' in text:

+ 1 - 2
scripts/duplitab

@@ -238,10 +238,9 @@ def run(command, config_path, quiet, duplicity_verbosity,
         for backup_attr in filtered_config:
             collection = duplitab.Collection(url = backup_attr['target_url'])
             status = collection.request_status()
-            primary_chain = status.primary_chain
             table.append([
                 collection.url,
-                primary_chain.sets[-1].backup_time if 'primary chain' else 'never',
+                status.last_incremental_backup_time or 'never',
                 ])
         print(tabulate.tabulate(
             table,

+ 33 - 0
tests/test_collection.py

@@ -108,3 +108,36 @@ def test_collection_request_status(url, expected_status):
 ])
 def test_chain_status_get_last_backup_time(chain_status, expected_time):
     assert expected_time == chain_status.last_backup_time
+
+
+@pytest.mark.parametrize(('collection_status', 'expected_time'), [
+    [
+        duplitab._CollectionStatus(
+            primary_chain=duplitab._ChainStatus(
+                sets=[
+                    duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 33)),
+                ]),
+        ),
+        datetime.datetime(2016, 10, 27, 19, 57, 33),
+    ],
+    [
+        duplitab._CollectionStatus(
+            primary_chain=duplitab._ChainStatus(
+                sets=[
+                    duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 33)),
+                    duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 35)),
+                    duplitab._SetStatus(backup_time=datetime.datetime(2016, 10, 27, 19, 57, 39)),
+                ]),
+        ),
+        datetime.datetime(2016, 10, 27, 19, 57, 39),
+    ],
+    [
+        duplitab._CollectionStatus(
+            primary_chain=None,
+        ),
+        None,
+    ],
+])
+def test_collection_status_get_incremental_backup_time(
+        collection_status, expected_time):
+    assert expected_time == collection_status.last_incremental_backup_time