mirror of
https://github.com/tuna/tunasync.git
synced 2025-04-20 20:22:46 +00:00
implemented status file
This commit is contained in:
parent
0a0800fe63
commit
732f27ff8f
@ -3,7 +3,8 @@ tunasync
|
|||||||
|
|
||||||
## TODO
|
## TODO
|
||||||
|
|
||||||
- [ ] status file
|
- [x] status file
|
||||||
- [x] btrfs backend (create snapshot before syncing)
|
- [x] btrfs backend (create snapshot before syncing)
|
||||||
- [x] add mirror job online
|
- [x] add mirror job online
|
||||||
|
- [ ] use toml as configuration
|
||||||
- [ ] debmirror provider
|
- [ ] debmirror provider
|
||||||
|
61
tunasync.py
61
tunasync.py
@ -2,12 +2,65 @@
|
|||||||
# -*- coding:utf-8 -*-
|
# -*- coding:utf-8 -*-
|
||||||
import os
|
import os
|
||||||
import argparse
|
import argparse
|
||||||
|
import json
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
from tunasync import TUNASync
|
from tunasync import TUNASync
|
||||||
|
from tunasync.hook import JobHook
|
||||||
|
|
||||||
|
|
||||||
|
class IndexPageHook(JobHook):
|
||||||
|
|
||||||
|
def __init__(self, parent, dbfile):
|
||||||
|
self.parent = parent
|
||||||
|
self.dbfile = dbfile
|
||||||
|
|
||||||
|
self.mirrors = {}
|
||||||
|
try:
|
||||||
|
with open(self.dbfile) as f:
|
||||||
|
_mirrors = json.load(f)
|
||||||
|
for m in _mirrors:
|
||||||
|
self.mirrors[m["name"]] = m
|
||||||
|
except:
|
||||||
|
for name, _ in self.parent.mirrors.iteritems():
|
||||||
|
self.mirrors[name] = {
|
||||||
|
'name': name,
|
||||||
|
'last_update': '-',
|
||||||
|
'status': 'unknown',
|
||||||
|
}
|
||||||
|
|
||||||
|
def before_job(self, *args, **kwargs):
|
||||||
|
pass
|
||||||
|
|
||||||
|
def after_job(self, name='unknown', status="unknown", *args, **kwargs):
|
||||||
|
print("Updating tunasync.json")
|
||||||
|
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
self.mirrors[name] = {
|
||||||
|
'name': name,
|
||||||
|
'last_update': now,
|
||||||
|
'status': status
|
||||||
|
}
|
||||||
|
with open(self.dbfile, 'wb') as f:
|
||||||
|
|
||||||
|
_mirrors = sorted(
|
||||||
|
[m for _, m in self.mirrors.items()],
|
||||||
|
key=lambda x: x['name']
|
||||||
|
)
|
||||||
|
|
||||||
|
json.dump(_mirrors, f)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
here = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(prog="tunasync")
|
parser = argparse.ArgumentParser(prog="tunasync")
|
||||||
parser.add_argument("-c", "--config", default="tunasync.ini", help="config file")
|
parser.add_argument("-c", "--config",
|
||||||
parser.add_argument("--pidfile", default="/var/run/tunasync.pid", help="pidfile")
|
default="tunasync.ini", help="config file")
|
||||||
|
parser.add_argument("--dbfile",
|
||||||
|
default="tunasync.json",
|
||||||
|
help="mirror status db file")
|
||||||
|
parser.add_argument("--pidfile", default="/var/run/tunasync.pid",
|
||||||
|
help="pidfile")
|
||||||
|
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
@ -17,6 +70,10 @@ if __name__ == "__main__":
|
|||||||
tunaSync = TUNASync()
|
tunaSync = TUNASync()
|
||||||
tunaSync.read_config(args.config)
|
tunaSync.read_config(args.config)
|
||||||
|
|
||||||
|
index_hook = IndexPageHook(tunaSync, args.dbfile)
|
||||||
|
|
||||||
|
tunaSync.add_hook(index_hook)
|
||||||
|
|
||||||
tunaSync.run_jobs()
|
tunaSync.run_jobs()
|
||||||
|
|
||||||
# vim: ts=4 sw=4 sts=4 expandtab
|
# vim: ts=4 sw=4 sts=4 expandtab
|
||||||
|
@ -40,7 +40,7 @@ def run_job(sema, child_q, manager_q, provider):
|
|||||||
|
|
||||||
for hook in provider.hooks[::-1]:
|
for hook in provider.hooks[::-1]:
|
||||||
try:
|
try:
|
||||||
hook.after_job(status=status)
|
hook.after_job(name=provider.name, status=status)
|
||||||
except Exception:
|
except Exception:
|
||||||
import traceback
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user