Skip to main content

canic_core/api/lifecycle/
nonroot.rs

1use crate::{
2    config::schema::ConfigModel,
3    dto::{
4        abi::v1::CanisterInitPayload, env::EnvBootstrapArgs,
5        fleet_subnet_root::FleetSubnetWasmStoreInitArgs,
6    },
7    ids::{CanisterRole, ManagedCanisterBinding},
8    lifecycle,
9};
10
11///
12/// LifecycleApi
13///
14
15pub struct LifecycleApi;
16
17impl LifecycleApi {
18    /// Return the immutable Registry-issued identity retained by this application Canister.
19    pub fn managed_binding() -> Result<ManagedCanisterBinding, crate::dto::error::Error> {
20        crate::ops::runtime::env::EnvOps::managed_binding().map_err(Into::into)
21    }
22
23    pub fn init_nonroot_canister_before_bootstrap(
24        role: CanisterRole,
25        payload: CanisterInitPayload,
26        application_init_args: Option<Vec<u8>>,
27        config: ConfigModel,
28        config_source: &str,
29        config_path: &str,
30    ) {
31        lifecycle::init::nonroot::init_nonroot_canister_before_bootstrap(
32            role,
33            payload,
34            application_init_args,
35            config,
36            config_source,
37            config_path,
38        );
39    }
40
41    pub fn init_wasm_store_before_bootstrap(
42        input: FleetSubnetWasmStoreInitArgs,
43        config: ConfigModel,
44        config_source: &str,
45        config_path: &str,
46    ) {
47        lifecycle::init::nonroot::init_wasm_store_before_bootstrap(
48            input,
49            config,
50            config_source,
51            config_path,
52        );
53    }
54
55    pub fn schedule_init_nonroot_bootstrap() {
56        lifecycle::init::nonroot::schedule_init_nonroot_bootstrap();
57    }
58
59    pub fn init_local_nonroot_canister_before_bootstrap(
60        role: CanisterRole,
61        env: EnvBootstrapArgs,
62        config: ConfigModel,
63        config_source: &str,
64        config_path: &str,
65    ) {
66        lifecycle::init::nonroot::init_local_nonroot_canister_before_bootstrap(
67            role,
68            env,
69            config,
70            config_source,
71            config_path,
72        );
73    }
74
75    #[must_use]
76    pub fn post_upgrade_nonroot_canister_before_bootstrap(
77        role: CanisterRole,
78        config: ConfigModel,
79        config_source: &str,
80        config_path: &str,
81    ) -> bool {
82        lifecycle::upgrade::nonroot::post_upgrade_nonroot_canister_before_bootstrap(
83            role,
84            config,
85            config_source,
86            config_path,
87        )
88    }
89
90    pub fn schedule_post_upgrade_nonroot_bootstrap() {
91        lifecycle::upgrade::nonroot::schedule_post_upgrade_nonroot_bootstrap();
92    }
93
94    #[must_use]
95    pub fn post_upgrade_local_nonroot_canister_before_bootstrap(
96        role: CanisterRole,
97        config: ConfigModel,
98        config_source: &str,
99        config_path: &str,
100    ) -> bool {
101        lifecycle::upgrade::nonroot::post_upgrade_local_nonroot_canister_before_bootstrap(
102            role,
103            config,
104            config_source,
105            config_path,
106        )
107    }
108}