2
0
mirror of https://github.com/xcat2/confluent.git synced 2026-09-04 20:17:58 +00:00
Commit Graph

6823 Commits

Author SHA1 Message Date
Jarrod Johnson 26c69e6cc0 Merge pull request #289 from Obihoernchen/fix/health-optional-collections
Handle Redfish services that omit optional collections
2026-09-02 10:13:26 -04:00
Jarrod Johnson fb0ecb50f7 Merge pull request #288 from Obihoernchen/fix/parse-fractional-seconds
Read a fractional second as a fraction
2026-09-02 10:12:03 -04:00
Jarrod Johnson 626d9ba15f Merge pull request #287 from Obihoernchen/fix/ipmi-identify-refusal
Say that IPMI cannot read an identify state
2026-09-02 10:10:35 -04:00
Jarrod Johnson 42ac4d064b Merge pull request #286 from Obihoernchen/fix/cli-exit-codes
Set the exit code when a read fails
2026-09-02 10:09:17 -04:00
Jarrod Johnson 514dc32499 Merge pull request #285 from Obihoernchen/fix/crypt-without-stdlib
Run on a Python that has no crypt module
2026-09-02 10:08:14 -04:00
Markus Hilger 26151c506f Read power and boot from a service that has no system
A Redfish service may publish no Systems collection, and power and cooling
equipment does exactly that. sysurl is then None, and get_power and
get_bootdev handed it straight to a request, raising TypeError from inside
the url library.

sysinfo already guarded the same field. Both now ask through _system_url and
get a refusal naming what is missing. DMTF publish three services of this
shape, which is why they sit commented out in inventory-dmtf.yaml.
2026-09-01 23:51:32 +02:00
Markus Hilger 5d5ad821f4 Read health from a service that publishes no PCIe
PCIeDevices and PCIeFunctions are optional, and get_health indexed both
without checking. _get_adp_urls in the same file already spells it
.get('PCIeDevices', []), so these two were the outliers.

Power and cooling equipment has no PCIe at all. The KeyError escaped the
health read and reached the user as "Unexpected Error" with a traceback
behind it. Reproduces offline against DMTF's public-rackmount1 mockup.
2026-09-01 23:51:32 +02:00
Markus Hilger 5d7fadf615 Set the exit code when a read fails
nodesensors and nodeconfig printed an error and exited 0, so
`nodesensors n1 && next-step` ran next-step after the read it guarded had
already failed.

nodesensors had three of these: the per-node branch never set the exit code,
the top-level branch beside it read `exitcode |= exitcode`, and a normal
return from main() fell off the end of the file. nodeconfig accumulates with
|= all through its read path except the last line, which assigned, so a
failed bmc configuration read was discarded by the system read after it.

The fixed branches now match how nodehealth and client.py spell the same
thing.
2026-09-01 23:51:10 +02:00
Markus Hilger 2e7ce63b51 Read a fractional second as a fraction
parse_time read the digits after the decimal point as whole milliseconds, so
'.5' became 5ms instead of 500ms. Only a three digit fraction came out right,
and a BMC may write either.

'.5', '.50' and '.500' are all 500ms now, '.125' is 125ms. Every other format
parse_time accepts is untouched.
2026-09-01 23:51:00 +02:00
Markus Hilger 492bfeb974 Say that IPMI cannot read an identify state
nodeidentify against an IPMI BMC printed the node name, nothing after it, and
exited 0. A script checking the exit code carries on with an empty value,
which is worse than being turned down.

IPMI can set the identify light and has no command to read it back, so aiohmi
has no get_identify. The empty state was a way of not saying so.

The comment above that branch called identify "read-only", which is the
opposite of the truth.
2026-09-01 23:51:00 +02:00
Jarrod Johnson 31d1d38ac6 Make sure that ls reads the actual size without being confsued by symbolic links 2026-09-01 16:35:56 -04:00
Jarrod Johnson 6d0e364f0e Fixes for media based image boot 2026-09-01 16:23:52 -04:00
Jarrod Johnson c8bc59472f Fix missing close quote 2026-09-01 10:41:50 -04:00
Jarrod Johnson 0b4123fcc3 Add keystrokes for nodeconsole -tv
This allows ctrl-alt and windows key.
2026-09-01 10:33:57 -04:00
Jarrod Johnson 6186d940b6 Move hostname setting to pre.sh in suse16
hostname command is not in the initramfs
2026-09-01 10:00:27 -04:00
Markus Hilger 0d2b23de2f Run on a Python that has no crypt module
crypt left the standard library in 3.13 and both imports of it here are
unconditional, so the server does not start on a 3.13 distro that ships no
crypt shim of its own.

legacycrypt and crypt_r both reach the same libcrypt call, tried in that
order because legacycrypt is pure ctypes while crypt_r wants a compiler.
Both were checked byte for byte against the stdlib for the $6$ salts used
here, and a hash written under the stdlib verifies under either, so stored
crypted.* attributes keep working.

Recommends rather than Requires, and only above 3.12: el9 and el10 still
ship the stdlib module, and some 3.13 distros package no candidate at all,
where a hard dependency would make the rpm uninstallable.
2026-09-01 06:03:16 +02:00
Jarrod Johnson 7ba1798848 Fix SUSE16 identity image deployment
First, give an additional grace period in case identity image is slow to appear compared to other disks.

Also, set hostname according to nodename.
2026-08-31 12:05:45 -04:00
Jarrod Johnson 3fdda3adac Merge remote-tracking branch 'lenovo/master' 2026-08-28 15:58:55 -04:00
Jarrod Johnson aec404e134 Normalize scan to async
Also, for lots of pending nodes, yield between nodes for responsiveness
2026-08-28 15:51:13 -04:00
Jarrod Johnson 306fa83fd7 Merge remote-tracking branch 'xcat/master' 2026-08-28 15:50:27 -04:00
Jarrod Johnson e9649dcb0a Normalize async def scan, also break up pending_nodes by yielding 2026-08-28 15:49:51 -04:00
Jarrod Johnson 054ca63600 Fix macmap offload startup concurrency
State of offloader was never checked after acquiring the lock.

Fix by checking with the lock held.

Also, neaten up by putting all the offload startup inside the function to start it up.
2026-08-28 13:23:16 -04:00
Jarrod Johnson 66488f3041 Merge pull request #284 from robertcaliman/fix-linux-7mm-regex
Update string for 7mm to the correct form and change 7mm identification
2026-08-28 09:51:15 -04:00
Robert Caliman 1e57488f0d Add changes for 7mm disk without a RAID volume 2026-08-28 14:30:32 +03:00
Robert Caliman 84cf69ac4f Update string for 7mm to the correct form 2026-08-28 12:44:55 +03:00
Jarrod Johnson 48280ee5d3 Enhance VROC member criteria
Try to propogate form factor of member disk to array.

Also, even if cannot detect m.2, assume a two-member vroc array of nvme is m.2.  Not guaranteed, but most likely.  This is to deal with lack of DMI information indicating the physical form factor.
2026-08-27 16:55:18 -04:00
Jarrod Johnson 2cf9162d6c Relocate onboot.d scripts in media based image 2026-08-27 16:08:59 -04:00
Jarrod Johnson 724818111c Merge pull request #283 from robertcaliman/rcaliman/add-more-m2-models
Add some more RAID models to the PRIORITY_MODELS
2026-08-27 15:49:45 -04:00
Jarrod Johnson b6d10e5e9b Continue to tweak the Media based image boot of a confluent diskless 2026-08-27 15:47:53 -04:00
Robert Caliman 252b644f34 Remove the 16i models 2026-08-27 22:45:08 +03:00
Jarrod Johnson 34e7a10cfc Refer to self instead of non-existant disk 2026-08-27 15:43:17 -04:00
Jarrod Johnson 116d4aeb04 Make m.2 form factor drives a high priority as a matter of course for OS install 2026-08-27 15:41:49 -04:00
Robert Caliman 9c51577652 Add some more RAID models to the PRIORITY_MODELS 2026-08-27 22:39:56 +03:00
Jarrod Johnson 0c89f041e1 Merge pull request #282 from robertcaliman/rcaliman/m2-esxi-fix
Change the getinstalldisk logic to account for M2 standalone disks
2026-08-27 15:30:50 -04:00
Robert Caliman bdfd1ddfe8 Change the getinstalldisk logic to account for M2 standalone disks 2026-08-27 21:27:46 +03:00
Jarrod Johnson 687b8e47e4 Rework ownership/permission staging and cleanup
Directories are left as 'boring' confluent directories to enable staging.

Then the ownership/permssions on directories are fixed up.

Then after completion, make sure ownership is back to boring before asking rmtree.
2026-08-27 11:46:33 -04:00
Jarrod Johnson 1da744fcab Draft media based images
Prepare for media based diskless images
2026-08-26 16:13:34 -04:00
Jarrod Johnson bbad91369f Tighten permissions on netplan files 2026-08-26 15:36:27 -04:00
Jarrod Johnson 6d1733817e Fix empty kernelargs handling 2026-08-25 15:04:47 -04:00
Jarrod Johnson fff6875d33 Limit host based key types used by ansible
By default, ansible prefers to try host based authentication, which is good.

But when it doesn't work, it tries every key attempt, which is normally fine.

However, SSH counts key attempts the same as passwords, so hardening that restirct password attempts are fouled before it can even get to try a public key.  Thus let host based only consume one attempt.
2026-08-25 10:59:29 -04:00
Jarrod Johnson 8a57216803 Block user from naming group/node the same thing
If a node and a group have the same name, things can get very confusing and hard to deal with.
2026-08-25 10:47:39 -04:00
Jarrod Johnson 7a0a2d0e48 Create a copy instead of rename of /etc/hosts
By copying, we leave the /etc/hosts with original ownership/permissions/etc.

Otherwise we create a new /etc/hosts, which is subject to new permissions and such.
2026-08-25 10:35:35 -04:00
Jarrod Johnson 3496f90fb7 Make sure a child can't except out of a forked child
If an exception were incurred in child in fork, the code could break out.
2026-08-25 09:05:04 -04:00
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