40 lines
662 B
Python
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)
|