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    #[doc(hidden)]
19    pub fn configure_component_runtime_with_automatic_topup(
20        request: crate::dto::component_registry::ComponentRuntimeDirectoryPreparationRequest,
21    ) -> Result<
22        crate::view::fleet_activation::ComponentRuntimeActivationTransition,
23        crate::dto::error::Error,
24    > {
25        crate::workflow::component_runtime::configure_with_automatic_topup(request)
26            .map_err(Into::into)
27    }
28
29    /// Return the immutable Registry-issued identity retained by this application Canister.
30    pub fn managed_binding() -> Result<ManagedCanisterBinding, crate::dto::error::Error> {
31        crate::ops::runtime::env::EnvOps::managed_binding().map_err(Into::into)
32    }
33
34    pub fn init_nonroot_canister_before_bootstrap(
35        role: CanisterRole,
36        payload: CanisterInitPayload,
37        application_init_args: Option<Vec<u8>>,
38        embedded_release_build_id: Option<&str>,
39        config: ConfigModel,
40        config_source: &str,
41        config_path: &str,
42    ) {
43        lifecycle::init::nonroot::init_nonroot_canister_before_bootstrap(
44            role,
45            payload,
46            application_init_args,
47            embedded_release_build_id,
48            config,
49            config_source,
50            config_path,
51        );
52    }
53
54    pub fn init_wasm_store_before_bootstrap(
55        input: FleetSubnetWasmStoreInitArgs,
56        embedded_release_build_id: Option<&str>,
57        config: ConfigModel,
58        config_source: &str,
59        config_path: &str,
60    ) {
61        lifecycle::init::nonroot::init_wasm_store_before_bootstrap(
62            input,
63            embedded_release_build_id,
64            config,
65            config_source,
66            config_path,
67        );
68    }
69
70    pub fn schedule_init_nonroot_bootstrap() {
71        lifecycle::init::nonroot::schedule_init_nonroot_bootstrap();
72    }
73
74    pub fn init_local_nonroot_canister_before_bootstrap(
75        role: CanisterRole,
76        env: EnvBootstrapArgs,
77        config: ConfigModel,
78        config_source: &str,
79        config_path: &str,
80    ) {
81        lifecycle::init::nonroot::init_local_nonroot_canister_before_bootstrap(
82            role,
83            env,
84            config,
85            config_source,
86            config_path,
87        );
88    }
89
90    #[doc(hidden)]
91    pub fn init_local_nonroot_canister_with_automatic_topup_before_bootstrap(
92        role: CanisterRole,
93        env: EnvBootstrapArgs,
94        config: ConfigModel,
95        config_source: &str,
96        config_path: &str,
97    ) {
98        lifecycle::init::nonroot::init_local_nonroot_canister_with_automatic_topup_before_bootstrap(
99            role,
100            env,
101            config,
102            config_source,
103            config_path,
104        );
105    }
106
107    #[must_use]
108    pub fn post_upgrade_nonroot_canister_before_bootstrap(
109        role: CanisterRole,
110        config: ConfigModel,
111        config_source: &str,
112        config_path: &str,
113    ) -> bool {
114        lifecycle::upgrade::nonroot::post_upgrade_nonroot_canister_before_bootstrap(
115            role,
116            config,
117            config_source,
118            config_path,
119        )
120    }
121
122    #[doc(hidden)]
123    #[must_use]
124    pub fn post_upgrade_nonroot_canister_with_automatic_topup_before_bootstrap(
125        role: CanisterRole,
126        config: ConfigModel,
127        config_source: &str,
128        config_path: &str,
129    ) -> bool {
130        lifecycle::upgrade::nonroot::post_upgrade_nonroot_canister_with_automatic_topup_before_bootstrap(
131            role,
132            config,
133            config_source,
134            config_path,
135        )
136    }
137
138    pub fn schedule_post_upgrade_nonroot_bootstrap() {
139        lifecycle::upgrade::nonroot::schedule_post_upgrade_nonroot_bootstrap();
140    }
141
142    #[must_use]
143    pub fn post_upgrade_local_nonroot_canister_before_bootstrap(
144        role: CanisterRole,
145        config: ConfigModel,
146        config_source: &str,
147        config_path: &str,
148    ) -> bool {
149        lifecycle::upgrade::nonroot::post_upgrade_local_nonroot_canister_before_bootstrap(
150            role,
151            config,
152            config_source,
153            config_path,
154        )
155    }
156
157    #[doc(hidden)]
158    #[must_use]
159    pub fn post_upgrade_local_nonroot_canister_with_automatic_topup_before_bootstrap(
160        role: CanisterRole,
161        config: ConfigModel,
162        config_source: &str,
163        config_path: &str,
164    ) -> bool {
165        lifecycle::upgrade::nonroot::post_upgrade_local_nonroot_canister_with_automatic_topup_before_bootstrap(
166            role,
167            config,
168            config_source,
169            config_path,
170        )
171    }
172}