Skip to content

Commit 36cad2d

Browse files
phlogistonjohnmergify[bot]
authored andcommitted
sambacc: split out some potentially common ctdb logic into funcs
Split out some logic from the cluster_meta_to_nodes function into separate functions for current & later reuse. Signed-off-by: John Mulligan <[email protected]>
1 parent 9d0a035 commit 36cad2d

File tree

1 file changed

+20
-14
lines changed

1 file changed

+20
-14
lines changed

sambacc/ctdb.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -464,10 +464,7 @@ def _node_update(cmeta: ClusterMeta, real_path: str) -> bool:
464464
new_ctdb_nodes.append(expected_line)
465465
else:
466466
new_ctdb_nodes[pnn] = expected_line
467-
with open(real_path, "w") as nffh:
468-
write_nodes_file(nffh, new_ctdb_nodes)
469-
nffh.flush()
470-
os.fsync(nffh)
467+
_save_nodes(real_path, new_ctdb_nodes)
471468
_logger.info("running: ctdb reloadnodes")
472469
subprocess.check_call(list(samba_cmds.ctdb["reloadnodes"]))
473470
for entry in need_reload:
@@ -490,17 +487,26 @@ def cluster_meta_to_nodes(cmeta: ClusterMeta, real_path: str) -> None:
490487
json_data = cmo.load()
491488
nodes = json_data.get("nodes", [])
492489
_logger.info("Found node metadata: %r", nodes)
493-
pnn_max = max(n["pnn"] for n in nodes) + 1 # pnn is zero indexed
494-
ctdb_nodes: list[str] = [""] * pnn_max
495-
for entry in nodes:
496-
pnn = entry["pnn"]
497-
expected_line = _entry_to_node(ctdb_nodes, entry)
498-
ctdb_nodes[pnn] = expected_line
490+
ctdb_nodes = _cluster_meta_to_ctdb_nodes(nodes)
499491
_logger.info("Will write nodes: %s", ctdb_nodes)
500-
with open(real_path, "w") as nffh:
501-
write_nodes_file(nffh, ctdb_nodes)
502-
nffh.flush()
503-
os.fsync(nffh)
492+
_save_nodes(real_path, ctdb_nodes)
493+
494+
495+
def _cluster_meta_to_ctdb_nodes(nodes: list[dict]) -> list[str]:
496+
pnn_max = max(n["pnn"] for n in nodes) + 1 # pnn is zero indexed
497+
ctdb_nodes: list[str] = [""] * pnn_max
498+
for entry in nodes:
499+
pnn = entry["pnn"]
500+
expected_line = _entry_to_node(ctdb_nodes, entry)
501+
ctdb_nodes[pnn] = expected_line
502+
return ctdb_nodes
503+
504+
505+
def _save_nodes(path: str, ctdb_nodes: list[str]) -> None:
506+
with open(path, "w") as nffh:
507+
write_nodes_file(nffh, ctdb_nodes)
508+
nffh.flush()
509+
os.fsync(nffh)
504510

505511

506512
def ensure_ctdbd_etc_files(

0 commit comments

Comments
 (0)