Skip to content

fix(installer) Set proper version metadata for local/dev installs#70

Draft
ryanheffernan wants to merge 14 commits into
mainfrom
codex/fix-ui-release-version
Draft

fix(installer) Set proper version metadata for local/dev installs#70
ryanheffernan wants to merge 14 commits into
mainfrom
codex/fix-ui-release-version

Conversation

@ryanheffernan

@ryanheffernan ryanheffernan commented Jun 26, 2026

Copy link
Copy Markdown
Collaborator

Description

Fix local/dev installs so the displayed and installed release metadata matches the intended release tag.

  • Set global.appVersion from the installer image tag so the UI/API health config reports x.y.z-rc.a instead of a local content hash.
  • Preserve the local image tag in installer config pruning and Air sim generated configs.
  • Pass release-shaped image tags into the Nautobot image build as plugin package versions, normalized for Python packaging, so nautobot-app-overlays no longer falls back to an older version.
  • Add Nautobot Docker cache invalidation metadata so plugin version changes rebuild the install layer instead of reusing stale package metadata.

Validation

  • Standard CI passes.
  • Kind integration passes, or this PR explains why it was not run.

Passing Kind Integration run:
https://github.com/NVIDIA/nv-config-manager/actions/runs/28248622074

Checklist

  • I am familiar with the contributing guidelines in CONTRIBUTING.md.
  • Commits are signed off for DCO compliance.
  • New or existing tests cover these changes, or the PR explains why tests are not needed.
  • Documentation is updated for user-facing behavior changes.
  • Generated artifacts are updated when applicable, such as OpenAPI specs,
    docs screenshots, or Helm/rendered outputs.

Summary by CodeRabbit

Summary

  • New Features
    • Added “nv-config-manager Version” to the Air simulation TUI to optionally stamp local image tags and version metadata.
    • Helm UI now sets a global appVersion, preferring a configured app version with sensible fallbacks.
  • Bug Fixes
    • Improved release/version normalization and validation; mismatched explicit versions are rejected.
    • Local installs now preserve and serialize an explicit image tag when provided.
  • Documentation
    • Updated the Air Simulation guide with the new Version field and expected behavior.
  • Tests
    • Expanded unit/integration coverage for version/tag propagation, Helm values, and rendered schema.
  • Chores
    • Adjusted Docker label formatting for consistent version metadata application.

Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
@copy-pr-bot

copy-pr-bot Bot commented Jun 26, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@coderabbitai

coderabbitai Bot commented Jun 26, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 46d7b479-dfdf-4727-9211-542398d03796

📥 Commits

Reviewing files that changed from the base of the PR and between d322a4c and 15230c7.

⛔ Files ignored due to path filters (1)
  • docs/assets/images/air-sim/02-options.svg is excluded by !**/*.svg
📒 Files selected for processing (4)
  • docs/user-guides/air-simulation/index.mdx
  • installer/src/nv_config_manager_installer/deployer.py
  • installer/src/nv_config_manager_installer/tui/air_sim/screens/options.py
  • installer/tests/test_deployer.py
✅ Files skipped from review due to trivial changes (1)
  • docs/user-guides/air-simulation/index.mdx
🚧 Files skipped from review as they are similar to previous changes (2)
  • installer/src/nv_config_manager_installer/tui/air_sim/screens/options.py
  • installer/src/nv_config_manager_installer/deployer.py

📝 Walkthrough

Walkthrough

Installer version tags now flow into Helm app version values, UI launch validation, and Nautobot build arguments. The installer config, schema pruning, and tests were updated to carry the tag through.

Changes

Version and image tag propagation

Layer / File(s) Summary
Installer tag preservation
installer/src/nv_config_manager_installer/air_sim/sim_config.py, installer/src/nv_config_manager_installer/air_sim/installer_config.py, installer/src/nv_config_manager_installer/schema.py, installer/tests/air_sim/test_installer_config.py, installer/tests/test_schema.py
config_manager_version and images.tag are added to generated installer config, local-image YAML pruning keeps or removes the tag consistently, and tests assert the tag in rendered config output.
TUI version input
installer/src/nv_config_manager_installer/tui/air_sim/screens/options.py, installer/src/nv_config_manager_installer/tui/air_sim/screens/launch.py, installer/tests/air_sim/test_tui_launch.py, docs/user-guides/air-simulation/index.mdx
The air-sim options and launch screens read, write, and validate config_manager_version, the TUI tests cover the new field, and the guide documents the version field and its relation to Git ref selection.
Helm app version wiring
deploy/helm/values.yaml, installer/src/nv_config_manager_installer/helm_values.py, deploy/helm/templates/ui.yaml, installer/tests/test_helm_values.py
global.appVersion is added to Helm values from the configured image tag, and the UI deployment template now falls back through global.appVersion, the image tag, and .Chart.AppVersion; Helm tests assert the new value.
Nautobot build version normalization
installer/src/nv_config_manager_installer/deployer.py, build/nautobot.Dockerfile, installer/tests/test_deployer.py
Release refs are normalized into a package version for Nautobot overlay build args on the nv-config-manager-nautobot image, and the Dockerfile labels remain a single instruction.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Suggested reviewers

  • dmathur0
  • jojung1

Poem

🐇 I hopped through tags from gate to glow,
rc to release, neat and low.
Helm and TUI now agree,
one version path from root to tree.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 24.32% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: improving version metadata handling for local/dev installer flows.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/fix-ui-release-version

Comment @coderabbitai help to get the list of available commands.

@ryanheffernan ryanheffernan changed the title Codex/fix UI release version fix(installer) Set proper version metadata for local/dev installs Jun 26, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@installer/tests/test_deployer.py`:
- Around line 687-694: This test is relying on the
fallback-from-config.images.tag path in _build_images(), but it will be bypassed
if NAUTOBOT_APP_OVERLAYS_VERSION or NAUTOBOT_NV_CONFIG_MANAGER_VERSION is
already set in the process environment. Update the test setup around the
_build_images-related monkeypatches to explicitly clear or unset both Nautobot
version overrides so the test remains deterministic and continues to exercise
the intended fallback behavior.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: 3c56af78-5012-4dfd-a260-98b477a650ab

📥 Commits

Reviewing files that changed from the base of the PR and between 3ec74a6 and ca64cd2.

📒 Files selected for processing (11)
  • build/nautobot.Dockerfile
  • deploy/helm/templates/ui.yaml
  • deploy/helm/values.yaml
  • installer/src/nv_config_manager_installer/air_sim/installer_config.py
  • installer/src/nv_config_manager_installer/deployer.py
  • installer/src/nv_config_manager_installer/helm_values.py
  • installer/src/nv_config_manager_installer/schema.py
  • installer/tests/air_sim/test_installer_config.py
  • installer/tests/test_deployer.py
  • installer/tests/test_helm_values.py
  • installer/tests/test_schema.py

Comment thread installer/tests/test_deployer.py
Signed-off-by: rheffernan <rheffernan@nvidia.com>
@ryanheffernan

Copy link
Copy Markdown
Collaborator Author

/ok to test 1a114e7

Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
@ryanheffernan

Copy link
Copy Markdown
Collaborator Author

/ok to test 112bff4

@github-actions

Copy link
Copy Markdown

Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
Signed-off-by: rheffernan <rheffernan@nvidia.com>
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.

1 participant