Repository navigation
fix(orchestrator,discovery): enforce OS version suffix in PXE functional group names - #5484
Merged
abhishek-sa1 merged 2 commits intoOct 9, 2026
Conversation
…nal group names The PXE mapping file used generic functional group names without OS version identifiers (e.g. slurm_control_node_x86_64), creating ambiguity about which OS version is intended for each node. Changes: - Add validation in pxe_mapping_validator.py requiring OS version suffix (e.g. _rhel_10_0) for catalog-managed functional group names - Tighten catalog matching to require exact OS version match instead of treating missing version as wildcard - Update discovery generate_pxe_mapping.py to accept os_type/os_version parameters and auto-inject version suffix into functional group names - Switch discovery from hardcoded SUPPORTED_FUNCTIONAL_GROUPS set to pattern-based prefix matching for forward compatibility - Add discovery_os_type/discovery_os_version defaults sourced from catalog metadata Signed-off-by: sayuri <sayuri.kamble@dell.com>
SAYUK09
force-pushed
the
fix/enforce-os-version-in-pxe-functional-groups
branch
from
October 8, 2026 05:58
45d268e to
1fbc088
Compare
SAYUK09
marked this pull request as ready for review
October 9, 2026 07:25
SAYUK09
requested review from
RvishankarOMnia,
VenkateswaraVatam,
abhishek-sa1,
snarthan and
sujit-jadhav
as code owners
October 9, 2026 07:25
abhishek-sa1
approved these changes
Oct 9, 2026
balajikumaran-c-s
pushed a commit
to SAYUK09/omnia
that referenced
this pull request
Oct 9, 2026
…mapping The PR dell#5484 added OS version injection into functional group names, but the implementation was incomplete. The discovery role referenced cluster_os_type and cluster_os_version variables that were only set by image_build_manager when parsing the catalog. Since discovery runs independently, these variables were always empty, causing the OS version to never be injected. This fix adds catalog parsing to the discovery workflow: - Check if catalog file exists (from CATALOG_FILE_PATH env var or default) - Parse catalog JSON to extract os and os_version from baseos_group - Set discovery_os_type and discovery_os_version facts - Pass these to generate_pxe_mapping module for OS version injection Result: Functional group names now include OS version (e.g., slurm_node_rhel_10_0_aarch64 instead of slurm_node_aarch64) Signed-off-by: sayuri <sayuri.kamble@dell.com>
balajikumaran-c-s
pushed a commit
to SAYUK09/omnia
that referenced
this pull request
Oct 9, 2026
…mapping The PR dell#5484 added OS version injection into functional group names, but the implementation was incomplete. The discovery role referenced cluster_os_type and cluster_os_version variables that were only set by image_build_manager when parsing the catalog. Since discovery runs independently, these variables were always empty, causing the OS version to never be injected. This fix adds catalog parsing to the discovery workflow: - Check if catalog file exists (from CATALOG_FILE_PATH env var or default) - Parse catalog JSON to extract os and os_version from baseos_group - Set discovery_os_type and discovery_os_version facts - Pass these to generate_pxe_mapping module for OS version injection Result: Functional group names now include OS version (e.g., slurm_node_rhel_10_0_aarch64 instead of slurm_node_aarch64) Signed-off-by: sayuri <sayuri.kamble@dell.com>
balajikumaran-c-s
force-pushed
the
fix/enforce-os-version-in-pxe-functional-groups
branch
from
October 9, 2026 09:32
630f768 to
c40c869
Compare
balajikumaran-c-s
pushed a commit
to SAYUK09/omnia
that referenced
this pull request
Oct 9, 2026
…mapping The PR dell#5484 added OS version injection into functional group names, but the implementation was incomplete. The discovery role referenced cluster_os_type and cluster_os_version variables that were only set by image_build_manager when parsing the catalog. Since discovery runs independently, these variables were always empty, causing the OS version to never be injected. This fix adds catalog parsing to the discovery workflow: - Check if catalog file exists (from CATALOG_FILE_PATH env var or default) - Parse catalog JSON to extract os and os_version from baseos_group - Set discovery_os_type and discovery_os_version facts - Pass these to generate_pxe_mapping module for OS version injection Result: Functional group names now include OS version (e.g., slurm_node_rhel_10_0_aarch64 instead of slurm_node_aarch64) Signed-off-by: sayuri <sayuri.kamble@dell.com>
balajikumaran-c-s
force-pushed
the
fix/enforce-os-version-in-pxe-functional-groups
branch
from
October 9, 2026 09:43
c40c869 to
658001f
Compare
…mapping The PR dell#5484 added OS version injection into functional group names, but the implementation was incomplete. The discovery role referenced cluster_os_type and cluster_os_version variables that were only set by image_build_manager when parsing the catalog. Since discovery runs independently, these variables were always empty, causing the OS version to never be injected. This fix adds catalog parsing to the discovery workflow: - Check if catalog file exists (from CATALOG_FILE_PATH env var or default) - Parse catalog JSON to extract os and os_version from baseos_group - Set discovery_os_type and discovery_os_version facts - Pass these to generate_pxe_mapping module for OS version injection Result: Functional group names now include OS version (e.g., slurm_node_rhel_10_0_aarch64 instead of slurm_node_aarch64) Signed-off-by: sayuri <sayuri.kamble@dell.com>
SAYUK09
force-pushed
the
fix/enforce-os-version-in-pxe-functional-groups
branch
from
October 9, 2026 09:50
658001f to
a909a71
Compare
balajikumaran-c-s
approved these changes
Oct 9, 2026
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.
Description of the Solution
The PXE mapping file (
pxe_mapping_file.csv) used generic functional group names without OS version identifiers (e.g.,slurm_control_node_x86_64instead ofslurm_control_node_rhel_10_0_x86_64), creating ambiguity about which OS version is intended for each node even though nodes boot correctly. This PR adds validation to reject functional group names missing an OS version suffix and updates the discovery module to auto-inject OS version from catalog metadata when generating the mapping file.Related Issue
Changes
Orchestrator Validation (
src/orchestrator/plugins/module_utils/orchestrator_validation/)slurm_*,service_kube_*,login_node_*,os_*) in_validate_names()_catalog_matches()to require exact OS version match instead of treating missing version as a wildcardpxe_mapping_missing_os_version_msg()error messageDiscovery Module (
src/discovery/plugins/modules/)os_typeandos_versionmodule parameters togenerate_pxe_mapping.py_inject_os_version()helper that inserts_{os_type}_{version}before the architecture suffix, with idempotency (skips names that already contain a version segment)SUPPORTED_FUNCTIONAL_GROUPSexact-match set with_is_supported_functional_group()pattern-based prefix matching for forward compatibility with versioned namesDiscovery Role (
src/discovery/roles/ome_discovery/)discovery_os_typeanddiscovery_os_versiondefaults sourced fromcluster_os_type/cluster_os_versioncatalog metadatagenerate_pxe_mappingmodule in playbookFiles Changed
src/orchestrator/plugins/module_utils/orchestrator_validation/validators/pxe_mapping_validator.py_validate_names(); tighten_catalog_matches()to exact OS version matchsrc/orchestrator/plugins/module_utils/orchestrator_validation/messages/orchestrator_messages.pypxe_mapping_missing_os_version_msg()error message functionsrc/discovery/plugins/modules/generate_pxe_mapping.pyos_type/os_versionparams,_inject_os_version()helper, replace exact-match set with prefix-based_is_supported_functional_group()src/discovery/roles/ome_discovery/defaults/main.ymldiscovery_os_typeanddiscovery_os_versiondefaultssrc/discovery/roles/ome_discovery/tasks/generate_pxe_mapping.ymlos_type/os_versiontogenerate_pxe_mappingmoduleTesting
slurm_node_x86_64) are rejected and versioned names (slurm_node_rhel_10_0_x86_64) pass validation_is_supported_functional_group()with both versioned and unversioned names, custom groups, and unsupported architectures; unit tested_inject_os_version()for injection, idempotency (already-versioned names unchanged), and no-op whenos_type/os_versionare emptyBackward Compatibility
slurm_node_x86_64) will fail orchestrator validation. Users must update names to include OS version suffix (e.g.,slurm_node_rhel_10_0_x86_64) matching their active catalog's FunctionalLayer names.additional_cloud_init.ymlmust be updated to match the versioned functional group names in the mapping file.os_typeandos_versionparameters default to empty strings; when empty, no version injection occurs and behavior is unchanged from before._catalog_matches()no longer treats missing OS version as a wildcard match. This is intentional — the new validation ensures all catalog-managed names include a version, so the wildcard path is no longer reachable.