import json
import os
from dataclasses import dataclass
from datetime import datetime
from typing import Dict, List, Optional, Union
@dataclass
class Config:
name: str
port: int
enabled: bool = True
def is_valid(self) -> bool:
return len(self.name) > 0 and self.port > 0
class ServerManager:
def __init__(self):
self.configs: Dict[str, Config] = {}
self._initialized = False
def add_config(self, key: str, config: Config) -> None:
if not config.is_valid():
raise ValueError(f"Invalid config for '{key}'")
self.configs[key] = config
print(f"Added config: {key} -> {config}")
def get_config(self, key: str) -> Optional[Config]:
return self.configs.get(key)
def list_configs(self) -> List[str]:
return list(self.configs.keys())
def main():
manager = ServerManager()
configs = [
("web", Config("webserver", 8080, True)),
("api", Config("apiserver", 9000, False)),
("db", Config("database", 5432)),
]
for key, config in configs:
try:
manager.add_config(key, config)
except ValueError as e:
print(f"Error: {e}")
print("\nAll configurations:")
for key in manager.list_configs():
config = manager.get_config(key)
if config:
status = "enabled" if config.enabled else "disabled"
print(f" {key}: {config.name}:{config.port} ({status})")
data = {
"timestamp": datetime.now().isoformat(),
"configs": len(manager.configs),
"active": sum(1 for c in manager.configs.values() if c.enabled),
}
print(f"\nSummary: {json.dumps(data, indent=2)}")
if __name__ == "__main__":
main()