Parachain Onboarding Extras (#2713)

* clear_lease

* schedule upgrade and downgrade

* fix compile

* comments
This commit is contained in:
Shawn Tabrizi
2021-03-26 22:41:07 +01:00
committed by GitHub
parent 5b363358b8
commit 67e95d1b8e
3 changed files with 114 additions and 2 deletions
@@ -25,7 +25,9 @@ use frame_support::{
};
use frame_system::ensure_root;
use runtime_parachains::{
configuration, dmp, ump, hrmp, paras::{self, ParaGenesisArgs},
configuration, dmp, ump, hrmp,
ParaLifecycle,
paras::{self, ParaGenesisArgs},
};
use primitives::v1::Id as ParaId;
use parity_scale_codec::Encode;
@@ -49,6 +51,14 @@ decl_error! {
DefinitelyNotWasm,
/// Could not schedule para cleanup.
CouldntCleanup,
/// Not a parathread.
NotParathread,
/// Not a parachain.
NotParachain,
/// Cannot upgrade parathread.
CannotUpgrade,
/// Cannot downgrade parachain.
CannotDowngrade,
}
}
@@ -78,6 +88,26 @@ decl_module! {
Ok(())
}
/// Upgrade a parathread to a parachain
#[weight = (1_000, DispatchClass::Operational)]
pub fn sudo_schedule_parathread_upgrade(origin, id: ParaId) -> DispatchResult {
ensure_root(origin)?;
// Para backend should think this is a parathread...
ensure!(paras::Module::<T>::lifecycle(id) == Some(ParaLifecycle::Parathread), Error::<T>::NotParathread);
runtime_parachains::schedule_parathread_upgrade::<T>(id).map_err(|_| Error::<T>::CannotUpgrade)?;
Ok(())
}
/// Downgrade a parachain to a parathread
#[weight = (1_000, DispatchClass::Operational)]
pub fn sudo_schedule_parachain_downgrade(origin, id: ParaId) -> DispatchResult {
ensure_root(origin)?;
// Para backend should think this is a parachain...
ensure!(paras::Module::<T>::lifecycle(id) == Some(ParaLifecycle::Parachain), Error::<T>::NotParachain);
runtime_parachains::schedule_parachain_downgrade::<T>(id).map_err(|_| Error::<T>::CannotDowngrade)?;
Ok(())
}
/// Send a downward XCM to the given para.
///
/// The given parachain should exist and the payload should not exceed the preconfigured size