master: publish repository status

This commit is contained in:
Sebastien Bourdeauducq 2016-03-18 00:40:17 +08:00
parent fb8a5486e3
commit 4bf0db32be
2 changed files with 9 additions and 1 deletions

View File

@ -105,6 +105,7 @@ def main():
"devices": device_db.data, "devices": device_db.data,
"datasets": dataset_db.data, "datasets": dataset_db.data,
"explist": experiment_db.explist, "explist": experiment_db.explist,
"explist_status": experiment_db.status,
"log": log_buffer.data "log": log_buffer.data
}) })
loop.run_until_complete(server_notify.start( loop.run_until_complete(server_notify.start(

View File

@ -84,9 +84,13 @@ class ExperimentDB:
self.cur_rev = self.repo_backend.get_head_rev() self.cur_rev = self.repo_backend.get_head_rev()
self.repo_backend.request_rev(self.cur_rev) self.repo_backend.request_rev(self.cur_rev)
self.explist = Notifier(dict()) self.explist = Notifier(dict())
self._scanning = False self._scanning = False
self.status = Notifier({
"scanning": False,
"cur_rev": self.cur_rev
})
def close(self): def close(self):
# The object cannot be used anymore after calling this method. # The object cannot be used anymore after calling this method.
self.repo_backend.release_rev(self.cur_rev) self.repo_backend.release_rev(self.cur_rev)
@ -95,17 +99,20 @@ class ExperimentDB:
if self._scanning: if self._scanning:
return return
self._scanning = True self._scanning = True
self.status["scanning"] = True
try: try:
if new_cur_rev is None: if new_cur_rev is None:
new_cur_rev = self.repo_backend.get_head_rev() new_cur_rev = self.repo_backend.get_head_rev()
wd, _ = self.repo_backend.request_rev(new_cur_rev) wd, _ = self.repo_backend.request_rev(new_cur_rev)
self.repo_backend.release_rev(self.cur_rev) self.repo_backend.release_rev(self.cur_rev)
self.cur_rev = new_cur_rev self.cur_rev = new_cur_rev
self.status["cur_rev"] = new_cur_rev
new_explist = await _scan_experiments(wd, self.get_device_db_fn) new_explist = await _scan_experiments(wd, self.get_device_db_fn)
_sync_explist(self.explist, new_explist) _sync_explist(self.explist, new_explist)
finally: finally:
self._scanning = False self._scanning = False
self.status["scanning"] = False
def scan_repository_async(self, new_cur_rev=None): def scan_repository_async(self, new_cur_rev=None):
asyncio.ensure_future( asyncio.ensure_future(