Current section
Files
Jump to
Current section
Files
src/grisp_updater_system.erl
-module(grisp_updater_system).
%--- Includes ------------------------------------------------------------------
-include("grisp_updater.hrl").
%--- Types ---------------------------------------------------------------------
-type system_id() :: non_neg_integer().
-export_type([system_id/0]).
%--- Behaviour Definition ------------------------------------------------------
-callback system_init(Opts :: map()) ->
{ok, State :: term()} | {error, term()}.
-callback system_get_global_target(State :: term()) ->
GlobalTarget :: target().
-callback system_get_systems(State :: term()) ->
{
% The system the current software booted from
BootSysId :: system_id() | removable,
% The system that is currently validated
ValidatedSysId :: system_id(),
% The system that will boot during next restart
NextSysId :: system_id()
}.
-callback system_get_updatable(State :: term()) ->
{ok, SysId :: system_id(), SystemTarget :: target()} | {error, Reason :: term}.
-callback system_prepare_update(State :: term(), SysId :: system_id()) ->
{ok, State :: term()} | {error, term()}.
-callback system_prepare_target(State :: term(), SysId :: system_id(),
SysTarget :: target(), Spec :: target_spec()) ->
{ok, Target :: target()}.
-callback system_set_updated(State :: term(), SysId :: system_id()) ->
{ok, State :: term()} | {error, term()}.
-callback system_cancel_update(State :: term()) ->
{ok, State :: term()}.
-callback system_validate(State :: term()) ->
{ok, State :: term()} | {error, term()}.
-callback system_object_updated(State :: term(), Object :: #object{},
Target :: #target{}) ->
{ok, State :: term()} | {error, term()}.
-callback system_updated(State :: term()) ->
{ok, State :: term()} | {error, term()}.
-callback system_terminate(State :: term(), Reason :: term()) ->
ok.
-optional_callbacks([system_get_updatable/1, system_prepare_target/4,
system_object_updated/3, system_updated/1]).