Class: Bosh::Director::Jobs::UpdateDeployment
Instance Attribute Summary
Attributes inherited from BaseJob
#task_id
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from LockHelper
#with_compile_lock, #with_deployment_lock, #with_release_lock, #with_release_locks, #with_stemcell_lock
Methods inherited from BaseJob
#begin_stage, #event_log, #logger, perform, #result_file, #single_step_stage, #task_cancelled?, #task_checkpoint, #track_and_log
Constructor Details
#initialize(manifest_file, options = {}) ⇒ UpdateDeployment
Returns a new instance of UpdateDeployment.
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/bosh/director/jobs/update_deployment.rb', line 14
def initialize(manifest_file, options = {})
logger.info('Reading deployment manifest')
@manifest_file = manifest_file
@manifest = File.read(@manifest_file)
logger.debug("Manifest:\n#{@manifest}")
logger.info('Creating deployment plan')
logger.info("Deployment plan options: #{options.pretty_inspect}")
plan_options = {
'recreate' => !!options['recreate'],
'job_states' => options['job_states'] || {},
'job_rename' => options['job_rename'] || {}
}
manifest_as_hash = Psych.load(@manifest)
@deployment_plan = DeploymentPlan::Planner.new(manifest_as_hash, plan_options)
@deployment_plan.parse
logger.info('Created deployment plan')
resource_pools = @deployment_plan.resource_pools
@resource_pool_updaters = resource_pools.map do |resource_pool|
ResourcePoolUpdater.new(resource_pool)
end
end
|
Class Method Details
8
9
10
|
# File 'lib/bosh/director/jobs/update_deployment.rb', line 8
def self.job_type
:update_deployment
end
|
Instance Method Details
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
# File 'lib/bosh/director/jobs/update_deployment.rb', line 73
def perform
with_deployment_lock(@deployment_plan) do
logger.info('Preparing deployment')
prepare
begin
deployment = @deployment_plan.model
logger.info('Finished preparing deployment')
logger.info('Updating deployment')
update
with_release_locks(@deployment_plan) do
deployment.db.transaction do
deployment.remove_all_release_versions
@deployment_plan.releases.each do |release|
deployment.add_release_version(release.model)
end
end
end
deployment.manifest = @manifest
deployment.save
logger.info('Finished updating deployment')
"/deployments/#{deployment.name}"
ensure
update_stemcell_references
end
end
ensure
FileUtils.rm_rf(@manifest_file)
end
|
#update_stemcell_references ⇒ Object
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
# File 'lib/bosh/director/jobs/update_deployment.rb', line 58
def update_stemcell_references
current_stemcells = Set.new
@deployment_plan.resource_pools.each do |resource_pool|
current_stemcells << resource_pool.stemcell.model
end
deployment = @deployment_plan.model
stemcells = deployment.stemcells
stemcells.each do |stemcell|
unless current_stemcells.include?(stemcell)
stemcell.remove_deployment(deployment)
end
end
end
|