2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-08-27 17:16:40 +00:00
Commit Graph

27456 Commits

Author SHA1 Message Date
Vinícius Ferrão cef35ba5e1 test(genesis): cover signed extension bundles 2026-08-20 23:03:53 -03:00
Vinícius Ferrão 50c3b00bac feat(genesis): wire signed extension bundles 2026-08-20 23:03:49 -03:00
Vinícius Ferrão 56040cb4f0 test(genesis): cover release compliance output 2026-08-20 23:00:15 -03:00
Vinícius Ferrão 48569f3192 fix(genesis): produce release compliance metadata 2026-08-20 22:59:24 -03:00
Vinícius Ferrão f23150c241 fix(genesis): resolve KAS paths from the repository 2026-08-20 22:58:05 -03:00
Vinícius Ferrão a903a12463 test(genesis): cover sequential BMC setup 2026-08-20 22:56:07 -03:00
Vinícius Ferrão dc87128f0d fix(genesis): run argument-free actions safely 2026-08-20 22:55:59 -03:00
Vinícius Ferrão 8283363769 feat(genesis): package the BMC setup action 2026-08-20 22:54:52 -03:00
Vinícius Ferrão 43ca1c6363 test(genesis): cover fatal action service policy 2026-08-20 22:52:44 -03:00
Vinícius Ferrão 76057702ad fix(genesis): stop retrying fatal actions 2026-08-20 22:52:16 -03:00
Vinícius Ferrão c0af2535f8 test(genesis): cover network refresh rollback 2026-08-20 22:48:13 -03:00
Vinícius Ferrão 5cea31df7a fix(genesis): restore failed network refreshes 2026-08-20 22:47:32 -03:00
Vinícius Ferrão 63f2326b6e test(genesis): cover BMCs without SOL 2026-08-20 22:43:13 -03:00
Vinícius Ferrão 741afd274d fix(genesis): select the default BMC LAN 2026-08-20 22:43:05 -03:00
Vinícius Ferrão 55767b3c23 fix(genesis): tolerate missing BMC SOL 2026-08-20 22:42:16 -03:00
Vinícius Ferrão 0da0828913 test(genesis): cover narrow console headers 2026-08-20 22:41:53 -03:00
Vinícius Ferrão b719eb8328 fix(genesis): clamp narrow console headers 2026-08-20 22:41:25 -03:00
Vinícius Ferrão 8442dba2bf test(genesis): cover destiny client termination 2026-08-20 22:40:37 -03:00
Vinícius Ferrão 6c534cb888 fix(genesis): stop destiny requests cleanly 2026-08-20 22:39:46 -03:00
Vinícius Ferrão 1a8574397d fix(genesis): preserve destiny client behavior 2026-08-20 22:38:45 -03:00
Vinícius Ferrão 6562a4e9d7 test(genesis): cover export manifest 2026-08-20 22:29:57 -03:00
Vinícius Ferrão 25ad0a2928 fix(genesis): mark exported images 2026-08-20 22:29:57 -03:00
Vinícius Ferrão e4de6a06fc docs(genesis): document OpenEmbedded image 2026-08-20 22:29:57 -03:00
Vinícius Ferrão 1f083299f6 test(genesis): cover image contract 2026-08-20 22:29:57 -03:00
Vinícius Ferrão f1b0a11fb5 build(genesis): assemble release image 2026-08-20 22:29:57 -03:00
Vinícius Ferrão cc5c2192ce test(genesis): cover hardware providers 2026-08-20 22:29:56 -03:00
Vinícius Ferrão 593444b70d feat(genesis): add hardware providers 2026-08-20 22:29:56 -03:00
Vinícius Ferrão f6acf56ef2 test(genesis): cover signed extensions 2026-08-20 22:29:56 -03:00
Vinícius Ferrão 4b3b917409 feat(genesis): add signed extensions 2026-08-20 22:29:56 -03:00
Vinícius Ferrão 71cee46751 test(genesis): cover status console 2026-08-20 22:29:56 -03:00
Vinícius Ferrão 906e75f949 feat(genesis): add status console 2026-08-20 22:29:56 -03:00
Vinícius Ferrão e1c5d1565c test(genesis): cover provisioning runtime 2026-08-20 22:29:56 -03:00
Vinícius Ferrão b632a6a94f feat(genesis): add provisioning runtime 2026-08-20 22:29:55 -03:00
Vinícius Ferrão 260a3a7079 build(genesis): add OpenEmbedded platform layer 2026-08-20 22:29:55 -03:00
Vinícius Ferrão a34576a3e6 Merge pull request #7738 from VersatusHPC/fix/genesis-service-node-certificates
fix(credentials): delegate node certificates through service nodes
2026-08-20 19:33:23 -03:00
Vinícius Ferrão 48e8a3b57d docs(hierarchy): document delegated signer addresses 2026-08-20 17:37:23 -03:00
Vinícius Ferrão bae92ffc47 fix(credentials): audit delegated certificate signing 2026-08-20 17:37:19 -03:00
Vinícius Ferrão 1f68e97f9e test(credentials): cover service node certificate delegation 2026-08-20 16:50:31 -03:00
Vinícius Ferrão 109f587a7f fix(credentials): delegate node certificates through service nodes 2026-08-20 16:50:27 -03:00
Daniel Hilst c6549352b9 Merge pull request #7724 from VersatusHPC/feat/mknb-exported-genesis
feat(mknb): install exported Genesis images
2026-08-20 13:00:24 -03:00
Vinícius Ferrão be020834f4 Merge pull request #7736 from VersatusHPC/fix/ci-apt-network-timeout
fix(ci): bound the apt network steps with timeouts and retries
2026-08-19 16:35:50 -03:00
Vinícius Ferrão 32b99b9d64 test(ci): require the bounded noninteractive apt install form
The guard held the exact unbounded apt-get install text, so the new
timeout wrapper failed it. Require the timeout command and allow the
apt transfer options, so an unbounded install now fails the guard.
2026-08-19 16:04:05 -03:00
Vinícius Ferrão b73a7ca1d3 fix(ci): bound the apt network steps with timeouts and retries
The PR test job ran apt-get against the xcat.org repository with no
time limit of its own. When the repository stalled, the job hung on the
update step until the sixty minute workflow limit canceled the run, and
the log gave no reason.

Wrap the apt-get update and install steps in a timeout command and give
apt a transfer timeout with retries. A stalled repository now fails the
step in minutes, the driver prints its install error report, and a
rerun is possible at once.
2026-08-19 15:46:28 -03:00
Daniel Hilst d7d71b2c5e Merge pull request #7735 from VersatusHPC/fix/redact-command-log-arguments
fix(xcatd): redact command-log arguments per element
2026-08-19 15:44:02 -03:00
Vinícius Ferrão 0d8d1e60ff test(xcatd): cover per-element command-log redaction
Extract the secret set, the command maps and the redaction routines from
xcatd.pm. Drive the real routines, because the module needs daemon
dependencies that the test host does not have.

Cover a multi-word value, a quoted value, spaces around the operator,
the "+=", ",=", "^=", "!=", "=~" and "!~" operators, the community
strings, a secret embedded in a compound argument with and without
quotes, each Getopt::Long password option form with bundles, the "?"
help letter, abbreviations, "+" prefixes and two-dash letters, values
that hold another secret letter, non-secret compact values that a value
option absorbs, long names that start with a secret letter, the mkvm
case forms and compact values, the chvm positional passwords, the mkvm
clone pw= operand, the vCenter cluster passwords, the snmpc site value
through chdef and tabch with compound selectors, the authentication
tokens, and the product keys. Assert that validate() redacts the
argument vector, that the joined result runs through redact_password,
and that the dispatch trace builds its text from redacted arguments.
Keep every attribute and column pair from Schema.pm, so a removed
table-qualified mapping fails the test.
2026-08-19 13:43:24 -03:00
Vinícius Ferrão 7fa755719a fix(xcatd): redact command-log arguments per element
The daemon redacted secret attributes on the joined command string. The
match failed when a value held a space. The match also failed for a "+="
splice assignment. The validate() path did not quote the arguments, so a
multi-word secret value kept its later words in syslog and in the
auditlog table. A password that a command receives through an option or
a positional operand was not redacted at all. The debug dispatch trace
wrote the raw arguments to syslog when site.xcatdebugmode was set.

Redact the argument vector before the daemon joins it. Add
redact_password_args for this task. The routine masks the value of a
secret attribute in any argument, at the start or embedded after another
token. An embedded secret assignment masks to the end of the argument,
because a shell value may hold quotes and spaces. The routine allows
spaces around the operator. It accepts the "=", "+=", ",=", "^=", "!=",
"=~" and "!~" operators that chdef, nodech and node selection use. It
masks a password option value in each form that Getopt::Long accepts: a
separate argument, a compact short option, a bundle of short options
with the "?" help letter, a "+" option prefix, a single-letter option
with two dashes, a long option, a long option with an equals sign, and
an abbreviated long option. The long-name match runs first, so a long
option keeps its name and masks its value. A walk over each bundle then
finds the first secret letter, so the mask always starts at the option
and the result does not depend on hash order. The walk knows which
other letters of a command take a value, so a secret letter inside such
a value does not redact and the audit text stays correct. The walk also
knows which letters take an integer, because the z/VM cpu option
consumes only its signed digits and the parser then continues the
bundle into the password option. The value stops match letter case,
because a bundle keeps short options case sensitive and an unknown
capital letter does not absorb the rest. The mkvm secret match ignores
letter case, because the z/VM parser keeps the Getopt::Long default for
long names. The mkhwconn match keeps letter case, because -p
is the hardware control point and -P is the password. The routine knows
the password options of bmcdiscover, switchdiscover, mkhwconn, mkvm,
createvcluster, lsvcluster and rmvcluster, the rspconfig password
assignments, the mkvm clone pw= operand, and the positional password
operands of chvm. It masks the site.value argument of tabch and chtab
when a selector or a site.key assignment names snmpc. An exact short
option that takes a non-secret value stays visible, so the PPC mkvm -p
profile is not an abbreviation of --password. The dispatch trace builds
its text from the redacted vector.

Add snmpc, productkey, prodkey.key, tokenid and token.tokenid to the
secret list, with community and pdu.community. The secret list holds
only attributes that map to a secret column, so key and sshkeydir stay
visible.

redact_password keeps a second pass over the joined string. This pass
masks an embedded secret assignment to the end of the line, because the
argument boundaries are gone after the join.

The commands.log response classifier marks a response sensitive when the
request was redacted. The argument vector pass sets that signal, so a
secret whose name has no "passw" text still marks its response.
2026-08-19 13:43:23 -03:00
Daniel Hilst 73fbf10e6b Merge pull request #7716 from VersatusHPC/fix/syncfiles-explicit-root-identity
fix(syncfiles): name root explicitly on the xdcp subrequest
2026-08-19 07:19:11 -03:00
Daniel Hilst 0330224009 Merge pull request #7718 from VersatusHPC/fix/mknb-upgrade-failure-visibility
build(packaging): report a failed mknb at the end of an upgrade
2026-08-19 07:08:17 -03:00
Daniel Hilst 11c55ae8ad Merge pull request #7717 from VersatusHPC/fix/makedhcp-restrict-sn-dispatch
fix(dhcp): only dispatch makedhcp to the service nodes serving the nodes
2026-08-19 07:05:03 -03:00
Daniel Hilst 33a400d37d Merge pull request #7715 from VersatusHPC/cleanup/deprecated-provisioning-deadcode
fix(xcat-server): remove the unreachable deprecated provisioning paths
2026-08-19 06:58:48 -03:00