mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-21 04:42:46 +00:00
hooks update
This commit is contained in:
parent
b0e4648dc3
commit
3629448b3b
@ -17,10 +17,10 @@ class BtrfsHook(JobHook):
|
||||
self.working_dir = working_dir
|
||||
self.gc_dir = gc_dir
|
||||
|
||||
def before_job(self):
|
||||
def before_job(self, *args, **kwargs):
|
||||
self._create_working_snapshot()
|
||||
|
||||
def after_job(self):
|
||||
def after_job(self, *args, **kwargs):
|
||||
self._commit_changes()
|
||||
|
||||
def _ensure_subvolume(self):
|
||||
|
@ -4,10 +4,10 @@
|
||||
|
||||
class JobHook(object):
|
||||
|
||||
def before_job(self):
|
||||
def before_job(self, *args, **kwargs):
|
||||
raise NotImplementedError("")
|
||||
|
||||
def after_job(self):
|
||||
def after_job(self, *args, **kwargs):
|
||||
raise NotImplementedError("")
|
||||
|
||||
# vim: ts=4 sw=4 sts=4 expandtab
|
||||
|
@ -1,5 +1,6 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding:utf-8 -*-
|
||||
import sh
|
||||
import sys
|
||||
import signal
|
||||
|
||||
@ -28,10 +29,20 @@ def run_job(sema, child_q, manager_q, provider):
|
||||
hook.before_job()
|
||||
|
||||
provider.run()
|
||||
provider.wait()
|
||||
|
||||
try:
|
||||
provider.wait()
|
||||
except sh.ErrorReturnCode:
|
||||
status = "fail"
|
||||
else:
|
||||
status = "success"
|
||||
|
||||
for hook in provider.hooks[::-1]:
|
||||
hook.after_job()
|
||||
try:
|
||||
hook.after_job(status=status)
|
||||
except Exception:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
sema.release()
|
||||
aquired = False
|
||||
|
@ -9,6 +9,7 @@ from multiprocessing import Process, Semaphore, Queue
|
||||
from . import jobs
|
||||
from .mirror_provider import RsyncProvider, ShellProvider
|
||||
from .btrfs_snapshot import BtrfsHook
|
||||
from .hook import JobHook
|
||||
|
||||
|
||||
class MirrorConfig(object):
|
||||
@ -145,6 +146,7 @@ class TUNASync(object):
|
||||
self.processes = {}
|
||||
self.semaphore = Semaphore(self._settings.getint("global", "concurrent"))
|
||||
self.channel = Queue()
|
||||
self._hooks = []
|
||||
|
||||
self.mirror_root = self._settings.get("global", "mirror_root")
|
||||
self.use_btrfs = self._settings.getboolean("global", "use_btrfs")
|
||||
@ -155,8 +157,12 @@ class TUNASync(object):
|
||||
self.btrfs_gc_dir_tmpl = self._settings.get(
|
||||
"btrfs", "gc_dir")
|
||||
|
||||
def add_hook(self, h):
|
||||
assert isinstance(h, JobHook)
|
||||
self._hooks.append(h)
|
||||
|
||||
def hooks(self):
|
||||
return []
|
||||
return self._hooks
|
||||
|
||||
@property
|
||||
def mirrors(self):
|
||||
|
Loading…
x
Reference in New Issue
Block a user