class Bosh::Director::DeploymentPlan::ParallelMultiJobUpdater

Public Class Methods

new(job_updater_factory) click to toggle source
# File lib/bosh/director/deployment_plan/multi_job_updater.rb, line 21
def initialize(job_updater_factory)
  @job_updater_factory = job_updater_factory
end

Public Instance Methods

run(base_job, deployment_plan, jobs) click to toggle source
# File lib/bosh/director/deployment_plan/multi_job_updater.rb, line 25
def run(base_job, deployment_plan, jobs)
  base_job.logger.info("Updating jobs in parallel: #{jobs.map(&:name).join(', ')}")
  base_job.task_checkpoint

  ThreadPool.new(max_threads: jobs.size).wrap do |pool|
    jobs.each do |j|
      pool.process do
        base_job.logger.info("Updating job: #{j.name}")
        job_updater = @job_updater_factory.new_job_updater(deployment_plan, j)
        job_updater.update
      end
    end
  end
end