summaryrefslogtreecommitdiff
path: root/rdiff-backup/rdiff_backup/eas_acls.py
diff options
context:
space:
mode:
authorbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2005-11-03 22:40:04 +0000
committerbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2005-11-03 22:40:04 +0000
commit070e5c4080dac3de8e26a7d5d7314ceb36d32440 (patch)
tree9d651c518600f1edafd83df337f33f2541625fdd /rdiff-backup/rdiff_backup/eas_acls.py
parent5348003fbeed531b60cb99330c7603c354a74fe9 (diff)
downloadrdiff-backup-070e5c4080dac3de8e26a7d5d7314ceb36d32440.tar.gz
Some refactoring of metadata code
git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@668 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109
Diffstat (limited to 'rdiff-backup/rdiff_backup/eas_acls.py')
-rw-r--r--rdiff-backup/rdiff_backup/eas_acls.py78
1 files changed, 16 insertions, 62 deletions
diff --git a/rdiff-backup/rdiff_backup/eas_acls.py b/rdiff-backup/rdiff_backup/eas_acls.py
index 6b74ac4..abb0d1e 100644
--- a/rdiff-backup/rdiff_backup/eas_acls.py
+++ b/rdiff-backup/rdiff_backup/eas_acls.py
@@ -30,7 +30,7 @@ from __future__ import generators
import base64, errno, re
try: import posix1e
except ImportError: pass
-import static, Globals, metadata, connection, rorpiter, log, C, \
+import static, Globals, eas_acls, connection, metadata, rorpiter, log, C, \
rpath, user_group
# When an ACL gets dropped, put name in dropped_acl_names. This is
@@ -170,24 +170,13 @@ class ExtendedAttributesFile(metadata.FlatFile):
_extractor = EAExtractor
_object_to_record = staticmethod(EA2Record)
- def join(cls, rorp_iter, rbdir, time, restrict_index):
- """Add extended attribute information to existing rorp_iter"""
- def helper(rorp_iter, ea_iter):
- """Add EA information in ea_iter to rorp_iter"""
- collated = rorpiter.CollateIterators(rorp_iter, ea_iter)
- for rorp, ea in collated:
- assert rorp, (rorp, (ea.index, ea.attr_dict), time)
- if not ea: ea = ExtendedAttributes(rorp.index)
- rorp.set_ea(ea)
- yield rorp
-
- ea_iter = cls.get_objects_at_time(rbdir, time, restrict_index)
- if not ea_iter:
- log.Log("Warning: Extended attributes file not found", 2)
- ea_iter = iter([])
- return helper(rorp_iter, ea_iter)
-
-static.MakeClass(ExtendedAttributesFile)
+def join_ea_iter(rorp_iter, ea_iter):
+ """Update a rorp iter by adding the information from ea_iter"""
+ for rorp, ea in rorpiter.CollateIterators(rorp_iter, ea_iter):
+ assert rorp, "Missing rorp for index %s" % (ea.index,)
+ if not ea: ea = ExtendedAttributes(rorp.index)
+ rorp.set_ea(ea)
+ yield rorp
class AccessControlLists:
@@ -521,49 +510,14 @@ class AccessControlListFile(metadata.FlatFile):
_extractor = ACLExtractor
_object_to_record = staticmethod(ACL2Record)
- def join(cls, rorp_iter, rbdir, time, restrict_index):
- """Add access control list information to existing rorp_iter"""
- def helper(rorp_iter, acl_iter):
- """Add ACL information in acl_iter to rorp_iter"""
- collated = rorpiter.CollateIterators(rorp_iter, acl_iter)
- for rorp, acl in collated:
- assert rorp, "Missing rorp for index %s" % (acl.index,)
- if not acl: acl = AccessControlLists(rorp.index)
- rorp.set_acl(acl)
- yield rorp
-
- acl_iter = cls.get_objects_at_time(rbdir, time, restrict_index)
- if not acl_iter:
- log.Log("Warning: Access Control List file not found", 2)
- acl_iter = iter([])
- return helper(rorp_iter, acl_iter)
-
-static.MakeClass(AccessControlListFile)
-
-
-def GetCombinedMetadataIter(rbdir, time, restrict_index = None,
- acls = None, eas = None):
- """Return iterator of rorps from metadata and related files
-
- None will be returned if the metadata file is absent. If acls or
- eas is true, access control list or extended attribute information
- will be added.
-
- """
- metadata_iter = metadata.MetadataFile.get_objects_at_time(
- rbdir, time, restrict_index)
- if not metadata_iter:
- log.Log("Warning, metadata file not found.\n"
- "Metadata will be read from filesystem.", 2)
- return None
- if eas:
- metadata_iter = ExtendedAttributesFile.join(
- metadata_iter, rbdir, time, restrict_index)
- if acls:
- metadata_iter = AccessControlListFile.join(
- metadata_iter, rbdir, time, restrict_index)
- return metadata_iter
-
+def join_acl_iter(rorp_iter, acl_iter):
+ """Update a rorp iter by adding the information from acl_iter"""
+ for rorp, acl in rorpiter.CollateIterators(rorp_iter, acl_iter):
+ assert rorp, "Missing rorp for index %s" % (acl.index,)
+ if not acl: acl = AccessControlLists(rorp.index)
+ rorp.set_acl(acl)
+ yield rorp
+
def rpath_acl_get(rp):
"""Get acls of given rpath rp.