2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-10-21 15:18:19 +00:00
Commit Graph

28718 Commits

Author SHA1 Message Date
Vinícius Ferrão 2d751ac847 test(el10): exercise media and RPM package policy 2026-10-13 11:38:09 -03:00
Vinícius Ferrão 14d0ac27da test(genimage): check driver selection after driver updates 2026-10-13 11:38:09 -03:00
Vinícius Ferrão a69404e749 test(network): execute rendered install postscripts 2026-10-13 11:37:35 -03:00
Vinícius Ferrão 7fd8c3681b test(nfs): exercise statelite installer boot parameters 2026-10-13 11:37:35 -03:00
Daniel Hilst be9c063981 Merge pull request #7913 from VersatusHPC/test/r26-ubuntu-image-behavior
test(ubuntu): exercise media imports and genimage behavior
2026-10-13 11:21:29 -03:00
Daniel Hilst ba6d3c15a9 Merge pull request #7905 from VersatusHPC/test/r26-ddns-policy-behavior
test(ddns): verify key-file behavior instead of source layout
2026-10-13 10:58:11 -03:00
Daniel Hilst d1f63dfc25 Merge pull request #7925 from VersatusHPC/test/r26-genesis-behavior
test(genesis): exercise startup and OpenEmbedded build contracts
2026-10-13 10:16:23 -03:00
Daniel Hilst abf0f2228f Merge pull request #7935 from VersatusHPC/refactor/r26-package-lifecycle
refactor(packaging): share package lifecycle helpers
2026-10-13 10:00:14 -03:00
Vinícius Ferrão 105069634d docs(test): describe Genesis test boundaries 2026-10-12 15:56:25 -03:00
Vinícius Ferrão 54ce837c6f test(genesis): evaluate OpenEmbedded build contracts 2026-10-12 15:56:25 -03:00
Vinícius Ferrão 5408e25a54 test(genesis): run secondary DHCP cases through startup 2026-10-12 15:56:25 -03:00
Vinícius Ferrão 6a0629571c test(ddns): verify key-file behavior instead of source layout
Remove source-pattern and helper-call counts. Check key-file creation and
replacement through the real DDNS code, with file access redirected to a
temporary fixture. Keep the signing and named configuration checks.
2026-10-12 15:07:57 -03:00
Vinícius Ferrão 4a202f1b52 test(genesis): exercise InfiniBand startup through doxcat 2026-10-12 15:07:00 -03:00
Vinícius Ferrão b2a73685fb docs(test): document Ubuntu image fixture boundaries
Describe the native test prerequisites, external command doubles and the image-building behavior these fixtures do not qualify.
2026-10-12 13:58:45 -03:00
Vinícius Ferrão 320a1a1299 test(ubuntu): inspect resolver files in generated initrds
Run the unchanged initrd builder with fixture binaries and inspect both generated archives. Replace source extraction with checks for selected libraries and their contents.
2026-10-12 13:58:45 -03:00
Vinícius Ferrão a4e14299ee test(ubuntu): exercise genimage mirror selection
Read site settings from an isolated database and inspect the sources.list written into the image. Stop at an injected package-metadata failure without downloading packages.
2026-10-12 13:58:45 -03:00
Vinícius Ferrão 5013f85774 test(ubuntu): check debootstrap architecture arguments
Run genimage and inspect the arguments passed to debootstrap instead of evaluating an extracted assignment. Keep the existing ppc64le pass-through explicit.
2026-10-12 13:58:45 -03:00
Vinícius Ferrão 114efc35e1 test(ubuntu): exercise live-media imports and warnings
Replace source-text assertions with real media imports in an isolated filesystem and database. Run the native fixture before the package build in CI.
2026-10-12 13:58:32 -03:00
Daniel Hilst 495bb36db9 Merge pull request #7930 from VersatusHPC/fix/packimage-atomic-archive
fix(packimage): replace the root image archive only after a complete pack
2026-10-12 13:36:30 -03:00
Vinícius Ferrão 90d7813d7d test(packaging): cover upgrades without the postscript payload
Exclude node postscripts through the native RPM and dpkg options. Verify
that upgrade configuration, captured output and cleanup still complete.

Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-12 12:35:35 -03:00
Vinícius Ferrão ca9a5301df fix(packaging): embed upgrade functions in package scripts
Generate self-contained RPM and Debian upgrade scripts from the shared
source. Package transactions no longer load functions from the node-facing
postscript payload. Keep the existing command, logging and failure policies.

Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-12 12:33:26 -03:00
Vinícius Ferrão eb2df9cb70 test(packaging): stage shared shell scriptlet sources
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-12 12:31:56 -03:00
Vinícius Ferrão e7b91df46f docs(packimage): describe how packimage replaces the root image archive
The man page said that packimage overwrites the root image and that nodes
cannot use it while packimage runs. Describe the replacement instead, and
the disk space that it needs.
2026-10-12 12:15:52 -03:00
Vinícius Ferrão 8816ea47f1 test(packimage): cover the replacement of the root image archive
The test packs cpio and tar archives with gzip, xz and pigz, and squashfs
images, on the Red Hat path. A wrapper around the compressor, mksquashfs,
cpio or find records the file under the final name while the pack runs,
and then runs the real tool or fails.

It checks that nodes get the previous archive during the pack, that a
pack whose compressor, cpio or file listing fails keeps the previous
archive, metainfo and other formats, that a successful pack replaces
them, and that no temporary file is left. The next pack removes a
temporary file or directory that an interrupted pack on the same host
left, and keeps one that another host is writing.

For a StateLite tree, it checks that a pack that fails while listing the
files, compressing them or creating the temporary directory restores the
files that packimage switched, and that a retry keeps them. When a file
cannot be moved back, the original and the previous archive must stay,
and the next pack must refuse to run.

A pack must wait while another host holds .packimage-publish. When a
pack that did not finish left the lock, the next pack must fail, name the
holder, and keep the previous archive and the lock. With --tracker,
ctorrent must build the metainfo from the new archive under its final
name before the archive is replaced. A ctorrent failure must keep the
previous archive and metainfo, and so must a previous metainfo that
cannot be removed.
2026-10-12 12:15:52 -03:00
Vinícius Ferrão 49ffae9862 fix(packimage): replace the root image archive only after a complete pack
packimage deleted every rootimg.* file before it packed, and wrote the new
cpio or tar archive under its final name with mode 0600. Until the pack
finished, a node that booted got HTTP 403 for its image. When the pack
failed, the image was gone or left truncated, and no node could boot until
a later pack succeeded.

Build every archive in a temporary directory inside the image directory,
and rename the archive over the final name only after the pack succeeds,
as the openEuler path already did with a temporary file. With --tracker,
ctorrent builds the metainfo in the same directory, from the new archive
under its final name. The previous metainfo is removed before the archive
is renamed, and the new metainfo is renamed after it, so no failure
leaves a metainfo that describes another archive. The other rootimg.*
files are removed after the rename. The next pack on the same host
removes a temporary directory that an interrupted pack left. Image locks
are per host, so temporary directories of other hosts that share the
directory stay.

A pack now also fails when find cannot list the image or cpio cannot read
a file, as on the openEuler path. Before, only the compressor status
counted, and such a pack published an incomplete archive.

Every failure after packimage switches a StateLite tree to stateless files
now switches it back. That includes a failure to create the temporary
directory or the squashfs staging directory, which File::Temp reports
with die. packimage records each file that it moves and checks each move. When
a file cannot be moved back, the original stays in .statebackup,
packimage reports it, and the next pack refuses to run until the files
are restored. The new archive replaces the previous one only after the
StateLite files are back. Before, a failed pack left the tree switched,
and a retry overwrote the saved StateLite files.

The image lock is per host, and service nodes mount a shared image
directory without NFS locks. So a pack also holds the directory
.packimage-publish while it replaces the archive and removes the other
formats. mkdir is atomic for every host, also on NFS without locks. When
the lock is older than 60 seconds, or stays held for 60 seconds, the pack
fails, names the holder, and keeps the previous archive. packimage does
not take the lock over, because its holder can still be running.

A ctorrent failure now fails the pack, and the previous archive and
metainfo stay. Before, a failed ctorrent left a partial metainfo, and
nodeset pointed nodes at it.
2026-10-12 12:15:51 -03:00
Vinícius Ferrão 7dea5f68b2 ci(test): install squashfs-tools and pigz for the packimage tests
The packimage tests skip their squashfs and pigz cases unless mksquashfs,
unsquashfs and pigz are installed. Install them in the unit test job so
that CI runs those cases.
2026-10-12 12:15:51 -03:00
Daniel Hilst aa05e7026b Merge pull request #7933 from VersatusHPC/refactor/r26-capture-lifecycle
refactor(dhcp): share the packet capture lifecycle
2026-10-12 10:54:00 -03:00
Daniel Hilst 1210e3c831 Merge pull request #7929 from VersatusHPC/refactor/r26-postinstall-bootstrap
refactor(postscripts): share the early postinit disable policy
2026-10-12 10:34:52 -03:00
Daniel Hilst 15db168634 Merge pull request #7928 from VersatusHPC/test/r26-file-io
test(fixtures): reuse file I/O helpers in unit tests
2026-10-12 10:32:31 -03:00
Daniel Hilst 2b1fb5a090 Merge pull request #7927 from VersatusHPC/test/r26-process-helper
test(process): share command execution across unit tests
2026-10-12 10:31:36 -03:00
Daniel Hilst 1786f80541 Merge pull request #7926 from VersatusHPC/test/r26-package-script-behavior
test(packages): exercise go-xcat and postscript behavior
2026-10-12 10:29:13 -03:00
Daniel Hilst eea673f040 Merge pull request #7920 from middelkoopt/tm-bmcsetup-sync
fix(postscripts/bmcsetup): sync with the genesis-scripts copy
2026-10-12 10:28:23 -03:00
Daniel Hilst 4d052c59d3 Merge pull request #7907 from VersatusHPC/test/r26-openbmc-retry-behavior
test(openbmc): exercise retries through the request handler
2026-10-12 10:25:14 -03:00
Daniel Hilst c3742d7623 Merge pull request #7910 from VersatusHPC/test/r26-grub-netboot-behavior
test(grub2): exercise netboot protocol configuration
2026-10-12 10:24:07 -03:00
Daniel Hilst ae9fd7912a Merge pull request #7932 from VersatusHPC/refactor/r26-string-trim
refactor(xcat): reuse whitespace trimming in blade and credential paths
2026-10-12 10:23:11 -03:00
Daniel Hilst 0f445e2596 Merge pull request #7931 from VersatusHPC/refactor/r26-omapi-twin-delete
refactor(dhcp): reuse the hardware-address delete formatter
2026-10-12 10:22:47 -03:00
Daniel Hilst 52cd6b26d1 Merge pull request #7919 from VersatusHPC/fix/blackbox-prov-missing-ptr-state
fix(xcat-test): missing-ptr still finds the node it withdrew
2026-10-12 10:05:56 -03:00
Vinícius Ferrão 88b2df8ec5 docs(test): describe package upgrade logging cases
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:50:49 -03:00
Vinícius Ferrão 41839052cc test(packaging): exercise upgrade logging and failure policy
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:50:49 -03:00
Vinícius Ferrão 13d106f3db refactor(packaging): share upgrade output handling
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:50:49 -03:00
Vinícius Ferrão b75a959915 test(init): exercise packaged release classification
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:49:59 -03:00
Vinícius Ferrão cd90878516 refactor(init): share target detection and pending-state cleanup
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:46:10 -03:00
Vinícius Ferrão 26f261b3e1 test(init): stage the complete compatibility helper bundle
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:41:46 -03:00
Vinícius Ferrão e41710a675 test(packaging): cover saved Apache defaults and config roots
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:41:45 -03:00
Vinícius Ferrão ee6859d903 refactor(packaging): share the Apache configuration migration
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:34:34 -03:00
Vinícius Ferrão f11b740b56 test(packaging): stage shared Lua scriptlet sources
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 11:32:21 -03:00
Daniel Hilst 0742711bc5 Merge pull request #7921 from VersatusHPC/test/r26-package-lifecycle
test(packaging): exercise service and configuration lifecycles
2026-10-11 06:52:35 -03:00
Vinícius Ferrão e7cbf8b460 test(dhcp): cover packet capture output and termination
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 02:07:56 -03:00
Vinícius Ferrão cce001abb8 refactor(dhcp): share the packet capture lifecycle
Signed-off-by: Vinícius Ferrão <2031761+viniciusferrao@users.noreply.github.com>
2026-10-11 01:29:22 -03:00
Vinícius Ferrão 0349bb64d6 test(xcat): cover whitespace in blade and credential identities 2026-10-10 21:23:43 -03:00