update_manager: refactor extension instantation

Don't allow extension errors to propagate, warn and continue
loading the module instead.

Signed-off-by:  Eric Callahan <arksine.code@gmail.com>
This commit is contained in:
Eric Callahan 2022-03-31 12:00:47 -04:00
parent 238b08ea1f
commit 72a85e08d4
No known key found for this signature in database
GPG Key ID: 7027245FBBDDF59A
1 changed files with 19 additions and 11 deletions

View File

@ -106,7 +106,11 @@ class UpdateManager:
cfg = config[section]
name = section.split()[-1]
if name in self.updaters:
raise config.error(f"Client repo {name} already added")
self.server.add_warning(
f"[update_manager]: Extension {name} already added"
)
continue
try:
client_type = cfg.get("type")
if client_type in ["web", "web_beta"]:
self.updaters[name] = WebClientDeploy(cfg, self.cmd_helper)
@ -115,8 +119,12 @@ class UpdateManager:
dclass = get_deploy_class(path)
self.updaters[name] = dclass(cfg, self.cmd_helper)
else:
raise config.error(
self.server.add_warning(
f"Invalid type '{client_type}' for section [{section}]")
except Exception as e:
self.server.add_warning(
f"[update_manager]: Failed to load extension {name}: {e}"
)
self.cmd_request_lock = asyncio.Lock()
self.klippy_identified_evt: Optional[asyncio.Event] = None