Repository navigation
Conversation
Added the same input logic as other domains Signed-off-by: SujalS27 <Sujal.Sooryavamshi@dell.com>
The test function get_ome_device_details filtered only iDRAC NICs when selecting the first active NIC MAC, while the production code in ome_server_inventory.py filters both iDRAC and InfiniBand NICs. On GPU/IB nodes where the InfiniBand adapter (e.g. NVIDIA ConnectX-7) appears before the Ethernet NIC in the OME inventory, the test picked the InfiniBand MAC instead of the Ethernet management MAC, causing DISCOVERY_FVT_EXECUTE_V012 (test_admin_mac_validation) to fail. Align the test NIC filter with production by also skipping NICs whose NicId contains "INFINIBAND". Fixes: dell#1346 Signed-off-by: SujalS27 <sujal.sooryavamshi@dell.com>
…V016-V021 - Fix V008 check_ip_correlation: remove stale IB_IP column fallback (src now produces IB_IPV4), only check IB_IPV4 correlation when IB_NIC_NAME is present on the row - Update _get_network_spec_subnets to also return ipv6_subnet - Add V016 test_ib_conditional_population: verify IB columns populated consistently with IB_NIC_NAME presence and subnet configuration - Add V017 test_ib_ipv4_format: validate every non-empty IB_IPV4 is a valid IPv4 address - Add V018 test_ib_ipv6_format: validate every non-empty IB_IPV6 is a valid IPv6 address - Add V019 test_ib_ip_uniqueness: no duplicate IB IPs, no collision with ADMIN_IP/BMC_IP; skips when no IB subnet configured - Add V020 test_pxe_mapping_all_columns: verify all 12 output contract columns present in PXE mapping CSV header - Add V021 test_bmc_mac_populated: verify every row has non-empty BMC_MAC Signed-off-by: SujalS27 <sujal.sooryavamshi@dell.com>
- V016: show exact breakdown (N with IB_NIC_NAME, M without) - V017: show populated vs empty IB_IPV4 counts - V018: show populated vs empty IB_IPV6 counts - V020: list all 12 column names in detail output Signed-off-by: SujalS27 <sujal.sooryavamshi@dell.com>
- V016: skip when neither ib_subnet nor ipv6_subnet is configured - V017: skip when ib_subnet (IPv4) is not configured - V018: skip when ipv6_subnet is not configured - Prevents misleading "0 populated, 16 empty" results when IB is not configured in network_spec.yml Signed-off-by: SujalS27 <sujal.sooryavamshi@dell.com>
Fix V016-V019 to call tl.skipped() instead of tl.passed() when IB subnet is not configured, so test output correctly shows SKIPPED instead of PASS. Signed-off-by: SujalS27 <sujal.sooryavamshi@dell.com>
… podman zone - setup_iscsi_storage.sh.j2: pass MOUNT_OPTS to mount command so fstab options (noatime, _netdev) are applied on first mount instead of using kernel defaults (relatime) - install_cuda_toolkit.sh.j2: redirect dnf cache to NFS via --setopt=cachedir to avoid filling the LiveOS rootfs overlay (~4 GB savings), clean up cache on success and failure, and call setup_cuda_env in the already-installed-on-VAST code path - prepare_vars.py / network_prepare_func.py: move 5432/tcp and 27779/tcp from host-facing FIREWALL_PORTS to new FIREWALL_PODMAN_ZONE_PORTS checked against the podman zone; drop stale 27778/tcp Signed-off-by: SujalS27 <sujal.sooryavamshi@dell.com>
SujalS27
requested review from
RvishankarOMnia,
VenkateswaraVatam,
abhishek-sa1,
snarthan and
sujit-jadhav
as code owners
November 15, 2026 08:50
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR Title
fix(orchestrator): apply PowerVault mount options, redirect CUDA dnf cache to NFS, fix firewall test podman zone
Description of the Solution
This PR fixes three independent FVT failures: (1) PowerVault iSCSI mount ignoring configured mount options from
storage_config.yml, (2) CUDA toolkit installation failing due to dnf cache exhausting the LiveOS rootfs overlay, and (3) firewall test falsely expecting container-internal ports to be open on the host-facing default zone. All three were discovered duringFVT runs on a stateless PXE-booted cluster.
Related Issue
#4849
Changes
PowerVault iSCSI Mount (
src/orchestrator/roles/mount_config/templates/setup_iscsi_storage.sh.j2)MOUNT_OPTSto themountcommand so fstab options (noatime,_netdev, etc.) are applied on the initial mount instead of falling back to kernel defaults (
relatime). The fstab entry was already written correctly but themountcommand was invoked without
-o, silently ignoring all user-configured mount options.CUDA Toolkit Installer (
src/orchestrator/roles/provision_common/templates/hpc_tools/install_cuda_toolkit.sh.j2)--setopt=cachedir=$LOCK_ROOT/.dnf-cache/$(hostname -s)) to prevent the ~4 GB RPM cache from consuming LiveOS rootfs overlay space. This reduces rootfs requirement from ~15 GB to ~11 GB during install.
setup_cuda_envcall in the "already installed on VAST" code path (lock acquired, nvcc found) so/etc/profile.d/cud a.shis always created regardless of how CUDA presence is detected.Firewall Test (
test/orchestrator/library/vars/prepare_vars.py, `test/orchestrator/library/functions/network_prepare_func.py`)
5432/tcp(PostgreSQL),27778/tcp(unused), and27779/tcp(SMD) from host-facingFIREWALL_PORTS. These ports are intentionally not exposed on the host firewall; services are accessed via HAProxy on
8443/tcp.FIREWALL_PODMAN_ZONE_PORTStuple with5432/tcpand27779/tcp, checked against thepodmanfirewall zone for container-to-container traffic.
firewall_podman_portcommand toPREPARE_COMMANDSusingfirewall-cmd --zone=podman --query-port=.27778/tcpentirely -- not referenced anywhere in the deploy role.Files Changed
src/orchestrator/roles/mount_config/templates/setup_iscsi_storage.sh.j2-o "${MOUNT_OPTS}"to mountsrc/orchestrator/roles/provision_common/templates/hpc_tools/install_cuda_toolkit.sh.j2setup_cuda_envto already-installed pathtest/orchestrator/library/vars/prepare_vars.pyFIREWALL_PODMAN_ZONE_PORTS, add `ftest/orchestrator/library/functions/network_prepare_func.pyFIREWALL_PODMAN_ZONE_PORTSTesting
Missing mount opts noatime on /mnt/slurm.Root cause confirmed -- bare
mountcommand ignored fstab options. Fix passes-o "${MOUNT_OPTS}"to apply configured opt ions on first mount.At least 1969MB more space needed on the / filesystem. Root cause confirmed -- dnf cache (~4.1 GB) consumed rootfs alongside installed packages (~7.8 GB). Fix redirects cache to NFS. Manual verification: CUDA installed successfully with--setopt=cachediron NFS,nvcc --versionconfirmed on nid008, nid009, nid010.5432/tcp closed, 27778/tcp closed, 27779/tcp closed. Root cause confirmed -- deploy role intentionally opens these ports only in the podman zone, not the default zone. Fix validates ports against the correct zone. Python import validation passed.Backward Compatibility
$LOCK_ROOT/.dnf-cache/<hostname>on NFS during installation. This directory is cleaned up after install completes (success or failure). No persistent storage impact.27778/tcpwas never opened by the deploy role in any configuration.