From e138e7bcf1e3e046f9fc9d63ddb3354963363af6 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Fri, 10 Jan 2025 16:56:48 +0100 Subject: [PATCH 1/2] feat: remove post_upgrade observatory for migration Signed-off-by: David Dal Busco --- src/observatory/src/lib.rs | 29 ++++--------- src/observatory/src/upgrade/impls.rs | 11 ----- src/observatory/src/upgrade/mod.rs | 2 - src/observatory/src/upgrade/types.rs | 61 ---------------------------- 4 files changed, 7 insertions(+), 96 deletions(-) delete mode 100644 src/observatory/src/upgrade/impls.rs delete mode 100644 src/observatory/src/upgrade/mod.rs delete mode 100644 src/observatory/src/upgrade/types.rs diff --git a/src/observatory/src/lib.rs b/src/observatory/src/lib.rs index 2f37f5a65..28c511b20 100644 --- a/src/observatory/src/lib.rs +++ b/src/observatory/src/lib.rs @@ -8,7 +8,6 @@ mod random; mod store; mod templates; mod types; -mod upgrade; use crate::console::assert_mission_control_center; use crate::guards::{caller_is_admin_controller, caller_is_not_anonymous}; @@ -23,15 +22,14 @@ use crate::store::heap::{ use crate::store::stable::get_notifications; use crate::types::interface::{GetNotifications, NotifyStatus}; use crate::types::state::{Env, HeapState, State}; -use crate::upgrade::types::upgrade::UpgradeStableState; -use ciborium::into_writer; +use ciborium::{from_reader, into_writer}; use ic_cdk::api::management_canister::http_request::{HttpResponse, TransformArgs}; use ic_cdk::{caller, storage, trap}; use ic_cdk_macros::{export_candid, init, post_upgrade, pre_upgrade, query, update}; use junobuild_shared::controllers::init_controllers; use junobuild_shared::types::interface::{DeleteControllersArgs, NotifyArgs, SetControllersArgs}; use junobuild_shared::types::state::Controllers; -use junobuild_shared::upgrade::write_pre_upgrade; +use junobuild_shared::upgrade::{read_post_upgrade, write_pre_upgrade}; #[init] fn init() { @@ -64,26 +62,13 @@ fn pre_upgrade() { #[post_upgrade] fn post_upgrade() { - // TODO: remove once stable memory introduced on mainnet - let (upgrade_stable,): (UpgradeStableState,) = storage::stable_restore().unwrap(); + let memory = get_memory_upgrades(); + let state_bytes = read_post_upgrade(&memory); - let heap = HeapState::from(&upgrade_stable); + let state: State = from_reader(&*state_bytes) + .expect("Failed to decode the state of the observatory in post_upgrade hook."); - STATE.with(|state| { - *state.borrow_mut() = State { - heap, - stable: init_stable_state(), - } - }); - - // TODO: uncomment once stable memory introduced on mainnet - // let memory = get_memory_upgrades(); - // let state_bytes = read_post_upgrade(&memory); - - // let state: State = from_reader(&*state_bytes) - // .expect("Failed to decode the state of the observatory in post_upgrade hook."); - - // STATE.with(|s| *s.borrow_mut() = state); + STATE.with(|s| *s.borrow_mut() = state); init_runtime_state(); diff --git a/src/observatory/src/upgrade/impls.rs b/src/observatory/src/upgrade/impls.rs deleted file mode 100644 index a5cf4e0fc..000000000 --- a/src/observatory/src/upgrade/impls.rs +++ /dev/null @@ -1,11 +0,0 @@ -use crate::types::state::HeapState; -use crate::upgrade::types::upgrade::UpgradeStableState; - -impl From<&UpgradeStableState> for HeapState { - fn from(state: &UpgradeStableState) -> Self { - HeapState { - controllers: state.controllers.clone(), - env: None, - } - } -} diff --git a/src/observatory/src/upgrade/mod.rs b/src/observatory/src/upgrade/mod.rs deleted file mode 100644 index fb880c018..000000000 --- a/src/observatory/src/upgrade/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod impls; -pub mod types; diff --git a/src/observatory/src/upgrade/types.rs b/src/observatory/src/upgrade/types.rs deleted file mode 100644 index b80c0a56a..000000000 --- a/src/observatory/src/upgrade/types.rs +++ /dev/null @@ -1,61 +0,0 @@ -pub mod upgrade { - use candid::{CandidType, Principal}; - use junobuild_shared::types::state::{ - ArchiveTime, Controllers, Metadata, MissionControlId, SegmentsStatuses, Timestamp, UserId, - Version, - }; - use serde::Deserialize; - use std::collections::HashMap; - - pub type CronTabs = HashMap; - - #[derive(Default, CandidType, Deserialize, Clone)] - pub struct UpgradeStableState { - pub controllers: Controllers, - pub cron_tabs: CronTabs, - pub archive: Archive, - } - - #[derive(CandidType, Deserialize, Clone)] - pub struct CronTab { - pub mission_control_id: MissionControlId, - pub cron_jobs: CronJobs, - pub created_at: Timestamp, - pub updated_at: Timestamp, - pub version: Option, - } - - #[derive(Default, CandidType, Deserialize, Clone)] - pub struct Archive { - pub statuses: HashMap, - } - - #[derive(CandidType, Deserialize, Clone)] - pub struct ArchiveStatuses { - pub timestamp: ArchiveTime, - pub statuses: Result, - } - - #[derive(Default, CandidType, Deserialize, Clone)] - pub struct CronJobs { - pub metadata: Metadata, - pub statuses: CronJobStatuses, - } - - #[derive(Default, CandidType, Deserialize, Clone)] - pub struct CronJobStatuses { - pub enabled: bool, - pub cycles_threshold: Option, - pub mission_control_cycles_threshold: Option, - pub satellites: CronJobStatusesSegments, - pub orbiters: CronJobStatusesSegments, - } - - pub type CronJobStatusesSegments = HashMap; - - #[derive(Default, CandidType, Deserialize, Clone)] - pub struct CronJobStatusesConfig { - pub enabled: bool, - pub cycles_threshold: Option, - } -} From 6f56e7e5ef9dc2401f656d868b141dc85b4d5a39 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Fri, 10 Jan 2025 16:58:35 +0100 Subject: [PATCH 2/2] chore: remove unused import Signed-off-by: David Dal Busco --- src/observatory/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/observatory/src/lib.rs b/src/observatory/src/lib.rs index 28c511b20..e589e3c1d 100644 --- a/src/observatory/src/lib.rs +++ b/src/observatory/src/lib.rs @@ -24,7 +24,7 @@ use crate::types::interface::{GetNotifications, NotifyStatus}; use crate::types::state::{Env, HeapState, State}; use ciborium::{from_reader, into_writer}; use ic_cdk::api::management_canister::http_request::{HttpResponse, TransformArgs}; -use ic_cdk::{caller, storage, trap}; +use ic_cdk::{caller, trap}; use ic_cdk_macros::{export_candid, init, post_upgrade, pre_upgrade, query, update}; use junobuild_shared::controllers::init_controllers; use junobuild_shared::types::interface::{DeleteControllersArgs, NotifyArgs, SetControllersArgs};