Improve base config
This commit is contained in:
83
shared/config/utils.py
Normal file
83
shared/config/utils.py
Normal file
@@ -0,0 +1,83 @@
|
||||
# ================================================================
|
||||
# SHARED CONFIGURATION UTILITIES
|
||||
# shared/config/utils.py
|
||||
# ================================================================
|
||||
|
||||
"""
|
||||
Configuration utilities and helpers
|
||||
"""
|
||||
|
||||
from typing import Dict, Any, Type
|
||||
from shared.config.base import BaseServiceSettings
|
||||
|
||||
# Service settings registry
|
||||
SERVICE_SETTINGS: Dict[str, Type[BaseServiceSettings]] = {
|
||||
"gateway": GatewaySettings,
|
||||
"auth-service": AuthSettings,
|
||||
"training-service": TrainingSettings,
|
||||
"forecasting-service": ForecastingSettings,
|
||||
"data-service": DataSettings,
|
||||
"tenant-service": TenantSettings,
|
||||
"notification-service": NotificationSettings,
|
||||
}
|
||||
|
||||
def get_settings_for_service(service_name: str) -> BaseServiceSettings:
|
||||
"""
|
||||
Get settings instance for a specific service
|
||||
|
||||
Args:
|
||||
service_name: Name of the service
|
||||
|
||||
Returns:
|
||||
BaseServiceSettings: Configured settings instance
|
||||
|
||||
Raises:
|
||||
ValueError: If service name is not recognized
|
||||
"""
|
||||
if service_name not in SERVICE_SETTINGS:
|
||||
raise ValueError(f"Unknown service: {service_name}. Available: {list(SERVICE_SETTINGS.keys())}")
|
||||
|
||||
settings_class = SERVICE_SETTINGS[service_name]
|
||||
return settings_class()
|
||||
|
||||
def validate_all_service_configs() -> Dict[str, Any]:
|
||||
"""
|
||||
Validate configuration for all services
|
||||
|
||||
Returns:
|
||||
Dict: Validation results for each service
|
||||
"""
|
||||
results = {}
|
||||
|
||||
for service_name, settings_class in SERVICE_SETTINGS.items():
|
||||
try:
|
||||
settings = settings_class()
|
||||
results[service_name] = {
|
||||
"status": "valid",
|
||||
"config": {
|
||||
"app_name": settings.APP_NAME,
|
||||
"version": settings.VERSION,
|
||||
"environment": settings.ENVIRONMENT,
|
||||
"database_configured": bool(settings.DATABASE_URL),
|
||||
"redis_configured": bool(settings.REDIS_URL),
|
||||
"debug_mode": settings.DEBUG,
|
||||
}
|
||||
}
|
||||
except Exception as e:
|
||||
results[service_name] = {
|
||||
"status": "error",
|
||||
"error": str(e)
|
||||
}
|
||||
|
||||
return results
|
||||
|
||||
def get_service_urls() -> Dict[str, str]:
|
||||
"""
|
||||
Get all service URLs from any service configuration
|
||||
|
||||
Returns:
|
||||
Dict: Service name to URL mapping
|
||||
"""
|
||||
# Use auth service settings as reference (all services have same URLs)
|
||||
settings = AuthSettings()
|
||||
return settings.SERVICE_REGISTRY
|
||||
Reference in New Issue
Block a user