2
0
mirror of https://github.com/xcat2/xcat-core.git synced 2026-07-31 18:19:40 +00:00
Commit Graph

306 Commits

Author SHA1 Message Date
Daniel Hilst b4a5a86b4b Merge pull request #7665 from VersatusHPC/harvest/genesis-ib-support
fix(genesis): find the boot NIC over InfiniBand (IPoIB)
2026-07-28 11:01:51 -03:00
Daniel Hilst 5fb329d2dc Merge pull request #7671 from VersatusHPC/harvest/bmcsetup-robustness
fix(bmcsetup): settle after IBM port change and support long BMC passwords
2026-07-27 15:28:14 -03:00
Daniel Hilst 38c0674394 Merge pull request #7663 from VersatusHPC/harvest/bmcsetup-walker-pass
fix(bmcsetup): support Intel Walker Pass (S9200WK) BMC LAN
2026-07-27 10:35:59 -03:00
Daniel Hilst db9da9667f Merge pull request #7646 from VersatusHPC/harvest/bmcsetup-verify-before-set
fix(bmcsetup): skip BMC LAN settings that already match (verify before set)
2026-07-27 07:58:09 -03:00
Vinícius Ferrão 563a083627 fix(bmcsetup): settle after IBM port change and support long BMC passwords
Two small robustness fixes for bmcsetup:

- After changing the BMC network port on IBM boards (IPMIMFG 2), the BMC LAN
  configuration was not yet ready; add a 15s settle before continuing. Gated
  inside the IBM branch, so no other vendor is affected.

- Set a password longer than 16 characters using ipmitool's 20-byte form, but
  only when the password actually exceeds 16 chars, so a BMC that supports only
  16-byte passwords is never asked for a length it cannot store.

Recovered from the unmerged lenovobuild branch (949532f3, 78fa7758; the password
change adapted to use the 20-byte form only for long passwords).

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
2026-07-23 21:14:01 -03:00
Vinícius Ferrão 9a33f64257 fix(genesis): find the boot NIC over InfiniBand (IPoIB)
When a node boots from an InfiniBand interface, doxcat could not match BOOTIF
to the netdev, so boot-nic detection failed. Load ib_ipoib and, if the normal
Ethernet lookup finds nothing, fall back to matching the InfiniBand device by
its (shorter) IPoIB address.

modprobe ib_ipoib is harmless where there is no IB hardware (the module simply
loads no devices), and the IB lookup only runs when the Ethernet lookup fails,
so non-IB nodes are unaffected.

Not lab-validated (no InfiniBand fabric available; the SR635's Mellanox card is
in Ethernet mode).

Recovered from the unmerged lenovobuild branch (aeeebd5f).

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
2026-07-23 19:19:23 -03:00
Vinícius Ferrão 49c3e94a09 fix(bmcsetup): support Intel Walker Pass (S9200WK) BMC LAN
Intel Walker Pass (S9200WK) boards in dedicated-LAN mode use IPMI channel 3;
the auto-detect loop does not find it. Set the channel explicitly for these
boards, gated on IPMIMFG=343 && XPROD=149, and extend the existing S2600BP
channel-setaccess (343/124) to cover 149 as well.

Gated on the Intel manufacturer/product IDs, so no other BMC is affected.
Not lab-validated (no Walker Pass hardware available).

Recovered from the unmerged lenovobuild branch (2357c298).
2026-07-23 19:15:43 -03:00
Vinícius Ferrão c1e0452da8 Merge pull request #7656 from VersatusHPC/harvest/bmcsetup-sr635-sr655
fix(bmcsetup): enable BMC setup for Lenovo SR635/SR655
2026-07-23 17:41:51 -03:00
Vinícius Ferrão 6dbc16c216 fix(bmcsetup): enable BMC setup for Lenovo SR635/SR655
The original Lenovo SR635/SR655 (IPMI manufacturer 19046, product 1287) use an
AMI "TSM" BMC reached over a LAN-over-USB interface, which needs OEM raw commands
to bring the interface up, select the LAN channel, and restart TSM networking
once configured. Add a dedicated vendor branch for it -- gated on the same
IPMIMFG/XPROD check the script already uses for IBM, Dell, Supermicro, OpenPOWER
and other Lenovo machines -- plus a udev rule and helper that bring up the USB
NIC (169.254.0.120) so in-band ipmitool can reach the TSM. The user-slot
auto-scan is skipped for these machines, which use a fixed slot.

Everything is behind IPMIMFG=19046 && XPROD=1287 (or the 046b:ffb0 USB device),
so no other BMC is affected.

Recovered from the unmerged lenovobuild branch (922dfe18, 42357f9d, 02da8a6b,
765e2ad3, 408cf2b3), adapted to master's bmcsetup structure. The global MD5 LAN
auth removal that rode along in 42357f9d is intentionally left out -- SR635/SR655
IPMI authentication is already handled in master by #7586 (retry cipher suite 3
on a zero RAKP2 HMAC), so dropping MD5 for all BMCs is neither needed nor wanted
here.

Not lab-validated: this targets the original SR635/SR655 (product 1287); no such
machine was available to test (an SR635 V3 reports product 1601 and uses a
different, directly-reachable BMC). The code is gated so it cannot affect other
hardware.

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
2026-07-23 16:43:41 -03:00
Vinícius Ferrão 8d7ccc2d89 fix(bmcsetup): skip BMC LAN settings that already match (verify before set)
bmcsetup unconditionally re-set the BMC IP source, address, netmask, gateway
and VLAN on every run. On a re-run or re-discovery where the BMC is already
configured, that re-applies settings needlessly and can briefly churn the BMC
network. Read the current value first and only issue the set when it differs;
the VLAN check maps an "off" target to the "Disabled" the BMC reports.

Validated read-only on a Lenovo ThinkSystem SR635 (MegaRAC BMC): the address
and VLAN guards evaluate to skip when the target matches the current value.

Recovered from the unmerged lenovobuild branch (fd194005); the RD350-specific
snooze and manufacturer-ID hunks are omitted as master's vendor handling has
since diverged.

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
2026-07-23 01:29:04 -03:00
Vinícius Ferrão f24457cddf fix(genesis): stop ethtool link-wait loops from spinning forever
For each secondary NIC in NICSTOBRINGUP, doxcat backgrounds a loop that polls
`ethtool $nic` until the link reports "detected: yes" before running dhclient.
A NIC that is never connected keeps that loop (and its `sleep 5`) running for
the life of the genesis environment, leaking background shells and needlessly
churning.

Add a second exit condition so each loop also stops once /tmp/netinitted
exists, and touch that file once the boot NIC has completed network init. A
link that never appears no longer waits indefinitely.

Recovered from the unmerged lenovobuild branch (original 9ece12e4).

Co-authored-by: Jarrod Johnson <10814490+jjohnson42@users.noreply.github.com>
2026-07-21 17:11:01 -03:00
Daniel Hilst f6deff08bc fix(genesis-scripts): floor genesis-base requirement at 2:2.18.0
Requiring xCAT-genesis-base >= 2:%{version} coupled the flat xcat-core to a
matching genesis-base on every marketing-version bump: a 2.18.1 core refused
to install against the deployed 2.18.0 genesis-base. genesis-base changes
rarely and lives in the separate per-EL xcat-dep repo, so floor the requirement
at the fixed 2.18.0 baseline instead. Core version bumps no longer force a
genesis-base re-publish.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-07-09 22:05:49 -03:00
Daniel Hilst 23a5877480 fix(genesis-scripts): require genesis-base by version, not exact snap
genesis-base now ships in the per-EL xcat-dep repo while genesis-scripts ships
in the flat xcat-core. The exact "= 2:%{version}-%{release}" dependency forced
core and dep to be republished in lockstep on every core rebuild (a new snap in
core could not be installed until the exact-matching genesis-base snap was also
published to the client's dep channel -- which broke a production client).

Relax to ">= 2:%{version}": epoch 2, version >= 2.18.0, any release/snap. RPM
ignores the release when the dependency omits it, so any same-version (or newer)
genesis-base satisfies it. Routine core snaps no longer require a genesis-base
re-publish; lockstep now only matters on version bumps and the initial publish.

Signed-off-by: Daniel Hilst <392820+dhilst@users.noreply.github.com>
2026-06-30 19:19:33 -03:00
Vinícius Ferrão e239e04843 genesis-scripts: improve shell quoting and syntax hygiene
Replace backtick command substitutions with $(), quote variable
expansions to prevent word splitting, replace useless cat pipes with
redirections, use grep -q instead of redirecting to /dev/null, and use
bash parameter expansion for case conversion.

Based on the work from PR #6366, rebased and adapted to current master.
Shebangs already merged separately via df64bf8fe are excluded.

Co-Authored-By: Samveen <samveen@yahoo.com>
2026-05-07 18:17:00 -03:00
Vinícius Ferrão 7c1444335e fix: skip disabled IPMI user slots in bmcsetup
bmcsetup iterated every user slot and retried ipmitool user disable for slots that were already disabled. Lenovo XCC reports those attempts as Invalid data field in request, so discovery can spend minutes retrying no-op disables.

Read the current user table once per BMC, keep the old fallback when the table cannot be read, and disable only non-target slots whose IPMI Msg flag is true. Also use the loop's current username when resolving the target slot and keep the intended userslot 2 fallback assignment.

Fixes xcat2/xcat-core#5065
2026-05-06 23:54:02 -03:00
Daniel Hilst Selli baa2380cd2 fix: Move dracut call to the .spec
This fixes a problem where the dracut image was pulling artifacts from
the build host and not the mock image, e.g. building for EL9 in EL10.

Signed-off-by: Daniel Hilst Selli <392820+dhilst@users.noreply.github.com>
2026-04-14 11:15:56 -03:00
Daniel Hilst Selli 3bbdcf5900 Revert "Remove doxcat changes from 4a1905171d0994c2a44e72aa10bcaa05139889bc"
Signed-off-by: Daniel Hilst Selli <392820+dhilst@users.noreply.github.com>
2026-03-27 11:20:29 -03:00
Daniel Hilst Selli 4a1905171d fix: Fix genesis boot in ppc64le
Signed-off-by: Daniel Hilst Selli <392820+dhilst@users.noreply.github.com>
2026-03-11 09:32:35 -03:00
Daniel Hilst Selli d691c5ccda fix: [WIP] Build xCAT-genesis-base source package in buildrpms.pl
Signed-off-by: Daniel Hilst Selli <392820+dhilst@users.noreply.github.com>
2026-02-13 14:31:26 -03:00
davidmonro 6c2480fb5e dodiscovery: when parsing DMI FRU data, only ignore the product name if it is entirely whitespace, rather than just containing some (#7500) 2025-05-31 01:33:20 +02:00
Markus Hilger d8ce286412 Merge pull request #7460 from abhishek-sa1/master
Genesis fix for x86_64
2024-09-10 17:17:26 +02:00
Kilian Cavalotti 787ea2191e bmcsetup: enhance BMC port configuration for Dell systems
Add optional values to ipmi.bmcport to support more fine-grained
configuration for Dell servers, and mirror the `ipmitool delloem`
capabilities:

   lan set <Mode>
    sets the NIC Selection Mode :
        dedicated, shared with lom<idx>

   lan set <Shared Failover Mode>
    sets the shared Failover Mode :
        shared with failover lom<idx>
        shared with failover all loms,
        shared with failover none.

This patch introduces the possibility to provide 3 (space-separated)
values for ipmi.bmcport:
  1st value:  0 = shared / 1 = dedicated
  2nd value   shared LOM (1-4)   (0 or no value means first available LOM)
  3rd value:  failover LOM (1-4) (0 means no failover, no value means all LOMs)

To ensure maximum compatibility with the default 0/1 shared/dedicated
scheme, the 2nd and 3rd values are optional, and will retain the
previous behavior when not specified.

Examples:

ipmi.bmcport value      BMC interface configuration
0                       Shared with first available interface, failover with
                        all LOMs (catch-all mode)
0 1                     Shared with LOM1, failover all LOMs
0 1 2                   Shared with LOM1, failover LOM2
0 2 0                   Shared with LOM2, no failover
1                       Dedicated
2024-08-12 13:20:16 -07:00
Abhishek S A f89fb8763d Update doxcat 2024-07-31 08:56:28 +05:30
abhishek-sa1 88447104e5 Update doxcat 2024-07-31 08:54:55 +05:30
Abhishek S A e497b5aa60 Merge branch 'xcat2:master' into master 2024-07-26 16:06:23 +05:30
abhishek-sa1 5e7e00ffac xcat genesis fix for x86_64 2024-07-26 16:05:15 +05:30
Markus Hilger c8cb1d6a38 Merge pull request #7257 from Obihoernchen/aarch64
Initial aarch64 support, cross arch stateless images with qemu-user-static, grub2 for x86
2024-07-25 16:12:11 +02:00
Kilian Cavalotti 7ef19295f1 bmcsetup: add support for setting bmcport on Supermicro servers (#7318)
* bmcsetup: add support for setting bmcport on Supermicro servers

* bmcsetup: set real shared mode for Supermicro BMC interface, and add web reference
2024-07-12 16:15:52 +02:00
Kilian Cavalotti 255ff27d8f bmcsetup: revert previous meaning of bmcport for Dell servers (#7317)
* bmcsetup: revert previous meaning of bmcport for Dell servers, to
conform with other server types: 0=shared, 1=dedicated

* bmcsetup: remove dependency on `ipmitool delloem` and use raw cmds instead

ipmitool delloem may not work on all Dell server generations,
functionnality depends on ipmitool versions (see
https://github.com/ipmitool/ipmitool/issues/18).

So removing thatdependency and using raw IPMI commands seems more robust.
2024-07-12 16:05:54 +02:00
Markus Hilger df64bf8feb Add missing shebang lines 2024-05-07 16:31:30 +02:00
Markus Hilger 2643c1edd6 Remove useless executable bit 2024-05-07 16:19:25 +02:00
Markus Hilger 295dff5c51 Fix genesis builds for aarch64 2024-02-21 11:59:50 +01:00
Obihörnchen 86c8b3310d Merge pull request #7398 from stanford-rc/mtm_empty_fru
Fix MTM detection for incomplete FRU pages
2024-02-19 19:13:16 +01:00
Kilian Cavalotti 7f7d7db591 use \s to handle all types of whitespace 2023-12-11 14:50:10 -08:00
Kilian Cavalotti 7e4f11119d fix FRU parsing when empty values are provided 2023-07-27 14:12:13 -07:00
Kilian Cavalotti 6bbabb551e retab 2023-07-27 14:12:03 -07:00
besawn 8bad3917fb Added missing shebang to postscripts 2023-02-28 15:43:03 -05:00
Obihörnchen 108943ee74 Load ipmi_powernv for ppc64 arch 2022-12-09 17:59:34 +01:00
Markus Hilger 4c3404619f Add ipmi_si module to be able to run bmcsetup manually 2022-09-30 15:04:29 +02:00
Mark Gurevich 4a6ccf0ca5 Update docker build containers to CentOS8 (3) 2022-05-13 13:05:11 -04:00
Mark Gurevich e58074ad4a Update doxcat discovery script to run on Fedora34 generated image 2021-09-30 17:42:07 -04:00
Mark Gurevich a80c172f83 RH8 genesis scripts 2021-09-22 15:36:45 -04:00
adorsey-NOAA 996b05ce6a Update bmcsetup
Don't check $LOCKEDUSERS at all, instead fall back to userslot 2 as a last resort if the user doesn't already exist, and the automatic slot detection doesn't find an unlocked slot.  This is essentially what was happening in the older version of the script before #6380 as $LOCKEDUSERS was only ever referenced here.

Also move setting the username before setting privileges and access levels, as those steps fail if done before username is set for the slot.
2020-04-08 11:07:25 -04:00
adorsey-NOAA e5c6039855 Update bmcsetup 2020-04-07 12:45:51 -04:00
Mark Gurevich d60d63ff09 Do not use Mihawk codename 2020-02-19 14:50:05 -05:00
Mark Gurevich 88ee3f1d67 Mihawk support for bmcdiscover and bmcsetup 2020-02-19 14:23:43 -05:00
Mark Gurevich 0de926b4ab Merge pull request #6380 from adorsey-NOAA/patch-1
Automatically find first unlocked user slot
2019-12-05 12:48:36 -05:00
Mark Gurevich 2d706b9c75 bmcsetup Other LAN and 802.3 LAN for Channel Medium Type 2019-10-22 11:51:23 -04:00
adorsey-NOAA b23d6d6615 Automatically find first unlocked user slot
Instead of relying on hard coded offsets, query each slot's status with ```ipmitool channel getaccess``` and use the first slot that is unlocked.

This fixes an issue on certain Cray x86 nodes that have arbitrary locked IPMI user slots.
2019-07-18 17:56:05 -04:00
GONG Jie 6dac9ae943 Remove trailing spaces in file xCAT-genesis-scripts/usr/bin/updateflag.awk 2017-12-31 23:59:59 +00:00