class Bosh::Director::DeploymentPlan::Steps::UpdateStep
Public Class Methods
new(base_job, deployment_plan, multi_job_updater, cloud)
click to toggle source
# File lib/bosh/director/deployment_plan/steps/update_step.rb, line 5 def initialize(base_job, deployment_plan, multi_job_updater, cloud) @base_job = base_job @logger = base_job.logger @cloud = cloud @deployment_plan = deployment_plan @multi_job_updater = multi_job_updater @vm_deleter = Bosh::Director::VmDeleter.new(@cloud, @logger, false, Config.enable_virtual_delete_vms) @disk_manager = DiskManager.new(@cloud, @logger) job_renderer = JobRenderer.create arp_flusher = ArpFlusher.new @vm_creator = Bosh::Director::VmCreator.new(@cloud, @logger, @vm_deleter, @disk_manager, job_renderer, arp_flusher) end
Public Instance Methods
perform()
click to toggle source
# File lib/bosh/director/deployment_plan/steps/update_step.rb, line 18 def perform begin @logger.info('Updating deployment') assemble update_jobs @logger.info('Committing updates') @deployment_plan.persist_updates! @logger.info('Finished updating deployment') ensure @deployment_plan.update_stemcell_references! end end
Private Instance Methods
assemble()
click to toggle source
# File lib/bosh/director/deployment_plan/steps/update_step.rb, line 33 def assemble @logger.info('Deleting no longer needed instances') delete_unneeded_instances @logger.info('Creating missing VMs') # TODO: something about instance_plans.select(&:new?) -- how does that compare to the isntance#has_vm? check? @vm_creator.create_for_instance_plans(@deployment_plan.instance_plans_with_missing_vms, @deployment_plan.ip_provider) @base_job.task_checkpoint end
delete_unneeded_instances()
click to toggle source
# File lib/bosh/director/deployment_plan/steps/update_step.rb, line 53 def delete_unneeded_instances unneeded_instances = @deployment_plan.unneeded_instances if unneeded_instances.empty? @logger.info('No unneeded instances to delete') return end event_log_stage = Config.event_log.begin_stage('Deleting unneeded instances', unneeded_instances.size) dns_manager = DnsManagerProvider.create instance_deleter = InstanceDeleter.new(@deployment_plan.ip_provider, dns_manager, @disk_manager) unneeded_instance_plans = unneeded_instances.map do |instance| DeploymentPlan::InstancePlan.new( existing_instance: instance, instance: nil, desired_instance: nil, network_plans: [], recreate_deployment: @deployment_plan.recreate ) end instance_deleter.delete_instance_plans(unneeded_instance_plans, event_log_stage) @logger.info('Deleted no longer needed instances') end
update_jobs()
click to toggle source
# File lib/bosh/director/deployment_plan/steps/update_step.rb, line 44 def update_jobs @logger.info('Updating jobs') @multi_job_updater.run( @base_job, @deployment_plan, @deployment_plan.jobs_starting_on_deploy, ) end