mirror of
https://github.com/logos-blockchain/logos-blockchain-testing.git
synced 2026-05-05 17:29:29 +00:00
Align attach wording with existing-cluster mode
This commit is contained in:
parent
aa838ecca9
commit
1268607a68
@ -2,7 +2,7 @@ use async_trait::async_trait;
|
|||||||
|
|
||||||
use crate::scenario::{Application, DynError, ExistingCluster};
|
use crate::scenario::{Application, DynError, ExistingCluster};
|
||||||
|
|
||||||
/// Attached node discovered from an existing external cluster source.
|
/// Node discovered from an existing cluster descriptor.
|
||||||
#[derive(Clone, Debug)]
|
#[derive(Clone, Debug)]
|
||||||
pub struct AttachedNode<E: Application> {
|
pub struct AttachedNode<E: Application> {
|
||||||
/// Optional stable identity hint used by runtime inventory dedup logic.
|
/// Optional stable identity hint used by runtime inventory dedup logic.
|
||||||
@ -14,7 +14,7 @@ pub struct AttachedNode<E: Application> {
|
|||||||
/// Errors returned by attach providers while discovering attached nodes.
|
/// Errors returned by attach providers while discovering attached nodes.
|
||||||
#[derive(Debug, thiserror::Error)]
|
#[derive(Debug, thiserror::Error)]
|
||||||
pub enum AttachProviderError {
|
pub enum AttachProviderError {
|
||||||
#[error("attach source is not supported by this provider: {attach_source:?}")]
|
#[error("existing cluster descriptor is not supported by this provider: {attach_source:?}")]
|
||||||
UnsupportedSource { attach_source: ExistingCluster },
|
UnsupportedSource { attach_source: ExistingCluster },
|
||||||
#[error("attach discovery failed: {source}")]
|
#[error("attach discovery failed: {source}")]
|
||||||
Discovery {
|
Discovery {
|
||||||
@ -23,13 +23,13 @@ pub enum AttachProviderError {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Internal adapter interface for discovering pre-existing nodes.
|
/// Internal adapter interface for discovering nodes in an existing cluster.
|
||||||
///
|
///
|
||||||
/// This is scaffolding-only in phase 1 and is intentionally not wired into
|
/// This is scaffolding-only in phase 1 and is intentionally not wired into
|
||||||
/// deployer runtime orchestration yet.
|
/// deployer runtime orchestration yet.
|
||||||
#[async_trait]
|
#[async_trait]
|
||||||
pub trait AttachProvider<E: Application>: Send + Sync {
|
pub trait AttachProvider<E: Application>: Send + Sync {
|
||||||
/// Discovers node clients for the requested attach source.
|
/// Discovers node clients for the requested existing cluster.
|
||||||
async fn discover(
|
async fn discover(
|
||||||
&self,
|
&self,
|
||||||
source: &ExistingCluster,
|
source: &ExistingCluster,
|
||||||
|
|||||||
@ -176,12 +176,12 @@ impl<E: ComposeDeployEnv> ClusterWaitHandle<E> for ComposeAttachedClusterWait<E>
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn compose_wait_request(source: &ExistingCluster) -> Result<ComposeAttachRequest<'_>, DynError> {
|
fn compose_wait_request(source: &ExistingCluster) -> Result<ComposeAttachRequest<'_>, DynError> {
|
||||||
let project = source
|
let project = source.compose_project().ok_or_else(|| {
|
||||||
.compose_project()
|
DynError::from("compose cluster wait requires a compose existing-cluster descriptor")
|
||||||
.ok_or_else(|| DynError::from("compose cluster wait requires a compose attach source"))?;
|
})?;
|
||||||
let services = source
|
let services = source.compose_services().ok_or_else(|| {
|
||||||
.compose_services()
|
DynError::from("compose cluster wait requires a compose existing-cluster descriptor")
|
||||||
.ok_or_else(|| DynError::from("compose cluster wait requires a compose attach source"))?;
|
})?;
|
||||||
|
|
||||||
Ok(ComposeAttachRequest { project, services })
|
Ok(ComposeAttachRequest { project, services })
|
||||||
}
|
}
|
||||||
|
|||||||
@ -73,9 +73,9 @@ impl<E: ComposeDeployEnv> DeploymentOrchestrator<E> {
|
|||||||
|
|
||||||
if matches!(scenario.cluster_mode(), ClusterMode::ExistingCluster) {
|
if matches!(scenario.cluster_mode(), ClusterMode::ExistingCluster) {
|
||||||
return self
|
return self
|
||||||
.deploy_attached_only::<Caps>(scenario, source_plan)
|
.deploy_existing_cluster::<Caps>(scenario, source_plan)
|
||||||
.await
|
.await
|
||||||
.map(|runner| (runner, attached_metadata(scenario)));
|
.map(|runner| (runner, existing_cluster_metadata(scenario)));
|
||||||
}
|
}
|
||||||
|
|
||||||
let deployment = scenario.deployment();
|
let deployment = scenario.deployment();
|
||||||
@ -138,7 +138,7 @@ impl<E: ComposeDeployEnv> DeploymentOrchestrator<E> {
|
|||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn deploy_attached_only<Caps>(
|
async fn deploy_existing_cluster<Caps>(
|
||||||
&self,
|
&self,
|
||||||
scenario: &Scenario<E, Caps>,
|
scenario: &Scenario<E, Caps>,
|
||||||
source_plan: SourceOrchestrationPlan,
|
source_plan: SourceOrchestrationPlan,
|
||||||
@ -218,7 +218,7 @@ impl<E: ComposeDeployEnv> DeploymentOrchestrator<E> {
|
|||||||
let attach = scenario
|
let attach = scenario
|
||||||
.existing_cluster()
|
.existing_cluster()
|
||||||
.ok_or(ComposeRunnerError::InternalInvariant {
|
.ok_or(ComposeRunnerError::InternalInvariant {
|
||||||
message: "attached node control requested outside attached source mode",
|
message: "existing-cluster node control requested outside existing-cluster mode",
|
||||||
})?;
|
})?;
|
||||||
let node_control = ComposeAttachedNodeControl::try_from_existing_cluster(attach)
|
let node_control = ComposeAttachedNodeControl::try_from_existing_cluster(attach)
|
||||||
.map_err(|source| ComposeRunnerError::SourceOrchestration { source })?;
|
.map_err(|source| ComposeRunnerError::SourceOrchestration { source })?;
|
||||||
@ -236,7 +236,7 @@ impl<E: ComposeDeployEnv> DeploymentOrchestrator<E> {
|
|||||||
let attach = scenario
|
let attach = scenario
|
||||||
.existing_cluster()
|
.existing_cluster()
|
||||||
.ok_or(ComposeRunnerError::InternalInvariant {
|
.ok_or(ComposeRunnerError::InternalInvariant {
|
||||||
message: "compose attached cluster wait requested outside attached source mode",
|
message: "compose cluster wait requested outside existing-cluster mode",
|
||||||
})?;
|
})?;
|
||||||
let cluster_wait = ComposeAttachedClusterWait::<E>::try_new(compose_runner_host(), attach)
|
let cluster_wait = ComposeAttachedClusterWait::<E>::try_new(compose_runner_host(), attach)
|
||||||
.map_err(|source| ComposeRunnerError::SourceOrchestration { source })?;
|
.map_err(|source| ComposeRunnerError::SourceOrchestration { source })?;
|
||||||
@ -366,7 +366,7 @@ impl<E: ComposeDeployEnv> DeploymentOrchestrator<E> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn attached_metadata<E, Caps>(scenario: &Scenario<E, Caps>) -> ComposeDeploymentMetadata
|
fn existing_cluster_metadata<E, Caps>(scenario: &Scenario<E, Caps>) -> ComposeDeploymentMetadata
|
||||||
where
|
where
|
||||||
E: ComposeDeployEnv,
|
E: ComposeDeployEnv,
|
||||||
Caps: Send + Sync,
|
Caps: Send + Sync,
|
||||||
|
|||||||
@ -155,7 +155,7 @@ impl<E: Application> NodeControlHandle<E> for ComposeNodeControl {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Node control handle for compose attached mode.
|
/// Node control handle for compose existing-cluster mode.
|
||||||
pub struct ComposeAttachedNodeControl {
|
pub struct ComposeAttachedNodeControl {
|
||||||
pub(crate) project_name: String,
|
pub(crate) project_name: String,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -247,9 +247,9 @@ impl<E: K8sDeployEnv> ClusterWaitHandle<E> for K8sAttachedClusterWait<E> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn k8s_wait_request(source: &ExistingCluster) -> Result<K8sAttachRequest<'_>, DynError> {
|
fn k8s_wait_request(source: &ExistingCluster) -> Result<K8sAttachRequest<'_>, DynError> {
|
||||||
let label_selector = source
|
let label_selector = source.k8s_label_selector().ok_or_else(|| {
|
||||||
.k8s_label_selector()
|
DynError::from("k8s cluster wait requires a k8s existing-cluster descriptor")
|
||||||
.ok_or_else(|| DynError::from("k8s cluster wait requires a k8s attach source"))?;
|
})?;
|
||||||
|
|
||||||
if label_selector.trim().is_empty() {
|
if label_selector.trim().is_empty() {
|
||||||
return Err(K8sAttachDiscoveryError::EmptyLabelSelector.into());
|
return Err(K8sAttachDiscoveryError::EmptyLabelSelector.into());
|
||||||
|
|||||||
@ -181,8 +181,9 @@ where
|
|||||||
let observability = resolve_observability_inputs(scenario.capabilities())?;
|
let observability = resolve_observability_inputs(scenario.capabilities())?;
|
||||||
|
|
||||||
if matches!(scenario.cluster_mode(), ClusterMode::ExistingCluster) {
|
if matches!(scenario.cluster_mode(), ClusterMode::ExistingCluster) {
|
||||||
let runner = deploy_attached_only::<E, Caps>(scenario, source_plan, observability).await?;
|
let runner =
|
||||||
return Ok((runner, attached_metadata(scenario)));
|
deploy_existing_cluster::<E, Caps>(scenario, source_plan, observability).await?;
|
||||||
|
return Ok((runner, existing_cluster_metadata(scenario)));
|
||||||
}
|
}
|
||||||
|
|
||||||
let deployment = build_k8s_deployment::<E, Caps>(deployer, scenario, &observability).await?;
|
let deployment = build_k8s_deployment::<E, Caps>(deployer, scenario, &observability).await?;
|
||||||
@ -213,7 +214,7 @@ where
|
|||||||
Ok((runner, metadata))
|
Ok((runner, metadata))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn deploy_attached_only<E, Caps>(
|
async fn deploy_existing_cluster<E, Caps>(
|
||||||
scenario: &Scenario<E, Caps>,
|
scenario: &Scenario<E, Caps>,
|
||||||
source_plan: SourceOrchestrationPlan,
|
source_plan: SourceOrchestrationPlan,
|
||||||
observability: ObservabilityInputs,
|
observability: ObservabilityInputs,
|
||||||
@ -245,7 +246,7 @@ where
|
|||||||
Ok(context.build_runner(Some(Box::new(feed_task))))
|
Ok(context.build_runner(Some(Box::new(feed_task))))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn attached_metadata<E, Caps>(scenario: &Scenario<E, Caps>) -> K8sDeploymentMetadata
|
fn existing_cluster_metadata<E, Caps>(scenario: &Scenario<E, Caps>) -> K8sDeploymentMetadata
|
||||||
where
|
where
|
||||||
E: K8sDeployEnv,
|
E: K8sDeployEnv,
|
||||||
Caps: Send + Sync,
|
Caps: Send + Sync,
|
||||||
@ -264,7 +265,7 @@ where
|
|||||||
let attach = scenario
|
let attach = scenario
|
||||||
.existing_cluster()
|
.existing_cluster()
|
||||||
.ok_or_else(|| K8sRunnerError::InternalInvariant {
|
.ok_or_else(|| K8sRunnerError::InternalInvariant {
|
||||||
message: "k8s attached cluster wait requested outside attached source mode".to_owned(),
|
message: "k8s cluster wait requested outside existing-cluster mode".to_owned(),
|
||||||
})?;
|
})?;
|
||||||
let cluster_wait = K8sAttachedClusterWait::<E>::try_new(client, attach)
|
let cluster_wait = K8sAttachedClusterWait::<E>::try_new(client, attach)
|
||||||
.map_err(|source| K8sRunnerError::SourceOrchestration { source })?;
|
.map_err(|source| K8sRunnerError::SourceOrchestration { source })?;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user