projects
/
cumulus.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update backend code and cumulus-sync for the new backup layout.
[cumulus.git]
/
python
/
cumulus
/
__init__.py
diff --git
a/python/cumulus/__init__.py
b/python/cumulus/__init__.py
index
ef35325
..
02f978e
100644
(file)
--- a/
python/cumulus/__init__.py
+++ b/
python/cumulus/__init__.py
@@
-219,7
+219,7
@@
class SearchPath(object):
except cumulus.store.NotFoundError:
pass
if not success:
except cumulus.store.NotFoundError:
pass
if not success:
- raise cumulus.store.NotFoundError(ba
sename
)
+ raise cumulus.store.NotFoundError(ba
ckend
)
def _build_segments_searchpath(prefix):
for (extension, filter) in SEGMENT_FILTERS:
def _build_segments_searchpath(prefix):
for (extension, filter) in SEGMENT_FILTERS:
@@
-231,6
+231,9
@@
SEARCH_PATHS = {
[SearchPathEntry("meta", ".sha1sums"),
SearchPathEntry("checksums", ".sha1sums"),
SearchPathEntry("", ".sha1sums")]),
[SearchPathEntry("meta", ".sha1sums"),
SearchPathEntry("checksums", ".sha1sums"),
SearchPathEntry("", ".sha1sums")]),
+ "meta": SearchPath(
+ r"^snapshot-(.*)\.meta(\.\S+)?$",
+ _build_segments_searchpath("meta")),
"segments": SearchPath(
(r"^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
r"\.tar(\.\S+)?$"),
"segments": SearchPath(
(r"^([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})"
r"\.tar(\.\S+)?$"),
@@
-289,6
+292,15
@@
class BackendWrapper(object):
return ((x[1].group(1), x[0])
for x in SEARCH_PATHS[filetype].list(self._backend))
return ((x[1].group(1), x[0])
for x in SEARCH_PATHS[filetype].list(self._backend))
+ def prefetch_generic(self):
+ """Calls scan on directories to prefetch file metadata."""
+ directories = set()
+ for typeinfo in SEARCH_PATHS.values():
+ directories.update(typeinfo.directories())
+ for d in directories:
+ print "Prefetch", d
+ self._backend.scan(d)
+
class CumulusStore:
def __init__(self, backend):
if isinstance(backend, BackendWrapper):
class CumulusStore:
def __init__(self, backend):
if isinstance(backend, BackendWrapper):
@@
-427,6
+439,9
@@
class CumulusStore:
return data
return data
+ def prefetch(self):
+ self.backend.prefetch_generic()
+
def parse(lines, terminate=None):
"""Generic parser for RFC822-style "Key: Value" data streams.
def parse(lines, terminate=None):
"""Generic parser for RFC822-style "Key: Value" data streams.