Skip to content

Commit

Permalink
volume: add status file
Browse files Browse the repository at this point in the history
  • Loading branch information
joergsteffens committed Sep 18, 2015
1 parent f3ee633 commit 1f6a752
Show file tree
Hide file tree
Showing 4 changed files with 42 additions and 10 deletions.
7 changes: 7 additions & 0 deletions bareos/fuse/node/base.py
Expand Up @@ -2,6 +2,7 @@
"""

from datetime import datetime, timedelta
from dateutil import parser as DateParser
import errno
import fuse
import grp
Expand Down Expand Up @@ -120,3 +121,9 @@ def update(self):
def do_update(self):
# dummy, to be filled by inherented classes
pass

def _convert_date_bareos_unix(self, bareosdate):
unixtimestamp = int(DateParser.parse(bareosdate).strftime("%s"))
self.logger.debug( "unix timestamp: %d" % (unixtimestamp))
return unixtimestamp

10 changes: 2 additions & 8 deletions bareos/fuse/node/job.py
Expand Up @@ -6,7 +6,6 @@
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
Expand All @@ -17,11 +16,11 @@ 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'])
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'])
self.stat.st_mtime = self._convert_date_bareos_unix(self.job['realendtime'])
except KeyError:
pass

Expand All @@ -33,11 +32,6 @@ def get_name(self):
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))
Expand Down
6 changes: 4 additions & 2 deletions bareos/fuse/node/volume.py
Expand Up @@ -5,6 +5,7 @@
from bareos.fuse.node.file import File
from bareos.fuse.node.directory import Directory
from bareos.fuse.node.jobslist import JobsList
from bareos.fuse.node.volumestatus import VolumeStatus
from pprint import pformat

class Volume(Directory):
Expand All @@ -13,5 +14,6 @@ def __init__(self, bsock, volume):
self.volume = volume

def do_update(self):
self.add_subnode(File(self.bsock, name="info.txt", content = pformat(self.volume) + "\n"))
self.add_subnode(JobsList(self.bsock, name="jobs", selector = "volume=%s" % (self.name)))
self.add_subnode(File(self.bsock, name="info.txt", content=pformat(self.volume) + "\n"))
self.add_subnode(JobsList(self.bsock, name="jobs", selector="volume=%s" % (self.name)))
self.add_subnode(VolumeStatus(self.bsock, name="volume", volume=self.volume))
29 changes: 29 additions & 0 deletions bareos/fuse/node/volumestatus.py
@@ -0,0 +1,29 @@
"""
Bareos specific Fuse node.
"""

from bareos.fuse.node.file import File

class VolumeStatus(File):
def __init__(self, bsock, name, volume):
super(VolumeStatus, self).__init__(bsock, name, None)
self.volume = volume
self.update_stat()

def do_update(self):
volumename = self.volume['volumename']
data = self.bsock.call( "llist volume=%s" % (volumename) )
self.volume = data['volume']
self.update_stat()

def update_stat(self):
try:
self.stat.st_size = int(self.volume['volbytes'])
self.stat.st_atime = self._convert_date_bareos_unix(self.volume['labeldate'])
#self.stat.st_ctime = stat['ctime']
self.stat.st_mtime = self._convert_date_bareos_unix(self.volume['lastwritten'])
# TODO: set mode dependend on if volume is in apppend mode or full
#self.stat.st_mode = stat['mode']
except KeyError as e:
self.logger.warning(str(e))
pass

0 comments on commit 1f6a752

Please sign in to comment.