Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/bareos/python-bareos.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoerg Steffens <joerg.steffens@bareos.com>2015-10-30 19:06:21 +0300
committerJoerg Steffens <joerg.steffens@bareos.com>2015-10-30 19:06:21 +0300
commitccc5b9aa57316c7edd4e593fce90949855229401 (patch)
tree81de1661c91743b0c8dbc515a2c0adf4d99b4f9c
parent2862ab10ff2b65d9c521c9b4f0969ac82b9316ca (diff)
optimize caching
-rw-r--r--bareos/fuse/node/base.py4
-rw-r--r--bareos/fuse/node/directory.py2
-rw-r--r--bareos/fuse/node/job.py3
-rw-r--r--bareos/fuse/node/jobsname.py4
-rw-r--r--bareos/fuse/node/volume.py3
5 files changed, 16 insertions, 0 deletions
diff --git a/bareos/fuse/node/base.py b/bareos/fuse/node/base.py
index 012da3f..916e2b0 100644
--- a/bareos/fuse/node/base.py
+++ b/bareos/fuse/node/base.py
@@ -186,6 +186,8 @@ class Base(object):
self.update_stat()
result = self.get_stat()
else:
+ if not (path.get(0) in self.subnodes):
+ self.update()
if path.get(0) in self.subnodes:
topdir = path.shift()
result = self.subnodes[topdir].getattr(path)
@@ -201,6 +203,8 @@ class Base(object):
if self.content != None:
result = self.content[offset:offset+size]
else:
+ if not (path.get(0) in self.subnodes):
+ self.update()
if path.get(0) in self.subnodes:
topdir = path.shift()
result = self.subnodes[topdir].read(path, size, offset)
diff --git a/bareos/fuse/node/directory.py b/bareos/fuse/node/directory.py
index 611933e..e54915d 100644
--- a/bareos/fuse/node/directory.py
+++ b/bareos/fuse/node/directory.py
@@ -26,6 +26,8 @@ class Directory(Base):
self.update()
result = list(self.defaultdirs) + list(self.subnodes.keys())
else:
+ if not (path.get(0) in self.subnodes):
+ self.update()
if path.get(0) in self.subnodes:
topdir = path.shift()
result = self.subnodes[topdir].readdir(path, offset)
diff --git a/bareos/fuse/node/job.py b/bareos/fuse/node/job.py
index c6c3213..7db12e5 100644
--- a/bareos/fuse/node/job.py
+++ b/bareos/fuse/node/job.py
@@ -45,6 +45,9 @@ class Job(Directory):
name = "jobid={jobid}_level={level}_status={jobstatus}".format(**job)
return name
+ def do_update_stat(self):
+ self.subnode_count = 3
+
def do_update(self):
self.add_subnode(File, name="info.txt", content = pformat(self.job) + "\n")
self.add_subnode(JobLog, name="job.log", job=self.job)
diff --git a/bareos/fuse/node/jobsname.py b/bareos/fuse/node/jobsname.py
index de97ace..bba0c20 100644
--- a/bareos/fuse/node/jobsname.py
+++ b/bareos/fuse/node/jobsname.py
@@ -14,6 +14,10 @@ class JobsName(Directory):
def get_id(cls, name):
return name
+ def do_update_stat(self):
+ data = self.bsock.call("llist job=%s count" % (self.jobname))
+ self.subnode_count = int(data['jobs'][0]['count'])
+
def do_update(self):
data = self.bsock.call("llist job=%s" % (self.jobname))
jobs = data['jobs']
diff --git a/bareos/fuse/node/volume.py b/bareos/fuse/node/volume.py
index 301669b..e57215f 100644
--- a/bareos/fuse/node/volume.py
+++ b/bareos/fuse/node/volume.py
@@ -17,6 +17,9 @@ class Volume(Directory):
def get_id(cls, name, volume):
return volume['volumename']
+ def do_update_stat(self):
+ self.subnode_count = 3
+
def do_update(self):
self.add_subnode(File, name="info.txt", content=pformat(self.volume) + "\n")
self.add_subnode(JobsList, name="jobs", selector="volume=%s" % (self.name))