From a2f369eb3e18b062df9ab62868c4a63d3b0e6f94 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Tue, 8 Dec 2020 15:16:44 +0100 Subject: Move progress bar instantiation out of JobHandle implementation ... and into orchestrator implementation. Signed-off-by: Matthias Beyer --- src/orchestrator/orchestrator.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/orchestrator') diff --git a/src/orchestrator/orchestrator.rs b/src/orchestrator/orchestrator.rs index f569120..eb03c0a 100644 --- a/src/orchestrator/orchestrator.rs +++ b/src/orchestrator/orchestrator.rs @@ -28,6 +28,7 @@ use crate::util::progress::ProgressBars; pub struct Orchestrator<'a> { scheduler: EndpointScheduler, + progress_generator: ProgressBars, merged_stores: MergedStores, source_cache: SourceCache, jobsets: Vec, @@ -51,10 +52,11 @@ pub struct OrchestratorSetup<'a> { impl<'a> OrchestratorSetup<'a> { pub async fn setup(self) -> Result> { let db = Arc::new(self.database); - let scheduler = EndpointScheduler::setup(self.endpoint_config, self.staging_store.clone(), db, self.progress_generator, self.submit.clone(), self.log_dir).await?; + let scheduler = EndpointScheduler::setup(self.endpoint_config, self.staging_store.clone(), db, self.submit.clone(), self.log_dir).await?; Ok(Orchestrator { scheduler: scheduler, + progress_generator: self.progress_generator, merged_stores: MergedStores::new(self.release_store, self.staging_store), source_cache: self.source_cache, jobsets: self.jobsets, @@ -72,6 +74,7 @@ impl<'a> Orchestrator<'a> { &self.merged_stores, &self.source_cache, &self.config, + &self.progress_generator, jobset) .await?; @@ -86,6 +89,7 @@ impl<'a> Orchestrator<'a> { merged_store: &MergedStores, source_cache: &SourceCache, config: &Configuration, + progress_generator: &ProgressBars, jobset: JobSet) -> Result> { @@ -97,11 +101,8 @@ impl<'a> Orchestrator<'a> { .await? .into_iter() .map(|runnable| { - let multibar = multibar.clone(); - - async { - Self::run_runnable(multibar, runnable, scheduler).await - } + let bar = multibar.add(progress_generator.job_bar(runnable.uuid())); + Self::run_runnable(runnable, scheduler, bar) }) .collect::>() .collect::, ContainerError>>>(); @@ -147,13 +148,13 @@ impl<'a> Orchestrator<'a> { Ok(results) } - async fn run_runnable(multibar: Arc, runnable: RunnableJob, scheduler: &EndpointScheduler) + async fn run_runnable(runnable: RunnableJob, scheduler: &EndpointScheduler, bar: indicatif::ProgressBar) -> RResult, ContainerError> { let job_id = runnable.uuid().clone(); trace!("Runnable {} for package {}", job_id, runnable.package().name()); - let jobhandle = scheduler.schedule_job(runnable, multibar).await?; + let jobhandle = scheduler.schedule_job(runnable, bar).await?; trace!("Jobhandle -> {:?}", jobhandle); let r = jobhandle.run().await; -- cgit v1.2.3