class Bosh::Director::Errand::JobManager

Public Class Methods

new(deployment, job, cloud, logger) click to toggle source

@param [Bosh::Director::DeploymentPlan::Planner] deployment @param [Bosh::Director::DeploymentPlan::Job] job @param [Bosh::Clouds] cloud @param [Logger] logger

# File lib/bosh/director/errand/job_manager.rb, line 7
def initialize(deployment, job, cloud, logger)
  @deployment = deployment
  @job = job
  @logger = logger
  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

create_missing_vms() click to toggle source
# File lib/bosh/director/errand/job_manager.rb, line 18
def create_missing_vms
  @vm_creator.create_for_instance_plans(@job.instance_plans_with_missing_vms, @deployment.ip_provider)
end
delete_instances() click to toggle source

Deletes all errand job instances @return [void]

# File lib/bosh/director/errand/job_manager.rb, line 32
def delete_instances
  instance_plans = bound_instance_plans
  if instance_plans.empty?
    @logger.info('No errand instances to delete')
    return
  end

  @logger.info('Deleting errand instances')
  event_log_stage = Config.event_log.begin_stage('Deleting errand instances', instance_plans.size, [@job.name])
  dns_manager = DnsManagerProvider.create
  instance_deleter = InstanceDeleter.new(@deployment.ip_provider, dns_manager, @disk_manager)
  instance_deleter.delete_instance_plans(instance_plans, event_log_stage)
end
update_instances() click to toggle source

Creates/updates all errand job instances @return [void]

# File lib/bosh/director/errand/job_manager.rb, line 24
def update_instances
  links_resolver = DeploymentPlan::LinksResolver.new(@deployment, @logger)
  job_updater = JobUpdater.new(@deployment, @job, links_resolver, @disk_manager)
  job_updater.update
end

Private Instance Methods

bound_instance_plans() click to toggle source
# File lib/bosh/director/errand/job_manager.rb, line 48
def bound_instance_plans
  @job.needed_instance_plans.reject { |instance_plan| instance_plan.instance.model.nil? }
end