2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-08-25 08:06:46 +00:00

6780 Commits

Author SHA1 Message Date
Jarrod Johnson aa9b7ea4ca Yield cooperatively during nodelist change 2026-08-24 16:52:13 -04:00
Jarrod Johnson 9d6c6495bf Fix SLES 16 install when no serial console
autoinstall is run without a tty, so detect that and use tty1 instead.

Also, clean up agama config by avoiding too many duplicated network entries.
2026-08-24 11:31:31 -04:00
Jarrod Johnson 2308ee57fe Try to add altname for connection name. 2026-08-21 17:27:36 -04:00
Jarrod Johnson 79d4261303 Make dir2img usage look a little nicer 2026-08-21 15:15:33 -04:00
Jarrod Johnson f1961400ec Correct type of maxnodes in some scenarios 2026-08-21 14:57:24 -04:00
Jarrod Johnson f5d7c271b5 Fix issue with non-systemd startup 2026-08-21 07:15:52 -04:00
Jarrod Johnson 8a2d5016f3 Rework the systemd notification.
Confluent didn't act 'healthy' toward systemd delaying restart needlessly.

Worse, in a collective it could never show as started if the quorum didn't come back.

Pull the startup to before collective init, and indicate watchdog liveness during that time.
2026-08-20 12:40:55 -04:00
Jarrod Johnson 138b776c9c Recognize SATA m.2 drives
SATA drives do not directly have a busaddr.

However, at some point the PCI bus comes up in the udev hierarchy as a KERNELS value.

If that matches a detected M.2 slot, then accept the storage as M.2.
2026-08-20 12:03:09 -04:00
Jarrod Johnson 23445b3a5e Rework vtbuffer management
Only start vtbufferd on first use.

Do not restart more frequently than once every 30 seconds.
2026-08-20 08:33:35 -04:00
Jarrod Johnson 9fe79ce08c Merge pull request #280 from Obihoernchen/fixadvanced
Fix advanced XCC BMC settings
2026-08-20 07:34:57 -04:00
Markus Hilger ef9afa7d72 Fix advanced settings
Disabled this by accident when doing the async fixes.
Upstream pyghmi passess this as well.
2026-08-20 00:41:34 +02:00
Jarrod Johnson 8b67b20e8a Remove stray print statement 2026-08-19 14:11:02 -04:00
Jarrod Johnson 58d36a2b14 When closing connection, don't raise issues about connection being closed in unexpected ways. 2026-08-19 14:01:40 -04:00
Jarrod Johnson cf14bda3b7 Wrap up SOL exception more neatly 2026-08-19 13:46:44 -04:00
Jarrod Johnson 3463bd24c1 Avoid spawning redundant macmap workers 2026-08-19 13:43:29 -04:00
Jarrod Johnson 42fd63763e Defer more asyncio Lock creation
Must be created after loop is running for python 3.9.
2026-08-19 13:21:32 -04:00
Jarrod Johnson 2bd931658c Defer creating locks until loop is running
In python 3.9, this pattern was causing issues.
2026-08-19 13:13:20 -04:00
Jarrod Johnson a9da8ab3d3 Fix httpapi getaddrinfo
Another area that failed to get the positional arguments converted to keyword.
2026-08-19 11:24:41 -04:00
Jarrod Johnson 193cced1a6 Remove disused socket imports 2026-08-19 11:21:42 -04:00
Jarrod Johnson a0d99a15ce Fix use of positional arguments in getadrrinfo
The new getaddrinfo needs this as a keyvalue pair.
2026-08-19 11:05:41 -04:00
Jarrod Johnson ec64a6d46c Change to asyncio based name lookup in various places 2026-08-19 10:28:55 -04:00
Jarrod Johnson 31647a52e1 Remove disused RLock and simplify code. Fix name lookup stalls on connection. 2026-08-19 09:56:28 -04:00
Jarrod Johnson 18e8aecf96 Merge pull request #275 from Obihoernchen/feature/eventlog-sources
Add nodeeventlog source filtering for redfish
2026-08-19 09:25:55 -04:00
Markus Hilger 57b3fae0ed Return the status nodeeventlog worked out
Every error branch set exitcode and the script then ran off the end, so
a node that could not be read, or a log source that matched nothing,
still exited 0.
2026-08-19 15:10:55 +02:00
Markus Hilger c13a434246 Say when a named log source answered with nothing
An ipmi node named no source at all, so -s dropped every event, and a
log with no entries can never be named by one.
2026-08-19 15:10:55 +02:00
Markus Hilger 9cdcbe4046 Look elsewhere when the manager publishes no log services
The early return sat before the fallback, so the one layout it was
written for was the one it could not reach.
2026-08-19 15:10:55 +02:00
Markus Hilger 43d0706d6a Drop trailing whitespace from the synopsis line 2026-08-19 15:10:55 +02:00
Markus Hilger 5caf0451fd Let nodeeventlog show one log rather than all of them
Every entry already says which log it came from, so -s narrows the output to
the ones asked for and "-s list" names what a node offers.  Some of what a
platform keeps is noise: an AMI MegaRAC's event log is a list of redfish
sessions being opened and closed, while its useful records are elsewhere.

A selection cannot be cleared, since the platforms offer no such thing and
clearing more than was asked for is not something to do quietly.
2026-08-19 15:10:55 +02:00
Markus Hilger caa857ead0 Gather every event log a platform keeps, wherever it keeps it
A read only ever looked at the manager's log services, and fell back to the
system's when the manager published none.  A platform that keeps an event log
in both places had the second one invisible: an AMI MegaRAC keeps power unit
and thermal events in a chassis log that nothing read, 103 records that no
command could reach.

Clearing deliberately does not follow.  It stays where it was, so a log that
only a read reaches is never destroyed by one, and clearing a platform that
keeps its only event log on the system still works.

The name test now ignores spacing, since a build that calls its post code log
"BIOS POST Code Log" was read as an event log and merged 2719 post codes in.
2026-08-19 15:10:55 +02:00
Jarrod Johnson 3fa1236d34 Merge pull request #278 from Obihoernchen/fix/configurable-endpoints
configurable sockapi path and ipmi port
2026-08-19 08:33:06 -04:00
Jarrod Johnson c87bdc5a40 Merge pull request #274 from Obihoernchen/openbmc-support
Various fixes and features for AMI MegaRAC and OpenBMC BMCs
2026-08-19 08:22:26 -04:00
Markus Hilger 9e811dd81c Leave it to OpenBMC to say which of its logs are not events
Reading an event log skipped every log service whose id or name said journal,
dump, post code, host logger or crash, on every implementation.  Those names
are bmcweb's: the AMI and Lenovo bmcs call theirs SEL, EventLog, AuditLog and
PlatformLog.  bmcweb does need the distinction, keeping its event log under the
system while a clear would destroy its dumps, so it gets a handler that names
the words and generic names none, reading whatever a platform publishes.
2026-08-18 22:58:48 +02:00
Markus Hilger 811d48ed42 Ask only MegaRAC for the parameters part it insists on
Generic added an UpdateParameters part to every multipart firmware push,
because the specification has one carried.  Only the AMI firmware was seen to
insist on it, so name it in that handler and let generic send what the caller
passed.
2026-08-18 22:58:48 +02:00
Jarrod Johnson 985aff2c1a Allow ipv4 address extraction on web open with fe80::
If using fe80::, ask for more viable global addresses automatically.
2026-08-18 16:44:47 -04:00
Markus Hilger eaa1a8bfc7 Let a console work through a forwarded ipmi port
A bmc behind a forward answers Activate Payload with the port it listens on
itself, and the advertised-port check refused that, so a console failed where
command traffic worked. The advertised port is never sent to, so the check now
applies only on the default port. A bmc on another port advertising a third one
is no longer refused outright, which nothing here could have served anyway.
2026-08-16 21:37:50 +02:00
Markus Hilger fd92209d4d Read a port off the manager address over ipmi too
The plugin connected to 623 whatever the address said, with a TODO in place of
the parsing. It now reads one as the redfish plugin does, minus the brackets,
which getaddrinfo rejects.

IpmiConsole keys its endpoint mapping on host and port so several bmcs behind
one address stay distinct, and unregisters only an entry it actually claimed.
2026-08-16 21:37:50 +02:00
Markus Hilger 5b132438f5 Let the api socket path be set rather than fixed
_unixdomainhandler hardcoded /var/run/confluent/api.sock in four places and
derived its directory from a fifth. It is now threaded through SockApi like
the other bind settings, defaulting to the same path. That lets a service run
on a temp socket as an ordinary user, which is what a test needs.
2026-08-16 21:37:50 +02:00
Jarrod Johnson ebab4af396 Merge pull request #277 from Obihoernchen/fix/ipmi-completion-code-checks
Act on the ipmi completion codes again
2026-08-15 10:28:20 -04:00
Markus Hilger 9228ef53de Ask for search access on a download directory too
A directory the caller can write but not enter is one they could not
have created the file in, and write access alone said they could.
2026-08-15 13:46:30 +02:00
Markus Hilger c5f831e589 Start the bmc reset grace when the bmc actually goes
The deadline was set when monitoring began, so a flash that kept
answering for longer than the grace period had already spent it by the
time the reboot it covers arrived, and reported a working update as a
failure.
2026-08-15 13:46:18 +02:00
Markus Hilger 3ace6af075 Reserve the sensor records of the lun they are read from
A device holds its sensor records per lun and scopes the reservation the
same way, so a token taken on lun 0 can be refused for lun 1 with 0xc5.
The retry then took the same wrong token again without end.
2026-08-15 13:45:49 +02:00
Markus Hilger 274b1b310d Record why identify writes the system and not the chassis
An SD665-N V3 refuses every IndicatorLED value on its chassis and takes
all of them on the system, so making the write follow the read breaks it.
2026-08-15 13:44:49 +02:00
Markus Hilger c9804368f2 Only read a user slot as empty when the bmc says it is
Any completion code counted as an absent slot, so a bmc that was busy
or still starting up quietly shortened the user list.
2026-08-15 13:44:49 +02:00
Markus Hilger 803c4f2ceb Skip a shared enclosure when reading the leds
get_identify already ignores a chassis several systems share, so that
one node does not report the enclosure's indicator as its own.
2026-08-15 13:44:49 +02:00
Markus Hilger be1304e560 Name the firmware categories beyond core, adapters and disks
Firmware for a supply or a fan matched no fragment and so was called
core, and nothing could ever answer for misc.

Only the collections that mean one thing are matched by url.  A Storage
resource is the subsystem, so its firmware is the controller rather than
a drive, and a Processor is a cpu as readily as an accelerator, so that
one is decided by asking the processor what it is.
2026-08-15 13:44:37 +02:00
Markus Hilger 8c884e2ece Keep unrelated firmware in core rather than nowhere
An entry naming no RelatedItem was dropped from every category as soon
as any other entry named one, so core lost the bmc and uefi versions.
2026-08-15 12:58:47 +02:00
Markus Hilger e69f82a6a2 Do not let a failed lookup pass for a failed delete
The check for whether the account went sat outside the try, so an error
reading it escaped instead of falling back to blanking the account.
2026-08-15 12:58:32 +02:00
Markus Hilger 24e8cd7e00 Check for a deleted account without the cache
The delete that failed left the account collection cached as it was, so
asking whether the account is gone could only ever answer no.
2026-08-15 12:58:16 +02:00
Markus Hilger 307a1020a2 Set one bmc contact rather than one per letter
A contact name arrives from the client as a string, and handing it to
set_location_information made a Contacts entry of every character.
2026-08-15 12:57:52 +02:00
Markus Hilger 78048d01a1 Answer a stop request while waiting for quorum
A member of a collective that cannot reach quorum stalls in the startup loop
until quorum returns, and there was nothing in that loop that noticed a
shutdown.  That was survivable while SIGTERM raised SystemExit out of the
signal handler, since that escaped the loop from wherever it happened to be.
Having the event loop deliver the signal instead leaves the stop event set with
nobody reading it until quorum is reached, so stopping the service waits out
the systemd timeout and ends in a kill.

Check the event in the loop condition, and wait on it rather than sleeping
through it, so the answer comes in milliseconds rather than whenever quorum
returns.  A service stopped at this point has served nothing yet, so it goes
straight to the same configuration flush the normal exit does.
2026-08-15 12:44:35 +02:00