import json from pathlib import Path from nodes.roles import NodeRole ROLE_DB = Path("/etc/fester/node_roles.json") DEFAULT_ROLE = NodeRole(name="default") def load_roles(): if not ROLE_DB.exists(): return {} try: raw = json.loads(ROLE_DB.read_text()) except: return {} roles = {} for node, cfg in raw.items(): roles[node] = NodeRole(**cfg) return roles def save_roles(roles): raw = { node: role.__dict__ for node, role in roles.items() } ROLE_DB.write_text(json.dumps(raw, indent=2)) def get_role(node_name, roles): return roles.get(node_name, DEFAULT_ROLE)