Support locking an existing staged deployment with --download-only
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 52/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- rust
調査の方向性
まず、OSTree と composefs バックエンド上ですでにステージングされているイメージに対して bootc switch --download-only を再現し、次にステージングされた deployment の状態の処理を追跡します。アンロックされた stage がイメージや digest を変更せずにロックされた状態になり、すでにロックされている stage は変更されず、サポートされていない変更には明確なエラーが返されれば、作業は完了です。
索引モデルが issue の本文から書いたものです。
説明
Problem
Running bootc switch --download-only for the same image that is already
staged does not convert the staged deployment from unlocked to download-only.
Instead, bootc exits successfully without changing the staged deployment:
Image specification is unchanged.
The staged deployment continues to report:
{
"downloadOnly": false
}
This means management software cannot safely enable a policy requiring an
explicit apply operation after the image has already been staged.
The result was reproduced on both:
- OSTree backend using XFS
- composefs backend using ext4, GRUB and BLS
Both returned Image specification is unchanged. with exit status 0, and both
left status.staged.downloadOnly set to false.
The OSTree-specific ostree admin lock-finalization command may provide a
low-level workaround, but it is not a backend-independent bootc interface.
Background Why this matters https://github.com/bootc-dev/bootc-operator/pull/151
While implementing RequireSoftReboot support in bootc-operator, we need to
guarantee that a staged deployment cannot be applied by an ordinary reboot
before the operator explicitly applies it.
For RequireSoftReboot, the operator must ensure that an ordinary reboot
cannot accidentally apply the staged image.
If RequireSoftReboot is enabled after an update was staged normally,
bootc-operator currently cannot safely lock that existing stage. It must reject
the policy transition and report SoftRebootStageUnlocked.
Expected Behavior:
If changing the state is unsupported, the command should return a clear error
instead of successfully reporting that the image specification is unchanged.
The operation should ideally be idempotent:
- An unlocked staged deployment becomes locked.
- An already locked deployment remains locked.
- The selected image and digest do not change.
A backend-independent bootc operation would let the operator safely adopt the
existing stage instead.
- 主要言語
- Rust
- スター
- 2.3k
- フォーク
- 230
- 平均マージ
- 2日 21時間
- マージ済み PR(30日)
- 38
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
bootc-dev/bootc のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
-
triaged
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
-
area/composefs triaged
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
bootc-dev/bootc の issue をすべて見る
似ている issue
-
bug github_actions
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
registrystack/registry-stack#1393 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
longbridge/gpui-kit#3223 ·
-
bug engine
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
rocky-data/rocky#2181 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
oasisprotocol/oasis-sdk#2523 ·
-
[indexer] [QA] Add a focused test for the new NonRetryableError / assertSocketAlive() behavior. オープンbot:ai-assisted component:indexer QA-roadmap status:untriaged
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
midnightntwrk/midnight-indexer#1557 ·