fester/backend/nodes/roles_store.py

40 lines
662 B
Python

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)