Skip to content

fix(confluent): configure nodes named explicitly without a console method - #7714

Open
viniciusferrao wants to merge 2 commits into
xcat2:masterfrom
VersatusHPC:fix/confluent-explicit-nodes
Open

fix(confluent): configure nodes named explicitly without a console method#7714
viniciusferrao wants to merge 2 commits into
xcat2:masterfrom
VersatusHPC:fix/confluent-explicit-nodes

Conversation

@viniciusferrao

Copy link
Copy Markdown
Member

preprocess_request skips any node whose nodehm entry has neither cons nor serialport. That is the right default while scanning the whole table, but it also drops nodes named on the command line, leaving the dispatched node list empty. makeconfluentcfg then falls back to reading every node, so naming one console-less node quietly configures the whole cluster instead of the node that was asked for.

A named node with no nodehm row at all is worse: both the selection here and the second lookup in makeconfluentcfg produce an undefined entry, which reaches confluent as an empty node name.

Apply the skip only to the full table scan, and carry the node name through both lookups when the nodehm row is missing. Nodes without a console method are already handled downstream, where makeconfluentcfg keeps explicitly named entries and donodeent falls back to hardware management credentials.

Verified against confluent 3.15.6 on an AlmaLinux 9.8 management node running xCAT 2.18.2. On the unpatched plugin, makeconfluentcfg on a console-less node configures a different, console-capable node; patched, it configures the node that was named. A node with no nodehm row previously failed with "" is not a valid node name and is now configured under its own name. A full scan still configures only the console-capable node.

Recovered from the unmerged lenovobuild branch (897b224). The original removed the skip outright, which also changes the full-scan path and would sweep every console-less node in the cluster into confluent, so the skip is gated on that path instead.

viniciusferrao and others added 2 commits August 7, 2026 22:32
…thod

preprocess_request skips any node whose nodehm entry has neither cons nor
serialport. That is the right default while scanning the whole table, but it
also drops nodes the administrator named on the command line, leaving the
dispatched node list empty. makeconfluentcfg then falls back to reading every
node, so naming one console-less node quietly configures the whole cluster
instead of the node that was asked for.

A named node with no nodehm row at all is worse: both the selection here and
the second lookup in makeconfluentcfg produce an undefined entry, which reaches
confluent as an empty node name.

Apply the skip only to the full table scan, and carry the node name through
both lookups when the nodehm row is missing. Nodes without a console method are
already handled downstream, where makeconfluentcfg keeps explicitly named
entries and donodeent falls back to hardware management credentials.

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
Exercise the node-selection block from preprocess_request and the lookup
adjustment from makeconfluentcfg directly, both extracted from the shipped
plugin, with a stand-in nodehm table.

Assert that an explicitly named node is configured whether it has no console
attributes or no nodehm row at all, that neither lookup can emit an empty node
name, and that the full table scan still skips console-less nodes so an entire
cluster is not swept into confluent. That last group is what separates this
from simply removing the skip, and it fails if the skip is dropped outright.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant