Skip to content

fix(roce_backend): build MOFED ISO filename from target architecture - #1400

Open
100milliongold wants to merge 1 commit into
NVIDIA:masterfrom
xiilab:fix/roce-mofed-iso-arch
Open

fix(roce_backend): build MOFED ISO filename from target architecture#1400
100milliongold wants to merge 1 commit into
NVIDIA:masterfrom
xiilab:fix/roce-mofed-iso-arch

Conversation

@100milliongold

@100milliongold 100milliongold commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

Problem

roles/roce_backend/vars/main.yml hardcodes the ISO filename, including the
distro version and architecture that the two variables above it already carry:

mofed_version: "24.10-4.1.4.0"
mofed_file_name: "MLNX_OFED_LINUX-24.10-4.1.4.0-ubuntu24.04-x86_64.iso"

The ISO is published per distro release and per architecture, so this name is
wrong on aarch64, and also wrong on Ubuntu 22.04 even on x86_64.

Both are in scope. README.md:43 lists "Ubuntu 22.04 LTS and 24.04 LTS", and
line 52 names them again "for generic Kubernetes and Slurm deployments";
docs/deepops/testing.md:126 says "DeepOps currently uses Ubuntu 22.04 and
Ubuntu 24.04 for setup and Molecule GitHub Actions"; and per-release vars files
exist for both (roles/nvidia-dgx/vars/ubuntu-22.04.yml,
roles/nhc/vars/ubuntu-22.04.yml).

Change

Build the name from mofed_version, ansible_distribution_version, and
ansible_architecture — the same expression roles/mofed already uses
(roles/mofed/defaults/main.yml), so the two roles stop disagreeing.

No architecture alias map is introduced here, unlike PR ① and ②. The point of
this change is to stop disagreeing with roles/mofed, and that role
(roles/mofed/defaults/main.yml:6) also interpolates ansible_architecture
directly without normalising aliases — adding a map here would reintroduce the
mismatch. The difference has no practical effect: ansible_architecture is
uname -m, which never reports arm64 on Linux. For the record, an arm64
input would render ...-ubuntu24.04-arm64.iso, which returns HTTP 404; only the
aarch64 name exists.

README updated to match, since it quotes this block verbatim.

Verification

All four combinations of {24.04, 22.04} × {x86_64, aarch64} are published, so
every name this expression renders resolves to a real ISO:

ubuntu24.04 x86_64   HTTP 200  content-length: 324743168   (today's hardcoded name)
ubuntu24.04 aarch64  HTTP 200  content-length: 318736384
ubuntu22.04 x86_64   HTTP 200  content-length: 328933376
ubuntu22.04 aarch64  HTTP 200  content-length: 322516992

The aarch64 24.04 ISO reports content-type: application/x-iso9660-image. The
three names other than the first are unreachable with the hardcoded value.

The ISO filename was hardcoded, including the distro release and architecture
that the two variables above it already carry. The name is therefore wrong on
aarch64, and wrong on Ubuntu 22.04 even on x86_64. All four combinations of
{24.04, 22.04} x {x86_64, aarch64} are published, so three of the four names
were unreachable.

Build the name from mofed_version, ansible_distribution_version and
ansible_architecture -- the expression roles/mofed already uses
(roles/mofed/defaults/main.yml:6), so the two roles stop disagreeing.

No architecture alias map is added here, unlike the two changes above: the point
is to match roles/mofed, which does not normalise aliases either. There is no
practical difference because ansible_architecture is uname -m, which never
reports arm64 on Linux.

The README quotes this block verbatim and is updated to match.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants