pub struct DynamicPoolMaintenanceController<R>where
R: DeviceRuntime,{ /* private fields */ }Expand description
Plan-owner capability for changing physical dynamic-pool residency. It is
created once during provisioning, is intentionally not Clone, and cannot
be derived from any request, sequence, step, invocation, or static lease.
use ferrum_interfaces::vnext::{AdmittedRequestResources, DeviceRuntime};
fn request_cannot_mint<R: DeviceRuntime>(request: &AdmittedRequestResources<R>) {
let _ = request.dynamic_pool_maintenance_controller();
}use ferrum_interfaces::vnext::{DeviceRuntime, StaticProvisioningLease};
fn lease_cannot_mint<R: DeviceRuntime>(lease: &StaticProvisioningLease<R>) {
let _ = lease.dynamic_pool_maintenance_controller();
}Implementations§
Source§impl<R> DynamicPoolMaintenanceController<R>where
R: DeviceRuntime,
impl<R> DynamicPoolMaintenanceController<R>where
R: DeviceRuntime,
pub fn pool_ids(&self) -> impl ExactSizeIterator<Item = &DynamicBackingPoolId>
Sourcepub fn status(&self) -> Result<DynamicPoolMaintenanceStatus, VNextError>
pub fn status(&self) -> Result<DynamicPoolMaintenanceStatus, VNextError>
Returns one exact domain-to-pool and physical-capacity snapshot. The process-wide usable ceiling is the conservative minimum across all live plan budgets; plan claims remain separately visible.
Sourcepub fn initialize_pool(
&self,
pool_id: &DynamicBackingPoolId,
) -> Result<Option<DynamicPoolGrowthReceipt>, VNextError>
pub fn initialize_pool( &self, pool_id: &DynamicBackingPoolId, ) -> Result<Option<DynamicPoolGrowthReceipt>, VNextError>
Makes the core-derived runnable minimum resident. A second call is a
no-op and returns None; it never creates a duplicate initial chunk.
Sourcepub fn initialize_pools(
&self,
pool_ids: &[DynamicBackingPoolId],
) -> Result<DynamicPoolGrowthBatchReceipt, VNextError>
pub fn initialize_pools( &self, pool_ids: &[DynamicBackingPoolId], ) -> Result<DynamicPoolGrowthBatchReceipt, VNextError>
Initializes several pools in one canonical all-or-nothing publication.
Sourcepub fn grow_pool(
&self,
pool_id: &DynamicBackingPoolId,
requested_bytes: u64,
) -> Result<DynamicPoolGrowthReceipt, VNextError>
pub fn grow_pool( &self, pool_id: &DynamicBackingPoolId, requested_bytes: u64, ) -> Result<DynamicPoolGrowthReceipt, VNextError>
Adds one explicitly-sized resident chunk. The physical allocation is globally reserved before the runtime is called and published only after allocation, descriptor validation, and installation all succeed.
Sourcepub fn grow_pools(
&self,
requests: Vec<DynamicPoolGrowthRequest>,
) -> Result<DynamicPoolGrowthBatchReceipt, VNextError>
pub fn grow_pools( &self, requests: Vec<DynamicPoolGrowthRequest>, ) -> Result<DynamicPoolGrowthBatchReceipt, VNextError>
Grows distinct pools under one global reservation and one capacity epoch publication. Input order is ignored; duplicate pools are rejected.
Sourcepub fn maintain_for_admission_deferred(
&self,
deferred: &AdmissionDeferred,
) -> Result<DynamicDeferredMaintenanceOutcome, VNextError>
pub fn maintain_for_admission_deferred( &self, deferred: &AdmissionDeferred, ) -> Result<DynamicDeferredMaintenanceOutcome, VNextError>
Materializes fit capacity that logical admission identified as growable but that immediate backing preparation does not yet claim.
Sourcepub fn release_quarantined_chunks(
&self,
) -> Result<DynamicPoolQuarantineReleaseReceipt, VNextError>
pub fn release_quarantined_chunks( &self, ) -> Result<DynamicPoolQuarantineReleaseReceipt, VNextError>
Explicitly releases only unclaimable quarantined chunks. Resident chunks and logical totals are unchanged; the returned grants are dropped after all pool locks have been released.