canic_core/api/
component_runtime.rs1use crate::{
8 dto::{
9 component_registry::{
10 ComponentRuntimeActivationRequest, ComponentRuntimeDirectoryPreparationRequest,
11 ComponentRuntimeDirectorySynchronizationRequest, ComponentRuntimeStatusResponse,
12 },
13 error::Error,
14 role::ComponentRuntimeOperationStatus,
15 },
16 workflow::{component_runtime, runtime::fleet_activation::FleetActivationWorkflow},
17};
18
19pub struct ComponentRuntimeApi;
24
25impl ComponentRuntimeApi {
26 pub fn configure(
28 request: ComponentRuntimeDirectoryPreparationRequest,
29 ) -> Result<crate::view::fleet_activation::ComponentRuntimeActivationTransition, Error> {
30 component_runtime::configure(request).map_err(Error::from)
31 }
32
33 pub fn prepare_directory(
34 request: ComponentRuntimeDirectoryPreparationRequest,
35 ) -> Result<ComponentRuntimeStatusResponse, Error> {
36 component_runtime::prepare_directory(request).map_err(Error::from)
37 }
38
39 pub fn status() -> Result<ComponentRuntimeStatusResponse, Error> {
40 component_runtime::status().map_err(Error::from)
41 }
42
43 pub fn operation_status(
45 operation_id: [u8; 32],
46 ) -> Result<ComponentRuntimeOperationStatus, Error> {
47 let fleet_activation = FleetActivationWorkflow::status().map_err(Error::from)?;
48 let runtime = component_runtime::status().map_err(Error::from)?;
49 if fleet_activation.identity.operation_id != operation_id
50 || runtime.operation_id != operation_id
51 {
52 return Err(Error::from_registered(
53 crate::diagnostics::codes::STATE_CONFLICT,
54 ));
55 }
56
57 Ok(ComponentRuntimeOperationStatus {
58 operation_id,
59 fleet_activation,
60 runtime,
61 })
62 }
63
64 pub fn synchronize_directory(
65 request: ComponentRuntimeDirectorySynchronizationRequest,
66 ) -> Result<ComponentRuntimeStatusResponse, Error> {
67 component_runtime::synchronize_directory(request).map_err(Error::from)
68 }
69
70 pub fn activate(
71 request: ComponentRuntimeActivationRequest,
72 ) -> Result<crate::view::fleet_activation::ComponentRuntimeActivationTransition, Error> {
73 component_runtime::activate(request).map_err(Error::from)
74 }
75}