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@dass-it.de>2015-09-16 17:58:10 +0300
committerJoerg Steffens <joerg.steffens@dass-it.de>2015-09-16 17:58:10 +0300
commitd21ed245f17a8625128ecbed1187d7a909d3a742 (patch)
tree9921e70a3201b0957a5bb0d99ae98375f9b4954c
parentf019e6d98f9b604d359e472fc45c5dbcf012e38a (diff)
seperated nodes in individual files
-rw-r--r--bareos/fuse/node/__init__.py14
-rw-r--r--bareos/fuse/node/backups.py17
-rw-r--r--bareos/fuse/node/bareosnodes.py169
-rw-r--r--bareos/fuse/node/bvfsdir.py62
-rw-r--r--bareos/fuse/node/bvfsfile.py34
-rw-r--r--bareos/fuse/node/client.py13
-rw-r--r--bareos/fuse/node/clients.py17
-rw-r--r--bareos/fuse/node/directory.py2
-rw-r--r--bareos/fuse/node/file.py2
-rw-r--r--bareos/fuse/node/job.py44
-rw-r--r--bareos/fuse/node/joblog.py19
-rw-r--r--bareos/fuse/node/jobs.py16
-rw-r--r--bareos/fuse/node/volume.py15
-rw-r--r--bareos/fuse/node/volumes.py17
-rw-r--r--bareos/fuse/root.py2
15 files changed, 266 insertions, 177 deletions
diff --git a/bareos/fuse/node/__init__.py b/bareos/fuse/node/__init__.py
index 08588b9..6662aaf 100644
--- a/bareos/fuse/node/__init__.py
+++ b/bareos/fuse/node/__init__.py
@@ -1,5 +1,9 @@
-#__all__ = [ "bconsole" ]
-from bareos.fuse.node.base import Base
-from bareos.fuse.node.file import File
-from bareos.fuse.node.directory import Directory
-from bareos.fuse.node.bareosnodes import *
+files = ['backups', 'base', 'bvfs', 'client', 'clients', 'directory', 'file', 'job', 'joblog', 'jobs', 'volume', 'volumes']
+
+for i in files:
+ module = __import__( "bareos.fuse.node." + i, globals(), locals(), ['*'])
+ for k in dir(module):
+ locals()[k] = getattr(module, k)
+ del k
+del i
+del files
diff --git a/bareos/fuse/node/backups.py b/bareos/fuse/node/backups.py
new file mode 100644
index 0000000..5d3f95a
--- /dev/null
+++ b/bareos/fuse/node/backups.py
@@ -0,0 +1,17 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.directory import Directory
+from bareos.fuse.node.job import Job
+
+class Backups(Directory):
+ def __init__(self, bsock, name, client):
+ super(Backups, self).__init__(bsock, name)
+ self.client = client
+
+ def do_update(self):
+ data = self.bsock.call("llist backups client=%s" % (self.client))
+ backups = data['backups']
+ for i in backups:
+ self.add_subnode(Job(self.bsock, i))
diff --git a/bareos/fuse/node/bareosnodes.py b/bareos/fuse/node/bareosnodes.py
deleted file mode 100644
index d181772..0000000
--- a/bareos/fuse/node/bareosnodes.py
+++ /dev/null
@@ -1,169 +0,0 @@
-"""
-Bareos specific Fuse nodes.
-"""
-
-from bareos.fuse.node import Base
-from bareos.fuse.node import File
-from bareos.fuse.node import Directory
-from dateutil import parser as DateParser
-import errno
-import logging
-from pprint import pformat
-import stat
-
-class Jobs(Directory):
- def __init__(self, bsock, name):
- super(Jobs, self).__init__(bsock, name)
-
- def do_update(self):
- data = self.bsock.call("llist jobs")
- jobs = data['jobs']
- for i in jobs:
- self.add_subnode(Job(self.bsock, i))
-
-class Job(Directory):
- def __init__(self, bsock, job):
- self.job = job
- super(Job, self).__init__(bsock, self.get_name())
- try:
- self.stat.st_ctime = self.convert_date_bareos_unix(self.job['starttime'])
- except KeyError:
- pass
- try:
- self.stat.st_mtime = self.convert_date_bareos_unix(self.job['realendtime'])
- except KeyError:
- pass
-
- def get_name(self):
- # TODO: adapt list backups to include name
- try:
- name = "jobid={jobid}_client={clientname}_name={name}_level={level}_status={jobstatus}".format(**self.job)
- except KeyError:
- name = "jobid={jobid}_level={level}_status={jobstatus}".format(**self.job)
- return name
-
- def convert_date_bareos_unix(self, bareosdate):
- unixtimestamp = int(DateParser.parse(bareosdate).strftime("%s"))
- self.logger.debug( "unix timestamp: %d" % (unixtimestamp))
- return unixtimestamp
-
- def do_update(self):
- self.add_subnode(File(self.bsock, name="info.txt", content = pformat(self.job) + "\n"))
- self.add_subnode(JobLog(self.bsock, self.job))
- self.add_subnode(BvfsDir(self.bsock, "data", self.job['jobid'], None))
-
-class JobLog(File):
- def __init__(self, bsock, job):
- super(JobLog, self).__init__(bsock, "joblog.txt")
- self.job = job
- # TODO: static when job is finished
-
- def do_update(self):
- jobid = self.job['jobid']
- data = self.bsock.call( "llist joblog jobid=%s" % (jobid) )
- self.content = ""
- for i in data['joblog']:
- self.content += str(i['time']) + " "
- self.content += str(i['logtext']) + "\n"
-
-
-class Volumes(Directory):
- def __init__(self, bsock, name):
- super(Volumes, self).__init__(bsock, name)
-
- def do_update(self):
- data = self.bsock.call("llist volumes all")
- volumes = data['volumes']
- for i in volumes:
- volume = i['volumename']
- self.add_subnode(Volume(self.bsock, i))
-
-class Volume(Directory):
- def __init__(self, bsock, volume):
- super(Volume, self).__init__(bsock, volume['volumename'])
- self.volume = volume
-
- def do_update(self):
- self.add_subnode(File(self.bsock, name="info.txt", content = pformat(self.volume) + "\n"))
-
-class Clients(Directory):
- def __init__(self, bsock, name):
- super(Clients, self).__init__(bsock, name)
-
- def do_update(self):
- data = self.bsock.call(".clients")
- clients = data['clients']
- for i in clients:
- name = i['name']
- self.add_subnode(Client(self.bsock, name))
-
-class Client(Directory):
- def __init__(self, bsock, name):
- super(Client, self).__init__(bsock, name)
-
- def do_update(self):
- self.add_subnode(Backups(self.bsock, "backups", client=self.get_name()))
-
-class Backups(Directory):
- def __init__(self, bsock, name, client):
- super(Backups, self).__init__(bsock, name)
- self.client = client
-
- def do_update(self):
- data = self.bsock.call("llist backups client=%s" % (self.client))
- backups = data['backups']
- for i in backups:
- self.add_subnode(Job(self.bsock, i))
-
-class BvfsDir(Directory):
- def __init__(self, bsock, directory, jobid, pathid):
- super(BvfsDir, self).__init__(bsock, directory)
- self.jobid = jobid
- self.pathid = pathid
- self.static = True
-
- def do_update(self):
- if self.pathid == None:
- self.bsock.call(".bvfs_update jobid=%s" % (self.jobid))
- path = "path=/"
- else:
- path = "pathid=%s" % self.pathid
- data = self.bsock.call(".bvfs_lsdirs jobid=%s %s" % (self.jobid, path))
- directories = data['directories']
- data = self.bsock.call(".bvfs_lsfiles jobid=%s %s" % (self.jobid, path))
- files = data['files']
- for i in directories:
- if i['name'] != "." and i['name'] != "..":
- directory = i['name'].rstrip('/')
- pathid = i['pathid']
- self.add_subnode(BvfsDir(self.bsock, directory, self.jobid, pathid))
- for i in files:
- self.add_subnode(BvfsFile(self.bsock, i))
-
-class BvfsFile(File):
- def __init__(self, bsock, file):
- super(BvfsFile, self).__init__(bsock, file['name'], content = None)
- self.file = file
- self.static = True
- self.do_update()
-
- def do_update(self):
- self.stat.st_mode = self.file['stat']['mode']
- self.stat.st_size = self.file['stat']['size']
- self.stat.st_atime = self.file['stat']['atime']
- self.stat.st_ctime = self.file['stat']['ctime']
- self.stat.st_mtime = self.file['stat']['mtime']
-
- #"stat": {
- #"atime": 1441134679,
- #"ino": 3689524,
- #"dev": 2051,
- #"mode": 33256,
- #"nlink": 1,
- #"user": "joergs",
- #"group": "joergs",
- #"ctime": 1441134679,
- #"rdev": 0,
- #"size": 1613,
- #"mtime": 1441134679
- #},
diff --git a/bareos/fuse/node/bvfsdir.py b/bareos/fuse/node/bvfsdir.py
new file mode 100644
index 0000000..b0f7c7e
--- /dev/null
+++ b/bareos/fuse/node/bvfsdir.py
@@ -0,0 +1,62 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.exceptions import *
+from bareos.fuse.node.bvfsfile import BvfsFile
+from bareos.fuse.node.directory import Directory
+from dateutil import parser as DateParser
+import errno
+import logging
+
+class BvfsDir(Directory):
+ def __init__(self, bsock, directory, jobid, pathid):
+ super(BvfsDir, self).__init__(bsock, directory)
+ self.jobid = jobid
+ self.pathid = pathid
+ self.static = True
+
+ def do_update(self):
+ directories = self.get_directories(self.pathid)
+ files = self.get_files(self.pathid)
+ for i in directories:
+ if i['name'] != "." and i['name'] != "..":
+ if i['name'] != "/":
+ directory = i['name'].rstrip('/')
+ else:
+ directory = "data"
+ pathid = i['pathid']
+ self.add_subnode(BvfsDir(self.bsock, directory, self.jobid, pathid))
+ for i in files:
+ self.add_subnode(BvfsFile(self.bsock, i))
+
+ def get_directories(self, pathid):
+ if pathid == None:
+ self.bsock.call(".bvfs_update jobid=%s" % (self.jobid))
+ path = 'path=""'
+ else:
+ path = 'pathid=%s' % pathid
+ data = self.bsock.call('.bvfs_lsdirs jobid=%s %s' % (self.jobid, path))
+ directories = data['directories']
+ if pathid == None:
+ found = False
+ for i in directories:
+ if i['name'] != "." and i['name'] != "..":
+ if i['name'] == "/":
+ self.pathid = i['pathid']
+ else:
+ found = True
+ if not found:
+ # skip empty root directory
+ if not self.pathid:
+ # no pathid and no directoies found. This should not happen
+ return []
+ return self.get_directories(self.pathid)
+ return directories
+
+ def get_files(self, pathid):
+ if pathid:
+ data = self.bsock.call(".bvfs_lsfiles jobid=%s pathid=%s" % (self.jobid, pathid))
+ return data['files']
+ else:
+ return []
diff --git a/bareos/fuse/node/bvfsfile.py b/bareos/fuse/node/bvfsfile.py
new file mode 100644
index 0000000..e7da2c1
--- /dev/null
+++ b/bareos/fuse/node/bvfsfile.py
@@ -0,0 +1,34 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.file import File
+import stat
+
+class BvfsFile(File):
+ def __init__(self, bsock, file):
+ super(BvfsFile, self).__init__(bsock, file['name'], content = None)
+ self.file = file
+ self.static = True
+ self.do_update()
+
+ def do_update(self):
+ self.stat.st_mode = self.file['stat']['mode']
+ self.stat.st_size = self.file['stat']['size']
+ self.stat.st_atime = self.file['stat']['atime']
+ self.stat.st_ctime = self.file['stat']['ctime']
+ self.stat.st_mtime = self.file['stat']['mtime']
+
+ #"stat": {
+ #"atime": 1441134679,
+ #"ino": 3689524,
+ #"dev": 2051,
+ #"mode": 33256,
+ #"nlink": 1,
+ #"user": "joergs",
+ #"group": "joergs",
+ #"ctime": 1441134679,
+ #"rdev": 0,
+ #"size": 1613,
+ #"mtime": 1441134679
+ #},
diff --git a/bareos/fuse/node/client.py b/bareos/fuse/node/client.py
new file mode 100644
index 0000000..6122c1b
--- /dev/null
+++ b/bareos/fuse/node/client.py
@@ -0,0 +1,13 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.backups import Backups
+from bareos.fuse.node.directory import Directory
+
+class Client(Directory):
+ def __init__(self, bsock, name):
+ super(Client, self).__init__(bsock, name)
+
+ def do_update(self):
+ self.add_subnode(Backups(self.bsock, "backups", client=self.get_name()))
diff --git a/bareos/fuse/node/clients.py b/bareos/fuse/node/clients.py
new file mode 100644
index 0000000..7361a46
--- /dev/null
+++ b/bareos/fuse/node/clients.py
@@ -0,0 +1,17 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.client import Client
+from bareos.fuse.node.directory import Directory
+
+class Clients(Directory):
+ def __init__(self, bsock, name):
+ super(Clients, self).__init__(bsock, name)
+
+ def do_update(self):
+ data = self.bsock.call(".clients")
+ clients = data['clients']
+ for i in clients:
+ name = i['name']
+ self.add_subnode(Client(self.bsock, name))
diff --git a/bareos/fuse/node/directory.py b/bareos/fuse/node/directory.py
index bcd5bb8..90fb3da 100644
--- a/bareos/fuse/node/directory.py
+++ b/bareos/fuse/node/directory.py
@@ -1,7 +1,7 @@
"""
"""
-from bareos.fuse.node import Base
+from bareos.fuse.node.base import Base
import errno
import logging
from pprint import pformat
diff --git a/bareos/fuse/node/file.py b/bareos/fuse/node/file.py
index adb36f7..8d31a61 100644
--- a/bareos/fuse/node/file.py
+++ b/bareos/fuse/node/file.py
@@ -1,7 +1,7 @@
"""
"""
-from bareos.fuse.node import Base
+from bareos.fuse.node.base import Base
import errno
import fuse
import logging
diff --git a/bareos/fuse/node/job.py b/bareos/fuse/node/job.py
new file mode 100644
index 0000000..76fa51b
--- /dev/null
+++ b/bareos/fuse/node/job.py
@@ -0,0 +1,44 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.bvfsdir import BvfsDir
+from bareos.fuse.node.directory import Directory
+from bareos.fuse.node.file import File
+from bareos.fuse.node.joblog import JobLog
+from dateutil import parser as DateParser
+import errno
+import logging
+from pprint import pformat
+import stat
+
+class Job(Directory):
+ def __init__(self, bsock, job):
+ self.job = job
+ super(Job, self).__init__(bsock, self.get_name())
+ try:
+ self.stat.st_ctime = self.convert_date_bareos_unix(self.job['starttime'])
+ except KeyError:
+ pass
+ try:
+ self.stat.st_mtime = self.convert_date_bareos_unix(self.job['realendtime'])
+ except KeyError:
+ pass
+
+ def get_name(self):
+ # TODO: adapt list backups to include name
+ try:
+ name = "jobid={jobid}_client={clientname}_name={name}_level={level}_status={jobstatus}".format(**self.job)
+ except KeyError:
+ name = "jobid={jobid}_level={level}_status={jobstatus}".format(**self.job)
+ return name
+
+ def convert_date_bareos_unix(self, bareosdate):
+ unixtimestamp = int(DateParser.parse(bareosdate).strftime("%s"))
+ self.logger.debug( "unix timestamp: %d" % (unixtimestamp))
+ return unixtimestamp
+
+ def do_update(self):
+ self.add_subnode(File(self.bsock, name="info.txt", content = pformat(self.job) + "\n"))
+ self.add_subnode(JobLog(self.bsock, self.job))
+ self.add_subnode(BvfsDir(self.bsock, "data", self.job['jobid'], None))
diff --git a/bareos/fuse/node/joblog.py b/bareos/fuse/node/joblog.py
new file mode 100644
index 0000000..e220311
--- /dev/null
+++ b/bareos/fuse/node/joblog.py
@@ -0,0 +1,19 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.file import File
+
+class JobLog(File):
+ def __init__(self, bsock, job):
+ super(JobLog, self).__init__(bsock, "joblog.txt")
+ self.job = job
+ # TODO: static when job is finished
+
+ def do_update(self):
+ jobid = self.job['jobid']
+ data = self.bsock.call( "llist joblog jobid=%s" % (jobid) )
+ self.content = ""
+ for i in data['joblog']:
+ self.content += str(i['time']) + " "
+ self.content += str(i['logtext']) + "\n"
diff --git a/bareos/fuse/node/jobs.py b/bareos/fuse/node/jobs.py
new file mode 100644
index 0000000..d611c0b
--- /dev/null
+++ b/bareos/fuse/node/jobs.py
@@ -0,0 +1,16 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.directory import Directory
+from bareos.fuse.node.job import Job
+
+class Jobs(Directory):
+ def __init__(self, bsock, name):
+ super(Jobs, self).__init__(bsock, name)
+
+ def do_update(self):
+ data = self.bsock.call("llist jobs")
+ jobs = data['jobs']
+ for i in jobs:
+ self.add_subnode(Job(self.bsock, i))
diff --git a/bareos/fuse/node/volume.py b/bareos/fuse/node/volume.py
new file mode 100644
index 0000000..ef01959
--- /dev/null
+++ b/bareos/fuse/node/volume.py
@@ -0,0 +1,15 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.file import File
+from bareos.fuse.node.directory import Directory
+from pprint import pformat
+
+class Volume(Directory):
+ def __init__(self, bsock, volume):
+ super(Volume, self).__init__(bsock, volume['volumename'])
+ self.volume = volume
+
+ def do_update(self):
+ self.add_subnode(File(self.bsock, name="info.txt", content = pformat(self.volume) + "\n"))
diff --git a/bareos/fuse/node/volumes.py b/bareos/fuse/node/volumes.py
new file mode 100644
index 0000000..69dc07e
--- /dev/null
+++ b/bareos/fuse/node/volumes.py
@@ -0,0 +1,17 @@
+"""
+Bareos specific Fuse node.
+"""
+
+from bareos.fuse.node.directory import Directory
+from bareos.fuse.node.volume import Volume
+
+class Volumes(Directory):
+ def __init__(self, bsock, name):
+ super(Volumes, self).__init__(bsock, name)
+
+ def do_update(self):
+ data = self.bsock.call("llist volumes all")
+ volumes = data['volumes']
+ for i in volumes:
+ volume = i['volumename']
+ self.add_subnode(Volume(self.bsock, i))
diff --git a/bareos/fuse/root.py b/bareos/fuse/root.py
index 62c1b2c..11a217b 100644
--- a/bareos/fuse/root.py
+++ b/bareos/fuse/root.py
@@ -1,6 +1,7 @@
"""
"""
+from bareos.fuse.node.directory import Directory
from bareos.fuse.node import *
class Root(Directory):
@@ -12,4 +13,3 @@ class Root(Directory):
self.add_subnode(Jobs(bsock, "jobs"))
self.add_subnode(Volumes(bsock, "volumes"))
self.add_subnode(Clients(bsock, "clients"))
-