Drop unused source readiness policy

This commit is contained in:
andrussal 2026-03-08 13:45:39 +01:00
parent 3f8e287c68
commit 3ea3fffd1f
6 changed files with 10 additions and 71 deletions

View File

@ -6,7 +6,6 @@ use tracing::{debug, info};
use super::{
Application, AttachSource, DeploymentPolicy, DynError, ExternalNodeSource,
HttpReadinessRequirement, NodeControlCapability, ObservabilityCapability, ScenarioSources,
SourceReadinessPolicy,
builder_ops::CoreBuilderAccess,
expectation::Expectation,
runtime::{
@ -44,7 +43,6 @@ pub struct Scenario<E: Application, Caps = ()> {
expectation_cooldown: Duration,
deployment_policy: DeploymentPolicy,
sources: ScenarioSources,
source_readiness_policy: SourceReadinessPolicy,
source_orchestration_plan: SourceOrchestrationPlan,
capabilities: Caps,
}
@ -58,7 +56,6 @@ impl<E: Application, Caps> Scenario<E, Caps> {
expectation_cooldown: Duration,
deployment_policy: DeploymentPolicy,
sources: ScenarioSources,
source_readiness_policy: SourceReadinessPolicy,
source_orchestration_plan: SourceOrchestrationPlan,
capabilities: Caps,
) -> Self {
@ -70,7 +67,6 @@ impl<E: Application, Caps> Scenario<E, Caps> {
expectation_cooldown,
deployment_policy,
sources,
source_readiness_policy,
source_orchestration_plan,
capabilities,
}
@ -116,15 +112,6 @@ impl<E: Application, Caps> Scenario<E, Caps> {
self.deployment_policy
}
#[must_use]
/// Selected source readiness policy.
///
/// This is currently reserved for future mixed-source orchestration and
/// does not change runtime behavior yet.
pub const fn source_readiness_policy(&self) -> SourceReadinessPolicy {
self.source_readiness_policy
}
#[must_use]
pub fn sources(&self) -> &ScenarioSources {
&self.sources
@ -151,7 +138,6 @@ pub struct Builder<E: Application, Caps = ()> {
expectation_cooldown: Option<Duration>,
deployment_policy: DeploymentPolicy,
sources: ScenarioSources,
source_readiness_policy: SourceReadinessPolicy,
capabilities: Caps,
}
@ -256,11 +242,6 @@ macro_rules! impl_common_builder_methods {
self.map_core_builder(|builder| builder.with_external_node(node))
}
#[must_use]
pub fn with_source_readiness_policy(self, policy: SourceReadinessPolicy) -> Self {
self.map_core_builder(|builder| builder.with_source_readiness_policy(policy))
}
#[must_use]
pub fn with_external_only_sources(self) -> Self {
self.map_core_builder(|builder| builder.with_external_only_sources())
@ -350,7 +331,6 @@ impl<E: Application, Caps: Default> Builder<E, Caps> {
expectation_cooldown: None,
deployment_policy: DeploymentPolicy::default(),
sources: ScenarioSources::default(),
source_readiness_policy: SourceReadinessPolicy::default(),
capabilities: Caps::default(),
}
}
@ -453,7 +433,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
expectation_cooldown,
deployment_policy,
sources,
source_readiness_policy,
..
} = self;
@ -466,7 +445,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
expectation_cooldown,
deployment_policy,
sources,
source_readiness_policy,
capabilities,
}
}
@ -579,16 +557,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
self
}
#[must_use]
/// Configure source readiness policy metadata.
///
/// This is currently reserved for future mixed-source orchestration and
/// does not change runtime behavior yet.
pub fn with_source_readiness_policy(mut self, policy: SourceReadinessPolicy) -> Self {
self.source_readiness_policy = policy;
self
}
#[must_use]
pub fn with_external_only_sources(mut self) -> Self {
self.sources = self.sources.into_external_only();
@ -612,8 +580,7 @@ impl<E: Application, Caps> Builder<E, Caps> {
let descriptors = parts.resolve_deployment()?;
let run_plan = parts.run_plan();
let run_metrics = RunMetrics::new(run_plan.duration);
let source_orchestration_plan =
build_source_orchestration_plan(parts.sources(), parts.source_readiness_policy)?;
let source_orchestration_plan = build_source_orchestration_plan(parts.sources())?;
initialize_components(
&descriptors,
@ -640,7 +607,6 @@ impl<E: Application, Caps> Builder<E, Caps> {
run_plan.expectation_cooldown,
parts.deployment_policy,
parts.sources,
parts.source_readiness_policy,
source_orchestration_plan,
parts.capabilities,
))
@ -661,7 +627,6 @@ struct BuilderParts<E: Application, Caps> {
expectation_cooldown: Option<Duration>,
deployment_policy: DeploymentPolicy,
sources: ScenarioSources,
source_readiness_policy: SourceReadinessPolicy,
capabilities: Caps,
}
@ -676,7 +641,6 @@ impl<E: Application, Caps> BuilderParts<E, Caps> {
expectation_cooldown,
deployment_policy,
sources,
source_readiness_policy,
capabilities,
..
} = builder;
@ -690,7 +654,6 @@ impl<E: Application, Caps> BuilderParts<E, Caps> {
expectation_cooldown,
deployment_policy,
sources,
source_readiness_policy,
capabilities,
}
}
@ -715,10 +678,8 @@ impl<E: Application, Caps> BuilderParts<E, Caps> {
fn build_source_orchestration_plan(
sources: &ScenarioSources,
readiness_policy: SourceReadinessPolicy,
) -> Result<SourceOrchestrationPlan, ScenarioBuildError> {
SourceOrchestrationPlan::try_from_sources(sources, readiness_policy)
.map_err(source_plan_error_to_build_error)
SourceOrchestrationPlan::try_from_sources(sources).map_err(source_plan_error_to_build_error)
}
fn source_plan_error_to_build_error(error: SourceOrchestrationPlanError) -> ScenarioBuildError {

View File

@ -51,7 +51,7 @@ pub use runtime::{
wait_for_http_ports_with_host_and_requirement, wait_for_http_ports_with_requirement,
wait_http_readiness, wait_until_stable,
};
pub use sources::{AttachSource, ExternalNodeSource, ScenarioSources, SourceReadinessPolicy};
pub use sources::{AttachSource, ExternalNodeSource, ScenarioSources};
pub use workload::Workload;
pub use crate::env::Application;

View File

@ -1,4 +1,4 @@
use crate::scenario::{AttachSource, ExternalNodeSource, ScenarioSources, SourceReadinessPolicy};
use crate::scenario::{AttachSource, ExternalNodeSource, ScenarioSources};
/// Explicit descriptor for managed node sourcing.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
@ -33,7 +33,6 @@ pub(crate) enum SourceOrchestrationMode {
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct SourceOrchestrationPlan {
mode: SourceOrchestrationMode,
readiness_policy: SourceReadinessPolicy,
}
/// Validation failure while building orchestration plan from sources.
@ -46,14 +45,10 @@ pub enum SourceOrchestrationPlanError {
impl SourceOrchestrationPlan {
pub fn try_from_sources(
sources: &ScenarioSources,
readiness_policy: SourceReadinessPolicy,
) -> Result<Self, SourceOrchestrationPlanError> {
let mode = mode_from_sources(sources);
Ok(Self {
mode,
readiness_policy,
})
Ok(Self { mode })
}
#[must_use]
@ -74,14 +69,13 @@ impl SourceOrchestrationPlan {
#[cfg(test)]
mod tests {
use super::{SourceOrchestrationMode, SourceOrchestrationPlan};
use crate::scenario::{AttachSource, ScenarioSources, SourceReadinessPolicy};
use crate::scenario::{AttachSource, ScenarioSources};
#[test]
fn attached_sources_are_planned() {
let sources = ScenarioSources::attached(AttachSource::compose(vec!["node-0".to_string()]));
let plan =
SourceOrchestrationPlan::try_from_sources(&sources, SourceReadinessPolicy::AllReady)
.expect("attached sources should build a source orchestration plan");
let plan = SourceOrchestrationPlan::try_from_sources(&sources)
.expect("attached sources should build a source orchestration plan");
assert!(matches!(
plan.mode(),

View File

@ -41,10 +41,7 @@ pub enum SourceResolveError {
pub fn build_source_orchestration_plan<E: Application, Caps>(
scenario: &Scenario<E, Caps>,
) -> Result<SourceOrchestrationPlan, SourceOrchestrationPlanError> {
SourceOrchestrationPlan::try_from_sources(
scenario.sources(),
scenario.source_readiness_policy(),
)
SourceOrchestrationPlan::try_from_sources(scenario.sources())
}
/// Resolves runtime source nodes via unified providers from orchestration plan.

View File

@ -1,3 +1,3 @@
mod model;
pub use model::{AttachSource, ExternalNodeSource, ScenarioSources, SourceReadinessPolicy};
pub use model::{AttachSource, ExternalNodeSource, ScenarioSources};

View File

@ -70,19 +70,6 @@ impl ExternalNodeSource {
}
}
/// Planned readiness strategy for mixed managed/attached/external sources.
#[derive(Clone, Copy, Debug, Eq, PartialEq, Default)]
pub enum SourceReadinessPolicy {
/// Phase 1 default: require every known node to pass readiness checks.
#[default]
AllReady,
/// Optional relaxed policy for large/partial environments.
Quorum,
/// Future policy for per-source constraints (for example managed minimum
/// plus overall quorum).
SourceAware,
}
/// Source model that makes invalid managed+attached combinations
/// unrepresentable by type.
#[derive(Clone, Debug, Eq, PartialEq)]