class Bosh::Director::DeploymentPlan::InstanceProvider
Public Class Methods
new(deployment_plan, vm_creator, logger)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_instance_pool.rb, line 105 def initialize(deployment_plan, vm_creator, logger) @deployment_plan = deployment_plan @vm_creator = vm_creator @logger = logger end
Public Instance Methods
create_instance(instance_plan)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_instance_pool.rb, line 141 def create_instance(instance_plan) instance_model = instance_plan.instance.model parent_id = add_event(instance_model.deployment.name, instance_model.name) @deployment_plan.ip_provider.reserve(instance_plan.network_plans.first.reservation) @vm_creator.create_for_instance_plan(instance_plan, []) instance_plan.instance rescue Exception => e raise e ensure add_event(instance_model.deployment.name, instance_model.name, parent_id, e ) end
create_instance_plan(stemcell)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_instance_pool.rb, line 111 def create_instance_plan(stemcell) if @deployment_plan.compilation.vm_type vm_type = @deployment_plan.compilation.vm_type else vm_type = CompilationVmType.new(@deployment_plan.compilation.cloud_properties) end vm_extensions = @deployment_plan.compilation.vm_extensions env = Env.new(@deployment_plan.compilation.env) compile_job = CompilationJob.new(vm_type, vm_extensions, stemcell, env, @deployment_plan.compilation.network_name) availability_zone = @deployment_plan.compilation.availability_zone instance = Instance.create_from_job(compile_job, 0, 'started', @deployment_plan.model, {}, availability_zone, @logger) instance.bind_new_instance_model compilation_network = @deployment_plan.network(@deployment_plan.compilation.network_name) reservation = DesiredNetworkReservation.new_dynamic(instance.model, compilation_network) desired_instance = DeploymentPlan::DesiredInstance.new(compile_job, nil) instance_plan = DeploymentPlan::InstancePlan.new( existing_instance: instance.model, instance: instance, desired_instance: desired_instance, network_plans: [DeploymentPlan::NetworkPlanner::Plan.new(reservation: reservation)] ) compile_job.add_instance_plans([instance_plan]) instance_plan end
Private Instance Methods
add_event(deployment_name, instance_name = nil, parent_id = nil, error = nil)
click to toggle source
# File lib/bosh/director/deployment_plan/compilation_instance_pool.rb, line 155 def add_event(deployment_name, instance_name = nil, parent_id = nil, error = nil) user = Config.current_job.username event = Config.current_job.event_manager.create_event( { parent_id: parent_id, user: user, action: 'create', object_type: 'instance', object_name: instance_name, task: Config.current_job.task_id, deployment: deployment_name, instance: instance_name, error: error }) event.id end