class Bosh::Director::DeploymentPlan::BatchMultiJobUpdater
Public Class Methods
new(job_updater_factory)
click to toggle source
# File lib/bosh/director/deployment_plan/multi_job_updater.rb, line 42 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 46 def run(base_job, deployment_plan, jobs) serial_updater = SerialMultiJobUpdater.new(@job_updater_factory) parallel_updater = ParallelMultiJobUpdater.new(@job_updater_factory) partition_jobs_by_serial(jobs).each do |jp| updater = jp.first.update.serial? ? serial_updater : parallel_updater updater.run(base_job, deployment_plan, jp) end end
Private Instance Methods
partition_jobs_by_serial(jobs)
click to toggle source
# File lib/bosh/director/deployment_plan/multi_job_updater.rb, line 58 def partition_jobs_by_serial(jobs) job_partitions = [] last_partition = [] jobs.each do |j| lastj = last_partition.last if !lastj || lastj.update.serial? == j.update.serial? last_partition << j else job_partitions << last_partition last_partition = [j] end end job_partitions << last_partition if last_partition.any? job_partitions end