Improve docs of broker pallet (#3980)

Small adjustments which should make understanding what is going on much
easier for future readers.

Initialization is a bit messy, the very least we should do is adding
documentation to make it harder to use wrongly.

I was thinking about calling `request_core_count` right from
`start_sales`, but as explained in the docs, this is not necessarily
what you want.

---------

Co-authored-by: eskimor <eskimor@no-such-url.com>
Co-authored-by: Bastian Köcher <git@kchr.de>
Co-authored-by: Dónal Murray <donal.murray@parity.io>
This commit is contained in:
eskimor
2024-04-12 12:23:49 +02:00
committed by GitHub
parent b1db5f3a90
commit a64009ae00
2 changed files with 18 additions and 6 deletions
@@ -81,7 +81,8 @@ impl<T: Config> Pallet<T> {
last_timeslice: Self::current_timeslice(), last_timeslice: Self::current_timeslice(),
}; };
let now = frame_system::Pallet::<T>::block_number(); let now = frame_system::Pallet::<T>::block_number();
let new_sale = SaleInfoRecord { // Imaginary old sale for bootstrapping the first actual sale:
let old_sale = SaleInfoRecord {
sale_start: now, sale_start: now,
leadin_length: Zero::zero(), leadin_length: Zero::zero(),
price, price,
@@ -94,7 +95,7 @@ impl<T: Config> Pallet<T> {
cores_sold: 0, cores_sold: 0,
}; };
Self::deposit_event(Event::<T>::SalesStarted { price, core_count }); Self::deposit_event(Event::<T>::SalesStarted { price, core_count });
Self::rotate_sale(new_sale, &config, &status); Self::rotate_sale(old_sale, &config, &status);
Status::<T>::put(&status); Status::<T>::put(&status);
Ok(()) Ok(())
} }
+15 -4
View File
@@ -552,16 +552,27 @@ pub mod pallet {
/// ///
/// - `origin`: Must be Root or pass `AdminOrigin`. /// - `origin`: Must be Root or pass `AdminOrigin`.
/// - `initial_price`: The price of Bulk Coretime in the first sale. /// - `initial_price`: The price of Bulk Coretime in the first sale.
/// - `core_count`: The number of cores which can be allocated. /// - `total_core_count`: This is the total number of cores the relay chain should have
/// after the sale concludes.
///
/// NOTE: This function does not actually request that new core count from the relay chain.
/// You need to make sure to call `request_core_count` afterwards to bring the relay chain
/// in sync.
///
/// When to call the function depends on the new core count. If it is larger than what it
/// was before, you can call it immediately or even before `start_sales` as non allocated
/// cores will just be `Idle`. If you are actually reducing the number of cores, you should
/// call `request_core_count`, right before the next sale, to avoid shutting down tasks too
/// early.
#[pallet::call_index(4)] #[pallet::call_index(4)]
#[pallet::weight(T::WeightInfo::start_sales((*core_count).into()))] #[pallet::weight(T::WeightInfo::start_sales((*total_core_count).into()))]
pub fn start_sales( pub fn start_sales(
origin: OriginFor<T>, origin: OriginFor<T>,
initial_price: BalanceOf<T>, initial_price: BalanceOf<T>,
core_count: CoreIndex, total_core_count: CoreIndex,
) -> DispatchResultWithPostInfo { ) -> DispatchResultWithPostInfo {
T::AdminOrigin::ensure_origin_or_root(origin)?; T::AdminOrigin::ensure_origin_or_root(origin)?;
Self::do_start_sales(initial_price, core_count)?; Self::do_start_sales(initial_price, total_core_count)?;
Ok(Pays::No.into()) Ok(Pays::No.into())
} }