add upstream url to status file

This commit is contained in:
bigeagle 2014-12-08 16:24:00 +08:00
parent 1f00ce570b
commit f9c7da5ba7
2 changed files with 26 additions and 13 deletions

View File

@ -13,32 +13,42 @@ class StatusManager(object):
def init_mirrors(self): def init_mirrors(self):
mirrors = {} mirrors = {}
for name, cfg in self.parent.mirrors.iteritems():
mirrors[name] = {
'name': name,
'last_update': '-',
'status': 'unknown',
'upstream': cfg.upstream or '-',
}
try: try:
with open(self.dbfile) as f: with open(self.dbfile) as f:
_mirrors = json.load(f) _mirrors = json.load(f)
for m in _mirrors: for m in _mirrors:
mirrors[m["name"]] = m name = m["name"]
mirrors[name]["last_update"] = m["last_update"]
mirrors[name]["status"] = m["status"]
except: except:
for name, _ in self.parent.mirrors.iteritems(): pass
mirrors[name] = {
'name': name,
'last_update': '-',
'status': 'unknown',
}
self.mirrors = mirrors self.mirrors = mirrors
def get_info(self, name, key): def get_info(self, name, key):
_m = self.mirrors.get(name, {}) _m = self.mirrors.get(name, {})
return _m.get(key, None) return _m.get(key, None)
def update_info(self, name, key, value): def refresh_mirror(self, name):
cfg = self.parent.mirrors.get(name, None)
if cfg is None:
return
_m = self.mirrors.get(name, { _m = self.mirrors.get(name, {
'name': name, 'name': name,
'last_update': '-', 'last_update': '-',
'status': '-', 'status': '-',
}) })
_m[key] = value _m['upstream'] = cfg.upstream or '-'
self.mirrors[name] = dict(_m.items()) self.mirrors[name] = dict(_m.items())
self.commit_db()
def update_status(self, name, status): def update_status(self, name, status):
@ -59,10 +69,8 @@ class StatusManager(object):
_m['status'] = status _m['status'] = status
self.mirrors[name] = dict(_m.items()) self.mirrors[name] = dict(_m.items())
with open(self.dbfile, 'wb') as f: self.commit_db()
_mirrors = self.list_status() print("Updated status file, {}:{}".format(name, status))
print("Updated status file, {}:{}".format(name, status))
json.dump(_mirrors, f, indent=2, separators=(',', ':'))
def list_status(self, _format=False): def list_status(self, _format=False):
_mirrors = sorted( _mirrors = sorted(
@ -103,5 +111,9 @@ class StatusManager(object):
tmpl = "{name} last_update: {last_update} status: {status}" tmpl = "{name} last_update: {last_update} status: {status}"
return tmpl.format(**mir) return tmpl.format(**mir)
def commit_db(self):
with open(self.dbfile, 'wb') as f:
_mirrors = self.list_status()
json.dump(_mirrors, f, indent=2, separators=(',', ':'))
# vim: ts=4 sw=4 sts=4 expandtab # vim: ts=4 sw=4 sts=4 expandtab

View File

@ -144,6 +144,7 @@ class TUNASync(object):
for mirror_opt in self._settings["mirrors"]: for mirror_opt in self._settings["mirrors"]:
name = mirror_opt["name"] name = mirror_opt["name"]
newMirCfg = MirrorConfig(self, mirror_opt) newMirCfg = MirrorConfig(self, mirror_opt)
self.status_manager.refresh_mirror(name)
if name in self._mirrors: if name in self._mirrors:
if newMirCfg.compare(self._mirrors[name]): if newMirCfg.compare(self._mirrors[name]):