mirror of
https://github.com/containers/bootc.git
synced 2026-02-05 15:45:53 +01:00
Add support for downloading and staging updates without automatic application on reboot. This allows users to prepare updates and apply them at a controlled time. User-facing changes: - Add --download-only flag to bootc upgrade command - bootc upgrade --download-only: stages deployment in download-only mode - bootc upgrade (no flags): clears download-only mode if present - bootc upgrade --apply: clears download-only mode and immediately reboots - bootc upgrade --check: read-only, doesn't change download-only state - bootc status shows "Download-only: yes/no" for staged deployments in verbose mode - Garbage collection automatically cleans up unreferenced images after staging Implementation details: - Internally uses OSTree finalization locking APIs - Sets opts.locked in SysrootDeployTreeOpts when staging deployments - Added change_finalization() method to SysrootLock wrapper - Tracks lock state changes separately from image digest changes - Field name in BootEntry is download_only (Rust), downloadOnly (JSON) - Verbose status display uses "Download-only" label (matches Soft-reboot pattern) - Uses deployment.is_finalization_locked() API (OSTree v2023.8+) - Always emits downloadOnly field in JSON output for consistency Testing and documentation: - New dedicated test: test-25-download-only-upgrade.nu (4-boot workflow) - Test verifies: switch → upgrade --download-only → reboot (stays old) → re-stage → upgrade (clear) → reboot (applies) - Updated docs/src/upgrades.md with comprehensive workflow examples - Includes notes about reboot behavior and image switching - Generated man pages and JSON schemas updated - All test fixtures updated with downloadOnly field The download-only flag is only available for upgrade, not switch. The implementation is designed to support future composefs backend. Assisted-by: Claude Code (Sonnet 4.5) Signed-off-by: Wei Shi <wshi@redhat.com>
26 lines
672 B
Nu
26 lines
672 B
Nu
# A simple nushell "library" for the
|
|
|
|
# This is a workaround for what must be a systemd bug
|
|
# that seems to have appeared in C10S
|
|
# TODO diagnose and fill in here
|
|
export def reboot [] {
|
|
# Allow more delay for bootc to settle
|
|
sleep 120sec
|
|
|
|
tmt-reboot
|
|
}
|
|
|
|
# True if we're running in bcvk with `--bind-storage-ro` and
|
|
# we can expect to be able to pull container images from the host.
|
|
# See xtask.rs
|
|
export def have_hostexports [] {
|
|
$env.BCVK_EXPORT? == "1"
|
|
}
|
|
|
|
# Parse the kernel commandline into a list.
|
|
# This is not a proper parser, but good enough
|
|
# for what we need here.
|
|
export def parse_cmdline [] {
|
|
open /proc/cmdline | str trim | split row " "
|
|
}
|