2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-08-27 09:06:39 +00:00
Commit Graph

27516 Commits

Author SHA1 Message Date
Daniel Hilst 5ca148889c Merge pull request #7749 from VersatusHPC/fix/nodestat-usefping-option
fix(nodestat): accept the fping option that the usage message gives
2026-08-24 12:42:21 -03:00
Daniel Hilst bcf6f9059a Merge pull request #7750 from VersatusHPC/fix/dbobjutils-exact-only-if-values
fix(dbobjutils): match exact only-if values
2026-08-24 12:39:34 -03:00
Daniel Hilst 14feebce2f Merge pull request #7753 from VersatusHPC/fix/genesis-lzma-via-xz
fix(mknb): compress the genesis image with xz when lzma is absent
2026-08-24 12:36:26 -03:00
Daniel Hilst ca5d1cfa86 Merge pull request #7751 from VersatusHPC/refactor/dbobjutils-remove-legacy-group-matcher
refactor(dbobjutils): remove redundant group matcher
2026-08-24 12:29:02 -03:00
Daniel Hilst 8c3aaa4471 Merge pull request #7727 from VersatusHPC/refactor/kea-shared-service-mapping
refactor(kea): reuse shared service mapping
2026-08-24 12:27:38 -03:00
Daniel Hilst a7f4c770b5 Merge pull request #7631 from VersatusHPC/refactor/ipmi-rmcp-response-identity
refactor(ipmi): centralize RMCP response identity check
2026-08-24 12:27:17 -03:00
Daniel Hilst 7b70d8085f Merge pull request #7752 from VersatusHPC/refactor/networkutils-netmask-helpers
refactor(network): reuse shared netmask helpers
2026-08-24 12:19:07 -03:00
Vinícius Ferrão eaa1e94a32 test(nodestat): pin the fping option and the usemon abbreviations
Add a unit test for the option that selects fping instead of nmap.

The test takes the specification out of the plugin source and gives it to
Getopt::Long with the settings that the daemon uses, so it drives the
specification that the plugin ships.

It shows that -f, --usefping and the older --useping each select fping, that
--use and --us still select usemon and do not select fping, that the bundles
-mf and -fm select both options, and that both places parse through the one
specification.
2026-08-23 22:38:41 -03:00
Vinícius Ferrão 73b145d7ff test(mknb): pin which program compresses the genesis image
Add a unit test for the routine that chooses the compression program. The
test lifts the routine out of the plugin source, because the plugin needs a
management node to load.

The test shows that lzma is used when it is there, that xz stands in when it
is not, and that xz is asked for the lzma container rather than its own. It
also shows that the caller takes the command from the routine, that the file
keeps its name and its suffix, and that the gzip fallback and the rename into
place both remain.
2026-08-23 22:38:41 -03:00
Vinícius Ferrão d5f882291d fix(nodestat): accept the fping option that the usage message gives
The manual page and the usage message of nodestat give the option
-f|--usefping. The preprocessor of the request knows no option f, and the
handler of the request spells the long name useping, so --usefping does
nothing. An administrator who follows the manual page gets the nmap path, and
gets no message that says why.

The two places also read different specifications, so an option that one
place accepts can reach the other place and take a different meaning. Put the
specification in one routine, and let both places read that routine.

Give the name usefping to the option, and keep useping as a second name. That
spelling has worked since 2.14.2, so a site can have it in a script.

The long name of the fping option starts with the same letters as usemon, so
--use and --us become names that Getopt::Long cannot decide. Those two
abbreviations select usemon today. Keep them with usemon, or an administrator
who monitors with them loses the monitoring and gets no message.

The change has two other effects. The abbreviations --use and --us no longer
select fping as well, which they did only because the two places read
different specifications. The bundles -mf and -fm now select both options,
which they did not do before.

Recovered from the lenovobuild branch.
2026-08-23 22:38:41 -03:00
Vinícius Ferrão c390570e95 fix(mknb): compress the genesis image with xz when lzma is absent
The genesis image goes into a file whose name ends with .lzma. The plugin
writes that file only when /usr/bin/lzma is there, and it falls back to gzip
when it is not.

Red Hat ships no lzma binary. On AlmaLinux 9 and on AlmaLinux 10 that test
fails, the plugin falls back to gzip, and it gives no message that says why.
The image is larger on each run of mknb. Debian and Ubuntu ship lzma as a
second name for xz, so those systems still get the smaller image.

Ask xz for the same container when lzma is absent. The command
"xz --format=lzma" writes the same bytes as "lzma", so the file keeps its
name, its container and its size. Keep the gzip fallback for a system that
has neither program.

Recovered from the lenovobuild branch, which asked xz for the xz container.
That container is not the lzma container, and the name of the file says lzma.
2026-08-23 22:38:41 -03:00
Vinícius Ferrão d3d0f86abf test(network): cover shared netmask behavior 2026-08-23 13:51:39 -03:00
Vinícius Ferrão b6d9bc6643 refactor(network): reuse shared netmask helpers 2026-08-23 13:50:00 -03:00
Vinícius Ferrão 7afa152f8d test(dhcp): prepare shared network helper stubs 2026-08-23 13:49:15 -03:00
Vinícius Ferrão 1e8917ebe0 test(dbobjutils): guard only-if routing invariants 2026-08-23 13:13:16 -03:00
Vinícius Ferrão c42f42f194 refactor(dbobjutils): remove redundant group matcher 2026-08-23 13:13:16 -03:00
Vinícius Ferrão 21755f8f93 test(dbobjutils): cover exact only-if value matching 2026-08-23 11:38:55 -03:00
Vinícius Ferrão 3aa826df92 fix(dbobjutils): match exact only-if values 2026-08-23 11:38:55 -03:00
Vinícius Ferrão 5d39fc30d4 test(utils): cover comma-list membership 2026-08-23 11:08:59 -03:00
Vinícius Ferrão 6e43843712 refactor(utils): centralize comma-list membership 2026-08-23 11:08:24 -03:00
Daniel Hilst 7733d16f8d Merge pull request #7721 from VersatusHPC/feature/genesis-openembedded
feat(genesis): build images with OpenEmbedded
2026-08-21 20:36:20 -03:00
Vinícius Ferrão 9da2d71b90 test(genesis): cover legacy destiny retries 2026-08-21 20:11:31 -03:00
Vinícius Ferrão b22676a099 fix(genesis): retry legacy destiny only on failures 2026-08-21 20:11:30 -03:00
Daniel Hilst 0f4b8c9794 Merge pull request #7744 from VersatusHPC/fix/getinstdisk-selection-order
fix(getinstdisk): decide the install disk by driver group, and scan Xen disks
2026-08-21 12:54:24 -03:00
Daniel Hilst c70d87af5d Merge pull request #7742 from VersatusHPC/fix/getinstdisk-single-script
fix(getinstdisk): serve every installer from one script
2026-08-21 10:57:10 -03:00
Vinícius Ferrão c4938a2d28 Merge pull request #7740 from VersatusHPC/fix/getinstdisk-modern-devices
fix(getinstdisk): rank direct attached disks ahead of RAID volumes
2026-08-21 10:28:44 -03:00
Vinícius Ferrão 5424af302c style(genesis): trim source comments 2026-08-21 03:26:13 -03:00
Vinícius Ferrão c6c11d70a1 test(genesis): cover the action boot gate 2026-08-21 02:13:19 -03:00
Vinícius Ferrão 395e85ed1c fix(genesis): gate the action service 2026-08-21 02:13:19 -03:00
Vinícius Ferrão 4c50b4da50 test(genesis): cover disappearing devices 2026-08-21 02:12:56 -03:00
Vinícius Ferrão 07bc26f15d fix(genesis): tolerate incomplete inventory 2026-08-21 02:12:56 -03:00
Vinícius Ferrão 53c8538e4a test(genesis): cover logging failures 2026-08-21 02:12:22 -03:00
Vinícius Ferrão c20ce284eb fix(genesis): keep logging non-fatal 2026-08-21 02:12:22 -03:00
Vinícius Ferrão a47c7f8e7c test(genesis): cover long kernel command lines 2026-08-21 02:10:23 -03:00
Vinícius Ferrão d28e72a92c fix(genesis): read the full kernel command line 2026-08-21 02:10:22 -03:00
Vinícius Ferrão 9fc3d52b81 test(getinstdisk): follow the log lines of the new selection
The install disk autotests read the log of a provisioned node. The
choice files no longer carry the identifier in their name, and the
selection message names the driver group and the identifier instead of
the previous wording, so read the new lines. The reinstall case reads
the record of its disk without naming a group, as it did before.
2026-08-21 01:13:50 -03:00
Vinícius Ferrão 492f9171a2 test(getinstdisk): cover the driver group against the identifier
Cover a RAID volume that reports a WWN against a direct attached disk
that reports none, in both scan orders, which the previous readback
decided by identifier. Keep the identifier rules of one group under
test as well: the disk that reports a WWN wins, the lower WWN wins
between two, and a path wins over no identifier at all.
2026-08-21 01:13:16 -03:00
Vinícius Ferrão 7e8994e1b9 test(getinstdisk): pin the single script layout
Assert that the RHEL 10 copy is gone, that the RHEL 10 installer
includes the common script, and that the common script keeps the VROC
fallback, the Xen fallback and the guarded failure log.
2026-08-21 01:13:15 -03:00
Vinícius Ferrão 27aaa960fa fix(getinstdisk): choose the driver group before the identifier
The scan wrote each disk into a file named after the identifier it
reported, wwn, path or neither, and read back the groups of one such
file only. Two disks that reported different identifiers therefore
never competed on their driver group: a disk without a WWN was dropped
as soon as another disk reported one, and when the last disk scanned
reported a WWN the readback opened the WWN files alone. A direct
attached boot disk that reports no WWN thus lost to a RAID volume that
reports one, which is the case the driver groups exist to decide.

Write every disk into the file of its driver group and keep the
identifier as the sort key inside that group, ranked so that a WWN
sorts ahead of a path and a path ahead of no identifier. The driver
group now decides first for every disk, the identifier still decides
between disks of one group, and no disk is dropped from the scan.
2026-08-21 01:13:15 -03:00
Vinícius Ferrão 3ca2a9f8aa fix(getinstdisk): serve every installer from one script
The RHEL 10 support added a second copy of the script. The copy carries
the Xen fallback and a failure log that the common script does not, and
the common script carries the Intel RSTe/VROC fallback that the copy
does not. A RHEL 10 node whose OS disk is a VROC volume therefore fell
back to /dev/sda, and every later fix to disk selection had to be
written twice to reach both.

Fold the Xen fallback and the failure log into the common script and
delete the copy. The RHEL 10 installer includes the common script, as
the other installers already do. The failure log runs only when the
including script defines msgutil_r, because the subiquity path does
not.
2026-08-21 01:13:15 -03:00
Vinícius Ferrão bbd1a7e9d3 test(getinstdisk): cover the Xen disk scan
Cover a guest whose only disk is a Xen disk, which the scan has to
select rather than leave to the fallback, and a guest with two Xen
disks, where the driver group decides. Against the previous filter both
cases fail.
2026-08-21 01:13:15 -03:00
Vinícius Ferrão 046c97ba2a test(getinstdisk): target the common script only
The RHEL 10 copy of the script is about to go away, so stop naming it
here first. The cases keep running against the common script, so the
coverage does not change.
2026-08-21 01:13:15 -03:00
Vinícius Ferrão 5329381354 fix(getinstdisk): let Xen virtual disks reach the disk scan
The device filter accepted sd, hd, vd and nvme names, so the xvd names
that a Xen guest presents never entered the scan. On such a guest the
whole detection ran on an empty list and the script fell through to the
xvda fallback, which takes the first Xen disk without looking at any of
them.

Accept the xvd names in the filter. A Xen disk now goes through the
same classification, kernel search and driver sort as any other disk,
so a guest with more than one disk gets a chosen disk rather than the
first one. The fallback stays for the case where the scan still finds
nothing.

The nvme branch of the filter is anchored at the same time, so a name
only matches when it starts with nvme.
2026-08-21 01:13:15 -03:00
Vinícius Ferrão 549034d758 test(getinstdisk): follow the SAS host adapters to the third group
The install disk autotest reads the log of a node whose disks sit
behind a SAS host adapter, and that driver group moved from the second
choice to the third. Read the third group instead.
2026-08-21 01:13:14 -03:00
Vinícius Ferrão b09d38220b ci(genesis): enable BitBake user namespaces 2026-08-21 00:27:42 -03:00
Vinícius Ferrão 71ffe44443 ci(genesis): scope temporary build paths 2026-08-21 00:04:10 -03:00
Vinícius Ferrão f87b6be787 docs(genesis): document signed extension bundles 2026-08-21 00:00:14 -03:00
Vinícius Ferrão 59219181c9 test(genesis): use Yocto extension filenames 2026-08-20 23:23:19 -03:00
Vinícius Ferrão 6196983a55 fix(genesis): export built system extensions 2026-08-20 23:23:02 -03:00
Vinícius Ferrão baa68945cc test(genesis): use Yocto release filenames 2026-08-20 23:21:39 -03:00