diff --git a/nvflare/dashboard/application/blob.py b/nvflare/dashboard/application/blob.py index a98ba680fd..f438fd7145 100644 --- a/nvflare/dashboard/application/blob.py +++ b/nvflare/dashboard/application/blob.py @@ -32,6 +32,24 @@ from .store import Store, inc_dl +class DummyLogger: + """This dummy logger is used to suppress all log messages generated by the Provisioner, except for errors. + We print error messages to stdout. + """ + + def info(self, msg: str): + pass + + def error(self, msg: str): + print(f"ERROR: {msg}") + + def debug(self, msg: str): + pass + + def warning(self, msg: str): + pass + + def _get_provisioner(root_dir: str, scheme, docker_image=None): overseer_agent = { "path": "nvflare.ha.dummy_overseer_agent.DummyOverseerAgent", @@ -102,10 +120,9 @@ def _gen_kit(download_key, prepare_target_cb=None, **cb_kwargs): if prepare_target_cb is not None: target = prepare_target_cb(prov_project, **cb_kwargs) - ctx = provisioner.provision(prov_project) + ctx = provisioner.provision(prov_project, logger=DummyLogger()) result_dir = ctx.get_result_location() ent_dir = os.path.join(result_dir, target.name) - print(f"{target.name} provision result: {ent_dir}") run_args = ["zip", "-rq", "-P", download_key, "tmp.zip", "."] subprocess.run(run_args, cwd=ent_dir) fileobj = io.BytesIO() diff --git a/tests/unit_test/dashboard/conftest.py b/tests/unit_test/dashboard/conftest.py index 26b110674a..d4f07f6dee 100644 --- a/tests/unit_test/dashboard/conftest.py +++ b/tests/unit_test/dashboard/conftest.py @@ -32,7 +32,7 @@ def app(): if os.path.exists(sqlite_file): os.remove(sqlite_file) os.environ["DATABASE_URL"] = f"sqlite:///{sqlite_file}" - os.environ["NVFL_CREDENTIAL"] = f"{TEST_USER}:{TEST_PW}" + os.environ["NVFL_CREDENTIAL"] = f"{TEST_USER}:{TEST_PW}:nvidia" app = init_app() app.config.update( {