Orchestrator / module_registry.py
evgeniy778's picture
Add Module Registry Version 1.0
eb700c2 verified
Raw
History Blame Contribute Delete
4.19 kB
# =====================================================
# Apckeyl Framework
# Version 1.0
# module_registry.py
# =====================================================
"""
Apckeyl Module Registry.
Version 1.0
Реестр Compute Modules Apckeyl Framework.
Этот файл пока НЕ выполняет сетевые запросы.
Он только хранит информацию о доступных модулях
и предоставляет безопасные операции регистрации
и поиска.
"""
# =====================================================
# Module Registry
# =====================================================
class ModuleRegistry:
def __init__(self):
self._modules = {}
# =================================================
# Register Module
# =================================================
def register(
self,
module_id,
module_name,
module_type,
endpoint=None,
capabilities=None,
version="1.0",
):
if not module_id:
raise ValueError(
"module_id is required"
)
if not module_name:
raise ValueError(
"module_name is required"
)
if not module_type:
raise ValueError(
"module_type is required"
)
if capabilities is None:
capabilities = []
self._modules[module_id] = {
"module_id": module_id,
"module_name": module_name,
"module_type": module_type,
"endpoint": endpoint,
"status": "unknown",
"capabilities": list(capabilities),
"version": version,
}
# =================================================
# Remove Module
# =================================================
def unregister(self, module_id):
if module_id in self._modules:
del self._modules[module_id]
# =================================================
# Get Module
# =================================================
def get(self, module_id):
return self._modules.get(
module_id
)
# =================================================
# Get All Modules
# =================================================
def get_all(self):
return dict(
self._modules
)
# =================================================
# Find By Type
# =================================================
def find_by_type(self, module_type):
return [
module
for module
in self._modules.values()
if module["module_type"] == module_type
]
# =================================================
# Update Status
# =================================================
def update_status(
self,
module_id,
status,
):
module = self.get(
module_id
)
if module is None:
raise KeyError(
f"Unknown module: {module_id}"
)
module["status"] = status
# =================================================
# Check Module
# =================================================
def exists(self, module_id):
return module_id in self._modules
# =====================================================
# Default Registry
# =====================================================
registry = ModuleRegistry()
# =====================================================
# First Production Module
# =====================================================
registry.register(
module_id="realesrgan",
module_name="Apckeyl_RealESRGAN",
module_type="image_upscaler",
endpoint=None,
capabilities=[
"image_upscale",
],
version="1.0",
)
# =====================================================
# Initial Status
# =====================================================
registry.update_status(
module_id="realesrgan",
status="available",
)