fuchsia.update

新增:7

通訊協定

AttemptsMonitor

fuchsia.update/update.fidl 中定義的

在開始時監控更新嘗試。

想接收更新檢查進度資訊的客戶 應實作這項通訊協定,並提供用戶端 Manager.MonitorAllUpdateChecks。 如果出現 超過 2 個待處理的要求

OnStart

嘗試新的更新嘗試時呼叫。

引數:

  • |options|要求執行此要求的方式。
  • |monitor|用於接收進度更新的通訊協定。

要求

名稱類型
options AttemptOptions
monitor server_end<Monitor>

回應

<空白>

CommitStatusProvider

定義於 fuchsia.update/commit.fidl

回報目前啟動系統是否修訂的回報者。如果 更新檔案,因此:

  • 系統會將目前啟動的運算單元標示為健康狀態良好 (例如成功啟動)。
  • 替代運算單元 (如有) 會標示為無法啟動。
  • 重新啟動時,系統不會復原至舊版作業系統。
  • 舊版 OS 可能會進行垃圾收集。

在提交更新之前,系統會保留先前的 OS 版本。 這樣一來,如果我們發現新寫入的版本就會出錯 (例如本身不能 更新後,系統便可改回先前的修訂版本。

IsCurrentSystemCommitted

決定是否修訂目前啟動的系統,並立即執行 會傳回 EventPair。

  • 如果已修訂目前啟動的系統,則 ZX_USER_SIGNAL_0 信號。 被聲明為事件配對,例如並在 傳回 EventPair。
  • 假如修訂內容為待處理狀態,系統就不會在事件配對中宣告任何信號。當 系統修訂,ZX_USER_SIGNAL_0 應在事件配對中宣告。
  • 如果系統無法提交目前啟動版本,系統會提交 將會重新啟動並終止提供 CommitStatusProvider 的元件。 這將斷言 ZX_EVENTPAIR_PEER_CLOSED目前 事件配對會觀察 ZX_EVENTPAIR_PEER_CLOSED 信號。
  • 回應 event 包含權利 ZX_RIGHTS_BASIC 的 EventPair。

要求

<空白>

回應

名稱類型
event handle<eventpair>

監聽器

fuchsia.update/update.fidl 中定義的

由元件用於等待第一次軟體更新檢查完成。

新增時間:HEAD

WaitForFirstUpdateCheckToComplete

太過緊了吧。隨時都可以呼叫呼叫。只有 如果軟體更新檢查工具已完成啟動後檢查,則會傳回 且未嘗試重新啟動。

要求

<空白>

回應

<空白>

管理員

fuchsia.update/update.fidl 中定義的

用戶端可利用 Manager 通訊協定,檢查 更新或追蹤處理中的更新狀態。

Manager 提供一種透過 Manager.CheckNow 訊息。

CheckNow

立即檢查更新,並視需要追蹤狀態並 更新檢查的進度

  • 要求 options 如何執行此要求的選項。 例如:提出要求的實體屬於哪種實體? 例如:監控現有的更新檢查 已在處理 替代?

  • 要求 monitor 用於接收狀態事件的介面 進行這項更新檢查監控器無效 執行這項單一更新檢查後 停止接收任何通知, 已打烊。

  • 錯誤。如果無法啟動更新檢查,系統會傳回錯誤。 監控 (如有提供) 將不會接收任何通知。

要求

名稱類型
options CheckOptions
monitor Monitor?

回應

名稱類型
payload Manager_CheckNow_Result

MonitorAllUpdateChecks

一邊啟動更新嘗試和進行中的更新作業 就會嘗試執行回應程序。

引數:

  • |attempts_monitor|接收 |監控| 的通訊協定執行個體 持續更新嘗試。

要求

名稱類型
attempts_monitor AttemptsMonitor

PerformPendingReboot

執行任何待處理的系統重新啟動至更新的 OS, 已針對下次系統啟動時安排更新。

需在平台設為允許產品雲端硬碟時使用 重啟排程。如果系統未呼叫平台時呼叫這個方法 設定為讓產品重新啟動排程,但不會重新啟動 而系統會在更新後自行重新啟動。

在產品導向的重新啟動設定中,平台仍含有 更新後重新啟動。也就是說 已安裝,但系統未在回溯停止前重新啟動 更新作業期間,更新系統會自動重新啟動 是安全措施為了避免再次發生 需要控制重新啟動時間的產品,應將此名稱命名為 方法。

  • 如果系統正在重新啟動,則回應 rebooting 是,false 表示否 更新正在等待重新啟動。

要求

<空白>

回應

名稱類型
rebooting bool

監視器

fuchsia.update/update.fidl 中定義的

監控單一更新檢查。

想接收更新檢查進度資訊的客戶 應實作這項通訊協定,並提供用戶端 Manager.CheckNow.

OnState

接收這項更新檢查的狀態更新。

針對所有狀態變更,系統會呼叫這項要求,略過無任何狀態。 不過,訊息傳送速度會受 實作會確認訊息。

調節放送不會影響 管理員:不會在移動前等待任何確認 保持在狀態機器的下個狀態管理員只會 佇列會將 Monitor 實作項目的狀態排入接收的佇列。

在 install_update 狀態中,管理員可能會以 視需要收合多餘資訊,例如完成的分數 當 Monitor 實作沒有回應 及時處理 OnState() 要求。

  • 要求 state 更新檢查的新狀態。
  • 回應,實作方式已準備接收 Manager 中的 State

要求

名稱類型
state State

回應

<空白>

結構

Manager_CheckNow_Response

fuchsia.update/update.fidl 中定義的

<空白>

ENUMS

CheckNotStartedReason 嚴格

類型:uint32

fuchsia.update/update.fidl 中定義的

這是一組值,會由要求立即傳回 檢查是否有更新。

名稱說明
1

啟動更新檢查時發生內部錯誤。用戶端 無法對此錯誤採取有意義的行動 但可稍後再試 (發生適當的延遲,並在 多次錯誤的事件

2

如果有必要的引數或選項 (或 發生衝突),透過 CheckOptions 表格提供給 CheckNow,這是這個錯誤 。

3

在這項要求聲明之前,已有其他正在進行的更新檢查作業 執行。系統不會開始新的更新檢查。

4

太多要求檢查要求,因此無法開始更新檢查 更新作業是由用戶端在短時間內完成。

注意:用戶端「不得」試圖觸發背景更新檢查 發生頻率比 fuchsia.update.Manager 更常發生 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件

一旦客戶嘗試濫用,就會受到節流限制。

發起人嚴格

類型:uint32

fuchsia.update/update.fidl 中定義的

啟動更新檢查的人員或原因。

名稱說明
1

更新檢查是由互動式使用者啟動,或使用者 否則就會遭到封鎖並等待這項更新檢查的結果這個 只在使用者有 UI 元素或流程出現時,才應使用 即可啟動這項更新檢查。

2

更新檢查是由服務啟動,而非面向使用者的方面 以及系統的功能限制

InstallationDeferralReason 彈性

類型:uint32

fuchsia.update/update.fidl 中定義的

這是安裝更新時所提供的一組值

名稱說明
1

目前開機的系統並未安裝,因此無法安裝更新 。我們建議消費者使用 CommitStatusProvider 以決定何時要重新檢查更新檢查, 。

資料表

AttemptOptions

fuchsia.update/update.fidl 中定義的

更新嘗試監控作業的詳細資料。

Ordinal欄位類型說明
initiator Initiator

嘗試啟動這項更新的使用者或來源。這可能會影響 已執行更新檢查

CheckOptions

fuchsia.update/update.fidl 中定義的

更新檢查的設定選項。

Ordinal欄位類型說明
initiator Initiator

嘗試啟動這項更新的使用者或來源。這個輸入內容會當做輸入內容 這項政策,可能會影響更新檢查的執行方式。

這是必填欄位。

allow_attaching_to_existing_update_check bool

如果系統已在進行更新檢查,您可以選擇 將監控器附加至該進行中的更新,以免失敗 要求檢查更新。這可能會轉換 必須將 ALREADY_IN_PROGRESS 視為非錯誤 用途

CheckingForUpdatesData

fuchsia.update/update.fidl 中定義的

這是與「checking_for_updates」相關聯的資料集。 (目前無)

Ordinal欄位類型說明

ErrorCheckingForUpdateData

fuchsia.update/update.fidl 中定義的

這是與 error_checking_for_update 相關聯的資料集 時間。 (目前無)

Ordinal欄位類型說明

InstallationDeferredData

fuchsia.update/update.fidl 中定義的

這是指與 installation_deferred_by_policy 狀態。

Ordinal欄位類型說明
update UpdateInfo
deferral_reason InstallationDeferralReason

InstallationErrorData

fuchsia.update/update.fidl 中定義的

這是與 installation_error 狀態相關的資料集。 (目前無)

Ordinal欄位類型說明
update UpdateInfo
installation_progress InstallationProgress

InstallationProgress

fuchsia.update/update.fidl 中定義的

說明安裝到目前為止的更新進度。

Ordinal欄位類型說明
fraction_completed float32

安裝作業已完成的比例 [0-1.0f]。

InstallingData

fuchsia.update/update.fidl 中定義的

此為與安裝作業相關狀態相關的資料集 更新內容:

  • installing_update
  • waiting_for_reboot

Ordinal欄位類型說明
update UpdateInfo
installation_progress InstallationProgress

NoUpdateAvailableData

fuchsia.update/update.fidl 中定義的

這是與 no_update_available 狀態相關的資料集。 (目前無)

Ordinal欄位類型說明

UpdateInfo

fuchsia.update/update.fidl 中定義的

說明可安裝的更新。

Ordinal欄位類型說明
version_available string[128]

說明可用版本的字串。可能是 語意版本 (A.B.C.D) 或不透明雜湊。客戶必須 這個值僅供查看,不會用於檢查。

download_size uint64

可下載的位元組總數,以套用這項更新。

urgent bool

更新內容是否已標示為緊急狀況。預設值為 false。

聯合國

Manager_CheckNow_Result 嚴格

fuchsia.update/update.fidl 中定義的

OrdinalVariant類型說明
response Manager_CheckNow_Response
err CheckNotStartedReason

州/省嚴格

fuchsia.update/update.fidl 中定義的

監控在更新檢查期間可接收的狀態組合。

更新檢查會在進入終端機狀態時結束,如下圖所示 圖表右側的狀態,沒有箭頭從 具體做法是指示 Kubernetes 建立並維護 一或多個代表這些 Pod 的物件

狀態機器圖

    +----------------------+     +---------------------------------+
    | checking_for_updates |---->|    error_checking_for_update    |
    +----------------------+     +---------------------------------+
               |
               |                 +---------------------------------+
               +---------------->|       no_update_available       |
               |                 +---------------------------------+
               |
               |                 +---------------------------------+
               +---------------->| installation_deferred_by_policy |
               |                 +---------------------------------+
               v
    +----------------------+     +---------------------------------+
    |  installing_update   |---->|       installation_error        |
    +----------------------+     +---------------------------------+
               |
               |                 +---------------------------------+
               +---------------->|       waiting_for_reboot        |
                                 +---------------------------------+
OrdinalVariant類型說明
checking_for_updates CheckingForUpdatesData

管理員目前正在檢查更新。

下一次各州:

  • installing_update 項更新可執行並依政策允許
  • 發生錯誤時:error_checking_for_update
  • update_deferred_by_policy 項更新可更新,但已因政策延遲
error_checking_for_update ErrorCheckingForUpdateData

管理員檢查 文章。

這是個終端狀態

no_update_available NoUpdateAvailableData

目前無法更新。

這是個終端狀態

installation_deferred_by_policy InstallationDeferredData

管理員已找到可用的更新,但 Google 並未採取行動 本次異動是受到政策限制影響

這是個終端狀態

installing_update InstallingData

管理員正在安裝可用的更新,

下一次各州:

  • 成功時 waiting_for_reboot
  • 發生錯誤時:installation_error
waiting_for_reboot InstallingData

更新安裝完成,裝置正在等待重新啟動。

下一次各州:

  • (無,裝置重新啟動)

這是個終端狀態

installation_error InstallationErrorData

「管理員」在安裝更新時遇到更新。

這是個終端狀態

觀測站

名稱類型說明
MAX_VERSION_STRING_SIZE 128 uint32

這是版本字串,將由 通訊協定