From 178a86bcdafd16eb40281e527ca396087a58488b Mon Sep 17 00:00:00 2001 From: fanmingyu212 Date: Wed, 13 Oct 2021 22:17:52 -0700 Subject: [PATCH] master: add an argument to set an experiment subdirectory Signed-off-by: Mingyu Fan --- RELEASE_NOTES.rst | 2 ++ artiq/frontend/artiq_master.py | 7 ++++++- artiq/master/experiments.py | 10 ++++++---- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/RELEASE_NOTES.rst b/RELEASE_NOTES.rst index 390665643..d9b325382 100644 --- a/RELEASE_NOTES.rst +++ b/RELEASE_NOTES.rst @@ -24,6 +24,8 @@ Highlights: - HVAMP_8CH 8 channel HV amplifier for Fastino / Zotino * ``artiq_ddb_template`` generates edge-counter keys that start with the key of the corresponding TTL device (e.g. ``"ttl_0_counter"`` for the edge counter on TTL device``"ttl_0"``) +* ``artiq_master`` now has an ``--experiment-subdir`` option to scan only a subdirectory of the + repository when building the list of experiments. Breaking changes: diff --git a/artiq/frontend/artiq_master.py b/artiq/frontend/artiq_master.py index 1a5073692..ef46fb9bb 100755 --- a/artiq/frontend/artiq_master.py +++ b/artiq/frontend/artiq_master.py @@ -50,6 +50,10 @@ def get_argparser(): group.add_argument( "-r", "--repository", default="repository", help="path to the repository (default: '%(default)s')") + group.add_argument( + "--experiment-subdir", default="", + help=("path to the experiment folder from the repository root " + "(default: '%(default)s')")) log_args(parser) @@ -104,7 +108,8 @@ def main(): repo_backend = GitBackend(args.repository) else: repo_backend = FilesystemBackend(args.repository) - experiment_db = ExperimentDB(repo_backend, worker_handlers) + experiment_db = ExperimentDB( + repo_backend, worker_handlers, args.experiment_subdir) atexit.register(experiment_db.close) scheduler = Scheduler(RIDCounter(), worker_handlers, experiment_db) diff --git a/artiq/master/experiments.py b/artiq/master/experiments.py index b9a46d7ba..918c92dc8 100644 --- a/artiq/master/experiments.py +++ b/artiq/master/experiments.py @@ -74,19 +74,20 @@ class _RepoScanner: entry_dict.update(entries) return entry_dict - async def scan(self, root): + async def scan(self, root, subdir=""): self.worker = Worker(self.worker_handlers) try: - r = await self._scan(root) + r = await self._scan(root, subdir) finally: await self.worker.close() return r class ExperimentDB: - def __init__(self, repo_backend, worker_handlers): + def __init__(self, repo_backend, worker_handlers, experiment_subdir=""): self.repo_backend = repo_backend self.worker_handlers = worker_handlers + self.experiment_subdir = experiment_subdir self.cur_rev = self.repo_backend.get_head_rev() self.repo_backend.request_rev(self.cur_rev) @@ -115,7 +116,8 @@ class ExperimentDB: self.cur_rev = new_cur_rev self.status["cur_rev"] = new_cur_rev t1 = time.monotonic() - new_explist = await _RepoScanner(self.worker_handlers).scan(wd) + new_explist = await _RepoScanner(self.worker_handlers).scan( + wd, self.experiment_subdir) logger.info("repository scan took %d seconds", time.monotonic()-t1) update_from_dict(self.explist, new_explist) finally: