Class: Bosh::Director::DeploymentPlan::PlannerFactory

Inherits:
Object
  • Object
show all
Defined in:
lib/bosh/director/deployment_plan/planner_factory.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(canonicalizer, deployment_manifest_migrator, deployment_repo, event_log, logger) ⇒ PlannerFactory

Returns a new instance of PlannerFactory.



29
30
31
32
33
34
35
# File 'lib/bosh/director/deployment_plan/planner_factory.rb', line 29

def initialize(canonicalizer, deployment_manifest_migrator, deployment_repo, event_log, logger)
  @canonicalizer = canonicalizer
  @deployment_manifest_migrator = deployment_manifest_migrator
  @deployment_repo = deployment_repo
  @event_log = event_log
  @logger = logger
end

Class Method Details

.create(event_log, logger) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/bosh/director/deployment_plan/planner_factory.rb', line 15

def self.create(event_log, logger)
  deployment_manifest_migrator = Bosh::Director::DeploymentPlan::ManifestMigrator.new
  canonicalizer = Class.new { include Bosh::Director::DnsHelper }.new
  deployment_repo = Bosh::Director::DeploymentPlan::DeploymentRepo.new(canonicalizer)

  new(
    canonicalizer,
    deployment_manifest_migrator,
    deployment_repo,
    event_log,
    logger
  )
end

Instance Method Details

#planner(manifest_hash, cloud_config, plan_options) ⇒ Object



37
38
39
40
# File 'lib/bosh/director/deployment_plan/planner_factory.rb', line 37

def planner(manifest_hash, cloud_config, plan_options)
  planner = planner_without_vm_binding(manifest_hash, cloud_config, plan_options)
  bind_vms(planner)
end

#planner_without_vm_binding(manifest_hash, cloud_config, options) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/bosh/director/deployment_plan/planner_factory.rb', line 42

def planner_without_vm_binding(manifest_hash, cloud_config, options)
  deployment_manifest, cloud_manifest = @deployment_manifest_migrator.migrate(manifest_hash, cloud_config)
  name = deployment_manifest['name']

  deployment_model = nil
  @event_log.track('Binding deployment') do
    @logger.info('Binding deployment')
    deployment_model = @deployment_repo.find_or_create_by_name(name)
  end

  attrs = {
    name: name,
    properties: deployment_manifest.fetch('properties', {}),
  }
  assemble_without_vm_binding(attrs, deployment_manifest, cloud_manifest, deployment_model, cloud_config, options)
end