aboutsummaryrefslogtreecommitdiff
path: root/src/mlia/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/mlia/backend')
-rw-r--r--src/mlia/backend/corstone/__init__.py30
-rw-r--r--src/mlia/backend/manager.py13
2 files changed, 26 insertions, 17 deletions
diff --git a/src/mlia/backend/corstone/__init__.py b/src/mlia/backend/corstone/__init__.py
index 36f74ee..b59ab65 100644
--- a/src/mlia/backend/corstone/__init__.py
+++ b/src/mlia/backend/corstone/__init__.py
@@ -7,24 +7,20 @@ from mlia.backend.config import System
from mlia.backend.registry import registry
from mlia.core.common import AdviceCategory
-registry.register(
- "Corstone-300",
- BackendConfiguration(
- supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
- supported_systems=[System.LINUX_AMD64],
- backend_type=BackendType.CUSTOM,
- ),
-)
-registry.register(
- "Corstone-310",
- BackendConfiguration(
- supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
- supported_systems=[System.LINUX_AMD64],
- backend_type=BackendType.CUSTOM,
- ),
-)
+# List of mutually exclusive Corstone backends ordered by priority
+CORSTONE_PRIORITY = ("Corstone-310", "Corstone-300")
+
+for corstone_name in CORSTONE_PRIORITY:
+ registry.register(
+ corstone_name,
+ BackendConfiguration(
+ supported_advice=[AdviceCategory.PERFORMANCE, AdviceCategory.OPTIMIZATION],
+ supported_systems=[System.LINUX_AMD64],
+ backend_type=BackendType.CUSTOM,
+ ),
+ )
def is_corstone_backend(backend_name: str) -> bool:
"""Check if backend belongs to Corstone."""
- return backend_name in ["Corstone-300", "Corstone-310"]
+ return backend_name in CORSTONE_PRIORITY
diff --git a/src/mlia/backend/manager.py b/src/mlia/backend/manager.py
index b0fa919..d953b2d 100644
--- a/src/mlia/backend/manager.py
+++ b/src/mlia/backend/manager.py
@@ -9,11 +9,13 @@ from abc import abstractmethod
from pathlib import Path
from typing import Callable
+from mlia.backend.config import BackendType
from mlia.backend.corstone.install import get_corstone_installations
from mlia.backend.install import DownloadAndInstall
from mlia.backend.install import Installation
from mlia.backend.install import InstallationType
from mlia.backend.install import InstallFromPath
+from mlia.backend.registry import registry as backend_registry
from mlia.backend.tosa_checker.install import get_tosa_backend_installation
from mlia.core.errors import ConfigurationError
from mlia.core.errors import InternalError
@@ -279,3 +281,14 @@ def get_installation_manager(noninteractive: bool = False) -> InstallationManage
backends.append(get_tosa_backend_installation())
return DefaultInstallationManager(backends, noninteractive=noninteractive)
+
+
+def get_available_backends() -> list[str]:
+ """Return list of the available backends."""
+ manager = get_installation_manager()
+ available_backends = [
+ backend
+ for backend, cfg in backend_registry.items.items()
+ if cfg.type == BackendType.BUILTIN or manager.backend_installed(backend)
+ ]
+ return available_backends