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