Michael Terry has proposed merging lp:~mterry/duplicity/report-encrypted-chains 
into lp:duplicity.

Requested reviews:
  duplicity-team (duplicity-team)

For more details, see:
https://code.launchpad.net/~mterry/duplicity/report-encrypted-chains/+merge/68885

For Deja Dup, I'm trying to support automatically detecting whether a backup is 
encrypted or not.  This is useful especially when restoring so we can ask one 
less question of the user.

There are several ways to do this, none of which need work on top of today's 
duplicity:

1) I could watch for the debug message that prints the list of files we found 
on the backend and look at the suffixes.  (WORK NEEDED: make that message 
machine-parsable; DISADVANTAGES: suffix information would need to be kept in 
Deja Dup)

2) I could have duplicity not return collection-status information for 
mismatched encryption states (e.g. if --no-encryption is passed, don't return 
any encrypted sets in the results).  Then Deja Dup would just run 
collection-status at most twice to see which one returned results.  (WORK 
NEEDED: make duplicity ignore mismached states, which is a trivial two-liner; 
DISADVANTAGES: seems less useful than it could be for human users and requires 
at most two passes for machine users)

3) I could have duplicity report in collection-status output whether a backup 
set is encrypted (but still return results even in a mismatch).  (WORK NEEDED: 
make duplicity note and report encryption status for backup sets; 
DISADVANTAGES: none?)

So this branch implements #3.  But let me know if you prefer the others and I 
can whip them up.
-- 
https://code.launchpad.net/~mterry/duplicity/report-encrypted-chains/+merge/68885
Your team duplicity-team is requested to review the proposed merge of 
lp:~mterry/duplicity/report-encrypted-chains into lp:duplicity.
=== modified file 'duplicity/collections.py'
--- duplicity/collections.py	2011-06-17 18:22:28 +0000
+++ duplicity/collections.py	2011-07-22 17:41:23 +0000
@@ -52,6 +52,7 @@
         self.start_time = None                      # will be set if inc
         self.end_time = None                        # will be set if inc
         self.partial = False                        # true if a partial backup
+        self.encrypted = False                      # true if an encrypted backup
 
     def is_complete(self):
         """
@@ -108,6 +109,7 @@
         self.end_time = pr.end_time
         self.time = pr.time
         self.partial = pr.partial
+        self.encrypted = bool(pr.encrypted)
         self.info_set = True
 
     def set_manifest(self, remote_filename):
@@ -366,7 +368,8 @@
             else:
                 type = "inc"
                 time = s.end_time
-            l.append("%s%s %s %d" % (prefix, type, dup_time.timetostring(time), (len(s)),))
+            enc = "enc" if s.encrypted else "noenc"
+            l.append("%s%s %s %d %s" % (prefix, type, dup_time.timetostring(time), (len(s)), enc))
         return l
 
     def __str__(self):

_______________________________________________
Mailing list: https://launchpad.net/~duplicity-team
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~duplicity-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to