bosh-director 1.3215.4.0 → 1.3232.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/bin/bosh-director-console +1 -1
  3. data/bin/bosh-director-drain-workers +8 -2
  4. data/bin/bosh-director-worker +34 -53
  5. data/db/migrations/director/20110617211923_add_deployments_release_versions.rb +2 -2
  6. data/db/migrations/director/20120524175805_add_task_type.rb +23 -23
  7. data/db/migrations/director/20130531172604_add_director_attributes.rb +1 -2
  8. data/db/migrations/director/20140116002324_pivot_director_attributes.rb +1 -2
  9. data/db/migrations/director/20160210201838_denormalize_compiled_package_stemcell_id_to_stemcell_name_and_version.rb +7 -9
  10. data/db/migrations/director/20160211174110_add_events.rb +22 -0
  11. data/db/migrations/director/20160324181932_create_delayed_jobs.rb +22 -0
  12. data/db/migrations/director/20160324182211_add_locks.rb +15 -0
  13. data/db/migrations/director/20160329201256_set_instances_with_nil_serial_to_false.rb +15 -0
  14. data/db/migrations/director/20160331225404_backfill_stemcell_os.rb +9 -0
  15. data/db/migrations/director/20160411104407_add_task_started_at.rb +9 -0
  16. data/lib/bosh/director.rb +9 -2
  17. data/lib/bosh/director/agent_client.rb +22 -9
  18. data/lib/bosh/director/api.rb +0 -1
  19. data/lib/bosh/director/api/api_helper.rb +1 -1
  20. data/lib/bosh/director/api/controllers/base_controller.rb +5 -1
  21. data/lib/bosh/director/api/controllers/cloud_configs_controller.rb +18 -2
  22. data/lib/bosh/director/api/controllers/deployments_controller.rb +16 -9
  23. data/lib/bosh/director/api/controllers/events_controller.rb +37 -0
  24. data/lib/bosh/director/api/controllers/locks_controller.rb +7 -11
  25. data/lib/bosh/director/api/controllers/packages_controller.rb +1 -1
  26. data/lib/bosh/director/api/controllers/runtime_configs_controller.rb +18 -2
  27. data/lib/bosh/director/api/controllers/tasks_controller.rb +7 -2
  28. data/lib/bosh/director/api/deployment_lookup.rb +1 -1
  29. data/lib/bosh/director/api/deployment_manager.rb +1 -1
  30. data/lib/bosh/director/api/event_manager.rb +68 -0
  31. data/lib/bosh/director/api/extensions/scoping.rb +2 -2
  32. data/lib/bosh/director/api/extensions/syslog_request_logger.rb +75 -0
  33. data/lib/bosh/director/api/instance_lookup.rb +2 -2
  34. data/lib/bosh/director/api/instance_manager.rb +2 -2
  35. data/lib/bosh/director/api/local_identity_provider.rb +8 -0
  36. data/lib/bosh/director/api/property_manager.rb +6 -5
  37. data/lib/bosh/director/api/release_manager.rb +3 -3
  38. data/lib/bosh/director/api/resource_manager.rb +2 -2
  39. data/lib/bosh/director/api/resurrector_manager.rb +1 -1
  40. data/lib/bosh/director/api/route_configuration.rb +1 -0
  41. data/lib/bosh/director/api/stemcell_manager.rb +5 -5
  42. data/lib/bosh/director/api/task_manager.rb +1 -0
  43. data/lib/bosh/director/api/task_remover.rb +1 -1
  44. data/lib/bosh/director/api/uaa_identity_provider.rb +9 -1
  45. data/lib/bosh/director/api/user/database_user_manager.rb +1 -1
  46. data/lib/bosh/director/app.rb +1 -1
  47. data/lib/bosh/director/arp_flusher.rb +23 -0
  48. data/lib/bosh/director/cloudcheck_helper.rb +4 -3
  49. data/lib/bosh/director/compile_task.rb +6 -6
  50. data/lib/bosh/director/compile_task_generator.rb +6 -6
  51. data/lib/bosh/director/compiled_release_downloader.rb +4 -4
  52. data/lib/bosh/director/config.rb +29 -87
  53. data/lib/bosh/director/deployment_deleter.rb +6 -6
  54. data/lib/bosh/director/deployment_plan/agent_state_migrator.rb +2 -2
  55. data/lib/bosh/director/deployment_plan/assembler.rb +1 -1
  56. data/lib/bosh/director/deployment_plan/compilation_instance_pool.rb +26 -1
  57. data/lib/bosh/director/deployment_plan/deployment_repo.rb +1 -1
  58. data/lib/bosh/director/deployment_plan/disk_type.rb +1 -1
  59. data/lib/bosh/director/deployment_plan/instance.rb +2 -2
  60. data/lib/bosh/director/deployment_plan/instance_plan.rb +2 -2
  61. data/lib/bosh/director/deployment_plan/instance_spec.rb +2 -0
  62. data/lib/bosh/director/deployment_plan/ip_provider/ip_provider.rb +7 -3
  63. data/lib/bosh/director/deployment_plan/job.rb +12 -10
  64. data/lib/bosh/director/deployment_plan/job_spec_parser.rb +4 -4
  65. data/lib/bosh/director/deployment_plan/links/link.rb +1 -0
  66. data/lib/bosh/director/deployment_plan/links/link_path.rb +18 -19
  67. data/lib/bosh/director/deployment_plan/links/links_resolver.rb +2 -0
  68. data/lib/bosh/director/deployment_plan/links/template_link.rb +1 -1
  69. data/lib/bosh/director/deployment_plan/manual_network.rb +1 -1
  70. data/lib/bosh/director/deployment_plan/manual_network_subnet.rb +6 -6
  71. data/lib/bosh/director/deployment_plan/planner.rb +3 -3
  72. data/lib/bosh/director/deployment_plan/planner_factory.rb +38 -40
  73. data/lib/bosh/director/deployment_plan/release_version.rb +5 -5
  74. data/lib/bosh/director/deployment_plan/runtime_manifest_parser.rb +22 -18
  75. data/lib/bosh/director/deployment_plan/steps/package_compile_step.rb +14 -16
  76. data/lib/bosh/director/deployment_plan/steps/update_step.rb +5 -5
  77. data/lib/bosh/director/deployment_plan/template.rb +61 -1
  78. data/lib/bosh/director/deployment_plan/update_config.rb +1 -1
  79. data/lib/bosh/director/disk_manager.rb +49 -40
  80. data/lib/bosh/director/dns/canonicalizer.rb +2 -2
  81. data/lib/bosh/director/dns/dns_manager.rb +2 -2
  82. data/lib/bosh/director/dns/powerdns.rb +2 -2
  83. data/lib/bosh/director/download_helper.rb +5 -5
  84. data/lib/bosh/director/errand/job_manager.rb +5 -6
  85. data/lib/bosh/director/errand/result.rb +1 -1
  86. data/lib/bosh/director/errand/runner.rb +2 -3
  87. data/lib/bosh/director/event_log.rb +1 -7
  88. data/lib/bosh/director/ext.rb +0 -6
  89. data/lib/bosh/director/instance_deleter.rb +23 -2
  90. data/lib/bosh/director/instance_updater.rb +62 -6
  91. data/lib/bosh/director/instance_updater/state_applier.rb +2 -2
  92. data/lib/bosh/director/job_queue.rb +4 -2
  93. data/lib/bosh/director/job_runner.rb +3 -8
  94. data/lib/bosh/director/jobs/backup.rb +1 -1
  95. data/lib/bosh/director/jobs/base_job.rb +10 -6
  96. data/lib/bosh/director/jobs/cleanup_artifacts.rb +6 -6
  97. data/lib/bosh/director/jobs/db_job.rb +87 -0
  98. data/lib/bosh/director/jobs/delete_deployment.rb +23 -2
  99. data/lib/bosh/director/jobs/delete_deployment_snapshots.rb +1 -1
  100. data/lib/bosh/director/jobs/delete_orphan_disks.rb +2 -2
  101. data/lib/bosh/director/jobs/delete_release.rb +2 -2
  102. data/lib/bosh/director/jobs/delete_stemcell.rb +1 -1
  103. data/lib/bosh/director/jobs/export_release.rb +4 -2
  104. data/lib/bosh/director/jobs/fetch_logs.rb +1 -1
  105. data/lib/bosh/director/jobs/helpers/blob_deleter.rb +1 -1
  106. data/lib/bosh/director/jobs/helpers/name_version_release_deleter.rb +3 -3
  107. data/lib/bosh/director/jobs/helpers/release_version_deleter.rb +1 -1
  108. data/lib/bosh/director/jobs/helpers/stemcell_deleter.rb +2 -12
  109. data/lib/bosh/director/jobs/release/release_job.rb +13 -28
  110. data/lib/bosh/director/jobs/run_errand.rb +6 -6
  111. data/lib/bosh/director/jobs/scheduled_backup.rb +1 -1
  112. data/lib/bosh/director/jobs/scheduled_events_cleanup.rb +31 -0
  113. data/lib/bosh/director/jobs/scheduled_orphan_cleanup.rb +1 -1
  114. data/lib/bosh/director/jobs/snapshot_deployment.rb +4 -1
  115. data/lib/bosh/director/jobs/ssh.rb +36 -14
  116. data/lib/bosh/director/jobs/update_deployment.rb +28 -6
  117. data/lib/bosh/director/jobs/update_release.rb +31 -41
  118. data/lib/bosh/director/jobs/update_stemcell.rb +4 -4
  119. data/lib/bosh/director/jobs/vm_state.rb +1 -2
  120. data/lib/bosh/director/lock.rb +30 -55
  121. data/lib/bosh/director/logs_fetcher.rb +2 -3
  122. data/lib/bosh/director/manifest/changeset.rb +88 -42
  123. data/lib/bosh/director/manifest/manifest.rb +1 -1
  124. data/lib/bosh/director/models.rb +3 -0
  125. data/lib/bosh/director/models/event.rb +18 -0
  126. data/lib/bosh/director/models/lock.rb +9 -0
  127. data/lib/bosh/director/models/release_version.rb +3 -1
  128. data/lib/bosh/director/problem_handlers/base.rb +3 -3
  129. data/lib/bosh/director/problem_handlers/inactive_disk.rb +4 -4
  130. data/lib/bosh/director/problem_handlers/missing_disk.rb +3 -3
  131. data/lib/bosh/director/problem_handlers/missing_vm.rb +1 -1
  132. data/lib/bosh/director/problem_handlers/mount_info_mismatch.rb +3 -3
  133. data/lib/bosh/director/problem_handlers/unresponsive_agent.rb +2 -2
  134. data/lib/bosh/director/problem_resolver.rb +5 -5
  135. data/lib/bosh/director/problem_scanner/problem_register.rb +1 -1
  136. data/lib/bosh/director/problem_scanner/scanner.rb +3 -2
  137. data/lib/bosh/director/scheduler.rb +3 -3
  138. data/lib/bosh/director/sequel.rb +1 -3
  139. data/lib/bosh/director/stopper.rb +1 -1
  140. data/lib/bosh/director/validation_helper.rb +60 -37
  141. data/lib/bosh/director/version.rb +1 -1
  142. data/lib/bosh/director/vm_creator.rb +39 -7
  143. data/lib/bosh/director/vm_deleter.rb +29 -2
  144. data/lib/bosh/director/vm_metadata_updater.rb +4 -0
  145. data/lib/bosh/director/worker.rb +52 -0
  146. metadata +47 -61
  147. data/lib/bosh/director/manifest/redactor.rb +0 -44
@@ -42,7 +42,7 @@ module Bosh::Director
42
42
  process['name'] if process['state'] != 'running'
43
43
  end.compact
44
44
 
45
- error_message = "`#{@instance}' is not running after update."
45
+ error_message = "'#{@instance}' is not running after update."
46
46
  error_message += " Review logs for failed jobs: #{failing_jobs.join(", ")}" if !failing_jobs.empty?
47
47
 
48
48
  raise AgentJobNotRunning, error_message
@@ -53,7 +53,7 @@ module Bosh::Director
53
53
  end
54
54
 
55
55
  if @instance.state == 'stopped' && current_state['job_state'] == 'running'
56
- raise AgentJobNotStopped, "`#{@instance}' is still running despite the stop command"
56
+ raise AgentJobNotStopped, "'#{@instance}' is still running despite the stop command"
57
57
  end
58
58
 
59
59
  @instance.update_state
@@ -2,13 +2,15 @@ require 'bosh/director/api/task_helper'
2
2
 
3
3
  module Bosh::Director
4
4
 
5
- # Abstracts the resque system.
5
+ # Abstracts the delayed jobs system.
6
6
 
7
7
  class JobQueue
8
8
  def enqueue(username, job_class, description, params, deployment_name = nil)
9
9
  task = Api::TaskHelper.new.create_task(username, job_class.job_type, description, deployment_name)
10
10
 
11
- Resque.enqueue(job_class, task.id, *params)
11
+ Delayed::Worker.backend = :sequel
12
+ db_job = Bosh::Director::Jobs::DBJob.new(job_class, task.id, params)
13
+ Delayed::Job.enqueue db_job
12
14
 
13
15
  task
14
16
  end
@@ -8,7 +8,7 @@ module Bosh::Director
8
8
  def initialize(job_class, task_id)
9
9
  unless job_class.kind_of?(Class) &&
10
10
  job_class <= Jobs::BaseJob
11
- raise DirectorError, "Invalid director job class `#{job_class}'"
11
+ raise DirectorError, "Invalid director job class '#{job_class}'"
12
12
  end
13
13
 
14
14
  @task_id = task_id
@@ -60,12 +60,6 @@ module Bosh::Director
60
60
  Config.result = TaskResultFile.new(result_log)
61
61
  Config.logger = @task_logger
62
62
 
63
- # use a separate logger with the same appender to avoid multiple file writers
64
- redis_task_logger = Logging::Logger.new('DirectorJobRunnerRedis')
65
- redis_task_logger.add_appenders(shared_appender)
66
- redis_task_logger.level = Config.redis_logger_level
67
- Config.redis_logger = redis_task_logger
68
-
69
63
  Config.db.logger = @task_logger
70
64
  Config.dns_db.logger = @task_logger if Config.dns_db
71
65
 
@@ -93,6 +87,7 @@ module Bosh::Director
93
87
 
94
88
  @task.state = :processing
95
89
  @task.timestamp = Time.now
90
+ @task.started_at = Time.now
96
91
  @task.checkpoint_time = Time.now
97
92
  @task.save
98
93
 
@@ -113,7 +108,7 @@ module Bosh::Director
113
108
 
114
109
  # Spawns a thread that periodically updates task checkpoint time.
115
110
  # There is no need to kill this thread as job execution lifetime is the
116
- # same as Resque worker process lifetime.
111
+ # same as worker process lifetime.
117
112
  # @return [Thread] Checkpoint thread
118
113
  def run_checkpointing
119
114
  # task check pointer is scoped to separate class to avoid
@@ -19,7 +19,7 @@ module Bosh::Director
19
19
 
20
20
  def perform
21
21
  Dir.mktmpdir do |tmp_output_dir|
22
- event_log.begin_stage('Backing up director', 4)
22
+ begin_stage('Backing up director', 4)
23
23
  backup_database("#{tmp_output_dir}/director_db.sql")
24
24
  @tar_gzipper.compress(tmp_output_dir, 'director_db.sql', @backup_file)
25
25
  "Backup created at #{@backup_file}"
@@ -20,10 +20,6 @@ module Bosh::Director
20
20
  @logger ||= Config.logger
21
21
  end
22
22
 
23
- def event_log
24
- @event_log ||= Config.event_log
25
- end
26
-
27
23
  def result_file
28
24
  @result_file ||= Config.result
29
25
  end
@@ -46,12 +42,12 @@ module Bosh::Director
46
42
  end
47
43
 
48
44
  def begin_stage(stage_name, n_steps)
49
- event_log.begin_stage(stage_name, n_steps)
45
+ @event_log_stage = Config.event_log.begin_stage(stage_name, n_steps)
50
46
  logger.info(stage_name)
51
47
  end
52
48
 
53
49
  def track_and_log(task, log = true)
54
- event_log.track(task) do |ticker|
50
+ @event_log_stage.advance_and_track(task) do |ticker|
55
51
  logger.info(task) if log
56
52
  yield ticker if block_given?
57
53
  end
@@ -62,6 +58,14 @@ module Bosh::Director
62
58
  track_and_log(stage_name, false) { yield }
63
59
  end
64
60
 
61
+ def username
62
+ @user ||= task_manager.find_task(task_id).username
63
+ end
64
+
65
+ def event_manager
66
+ @event_manager ||= Api::EventManager.new(Config.record_events)
67
+ end
68
+
65
69
  private
66
70
 
67
71
  def task_manager
@@ -23,14 +23,14 @@ module Bosh::Director
23
23
  cloud = Config.cloud
24
24
  blob_deleter = Jobs::Helpers::BlobDeleter.new(blobstore, logger)
25
25
  compiled_package_deleter = Jobs::Helpers::CompiledPackageDeleter.new(blob_deleter, logger)
26
- @stemcell_deleter = Jobs::Helpers::StemcellDeleter.new(cloud, compiled_package_deleter, logger, event_log)
26
+ @stemcell_deleter = Jobs::Helpers::StemcellDeleter.new(cloud, compiled_package_deleter, logger)
27
27
  @releases_to_delete_picker = Jobs::Helpers::ReleasesToDeletePicker.new(release_manager)
28
28
  @stemcells_to_delete_picker = Jobs::Helpers::StemcellsToDeletePicker.new(@stemcell_manager)
29
29
  package_deleter = Helpers::PackageDeleter.new(compiled_package_deleter, blob_deleter, logger)
30
30
  template_deleter = Helpers::TemplateDeleter.new(blob_deleter, logger)
31
- release_deleter = Helpers::ReleaseDeleter.new(package_deleter, template_deleter, event_log, logger)
31
+ release_deleter = Helpers::ReleaseDeleter.new(package_deleter, template_deleter, Config.event_log, logger)
32
32
  release_version_deleter =
33
- Helpers::ReleaseVersionDeleter.new(release_deleter, package_deleter, template_deleter, logger, event_log)
33
+ Helpers::ReleaseVersionDeleter.new(release_deleter, package_deleter, template_deleter, logger, Config.event_log)
34
34
  @name_version_release_deleter =
35
35
  Helpers::NameVersionReleaseDeleter.new(release_deleter, release_manager, release_version_deleter, logger)
36
36
  end
@@ -43,7 +43,7 @@ module Bosh::Director
43
43
  end
44
44
 
45
45
  unused_release_name_and_version = @releases_to_delete_picker.pick(releases_to_keep)
46
- release_stage = event_log.begin_stage('Deleting releases', unused_release_name_and_version.count)
46
+ release_stage = Config.event_log.begin_stage('Deleting releases', unused_release_name_and_version.count)
47
47
  ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool|
48
48
  unused_release_name_and_version.each do |name_and_version|
49
49
  pool.process do
@@ -59,7 +59,7 @@ module Bosh::Director
59
59
  end
60
60
 
61
61
  stemcells_to_delete = @stemcells_to_delete_picker.pick(stemcells_to_keep)
62
- stemcell_stage = event_log.begin_stage('Deleting stemcells', stemcells_to_delete.count)
62
+ stemcell_stage = Config.event_log.begin_stage('Deleting stemcells', stemcells_to_delete.count)
63
63
  ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool|
64
64
  stemcells_to_delete.each do |stemcell|
65
65
  pool.process do
@@ -74,7 +74,7 @@ module Bosh::Director
74
74
  orphan_disks = []
75
75
  if @config['remove_all']
76
76
  orphan_disks = Models::OrphanDisk.all
77
- orphan_disk_stage = event_log.begin_stage('Deleting orphaned disks', orphan_disks.count)
77
+ orphan_disk_stage = Config.event_log.begin_stage('Deleting orphaned disks', orphan_disks.count)
78
78
  ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool|
79
79
  orphan_disks.each do |orphan_disk|
80
80
  pool.process do
@@ -0,0 +1,87 @@
1
+ module Bosh::Director
2
+ module Jobs
3
+ class DBJob
4
+ attr_reader :job_class, :task_id
5
+
6
+ def initialize(job_class, task_id, args)
7
+ unless job_class.kind_of?(Class) &&
8
+ job_class <= Jobs::BaseJob
9
+ raise DirectorError, "Invalid director job class `#{job_class}'"
10
+ end
11
+ raise DirectorError, "Invalid director job class `#{job_class}'. It should have `perform' method." unless job_class.instance_methods(false).include?(:perform)
12
+ @job_class = job_class
13
+ @task_id = task_id
14
+ @args = args
15
+ raise DirectorError, "Invalid director job class `#{job_class}'. It should specify queue value." unless queue_name
16
+ end
17
+
18
+ def perform
19
+ if Models::Task.first(id: @task_id, state: 'queued').nil?
20
+ raise DirectorError, "Cannot perform job for task #{@task_id} (not in 'queued' state)"
21
+ end
22
+
23
+ process_status = ForkedProcess.run do
24
+ @job_class.perform(@task_id, *decode(encode(@args)))
25
+ end
26
+
27
+ if process_status.signaled?
28
+ puts "Task #{@task_id} was terminated, marking as failed"
29
+ fail_task
30
+ end
31
+ end
32
+
33
+ def queue_name
34
+ @job_class.instance_variable_get(:@queue) ||
35
+ (@job_class.respond_to?(:queue) and @job_class.queue)
36
+ end
37
+
38
+ private
39
+
40
+ def fail_task
41
+ Models::Task.first(id: @task_id).update(state: 'error')
42
+ end
43
+
44
+ def encode(object)
45
+ if MultiJson.respond_to?(:dump) && MultiJson.respond_to?(:load)
46
+ MultiJson.dump object
47
+ else
48
+ MultiJson.encode object
49
+ end
50
+ end
51
+
52
+ # Given a string, returns a Ruby object.
53
+ def decode(object)
54
+ return unless object
55
+
56
+ begin
57
+ if MultiJson.respond_to?(:dump) && MultiJson.respond_to?(:load)
58
+ MultiJson.load object
59
+ else
60
+ MultiJson.decode object
61
+ end
62
+ rescue ::MultiJson::DecodeError => e
63
+ raise DecodeException, e.message, e.backtrace
64
+ end
65
+ end
66
+ end
67
+ end
68
+
69
+ class ForkedProcess
70
+ def self.run
71
+ pid = Process.fork do
72
+ EM.run do
73
+ EM.defer do
74
+ begin
75
+ yield
76
+ ensure
77
+ EM.stop
78
+ end
79
+ end
80
+ end
81
+ end
82
+ Process.waitpid(pid)
83
+
84
+ $?
85
+ end
86
+ end
87
+ end
@@ -19,7 +19,7 @@ module Bosh::Director
19
19
 
20
20
  def perform
21
21
  logger.info("Deleting: #{@deployment_name}")
22
-
22
+ parent_id = add_event
23
23
  with_deployment_lock(@deployment_name) do
24
24
  deployment_model = @deployment_manager.find_by_name(@deployment_name)
25
25
 
@@ -28,13 +28,34 @@ module Bosh::Director
28
28
  dns_manager = DnsManagerProvider.create
29
29
  disk_manager = DiskManager.new(@cloud, logger)
30
30
  instance_deleter = InstanceDeleter.new(ip_provider, dns_manager, disk_manager, force: @force)
31
- deployment_deleter = DeploymentDeleter.new(event_log, logger, dns_manager, Config.max_threads)
31
+ deployment_deleter = DeploymentDeleter.new(Config.event_log, logger, dns_manager, Config.max_threads)
32
32
 
33
33
  vm_deleter = Bosh::Director::VmDeleter.new(@cloud, logger, force: @force)
34
34
  deployment_deleter.delete(deployment_model, instance_deleter, vm_deleter)
35
+ add_event(parent_id)
35
36
 
36
37
  "/deployments/#{@deployment_name}"
37
38
  end
39
+ rescue Exception => e
40
+ add_event(parent_id, e)
41
+ raise e
42
+ end
43
+
44
+ private
45
+
46
+ def add_event(parent_id = nil, error = nil)
47
+ event = event_manager.create_event(
48
+ {
49
+ parent_id: parent_id,
50
+ user: username,
51
+ action: "delete",
52
+ object_type: "deployment",
53
+ object_name: @deployment_name,
54
+ deployment: @deployment_name,
55
+ task: task_id,
56
+ error: error
57
+ })
58
+ event.id
38
59
  end
39
60
  end
40
61
  end
@@ -27,7 +27,7 @@ module Bosh::Director
27
27
  end
28
28
  end
29
29
 
30
- "snapshots of deployment `#{deployment.name}' deleted"
30
+ "snapshots of deployment '#{deployment.name}' deleted"
31
31
  end
32
32
  end
33
33
  end
@@ -25,12 +25,12 @@ module Bosh::Director
25
25
  end
26
26
 
27
27
  def perform
28
- event_log.begin_stage('Deleting orphaned disks', @orphan_disk_cids.count)
28
+ event_log_stage = Config.event_log.begin_stage('Deleting orphaned disks', @orphan_disk_cids.count)
29
29
 
30
30
  ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool|
31
31
  @orphan_disk_cids.each do |orphan_disk_cid|
32
32
  pool.process do
33
- event_log.track("Deleting orphaned disk #{orphan_disk_cid}") do
33
+ event_log_stage.advance_and_track("Deleting orphaned disk #{orphan_disk_cid}") do
34
34
  @disk_manager.delete_orphan_disk_by_disk_cid(orphan_disk_cid)
35
35
  end
36
36
  end
@@ -19,9 +19,9 @@ module Bosh::Director
19
19
  compiled_package_deleter = Helpers::CompiledPackageDeleter.new(blob_deleter, logger)
20
20
  package_deleter = Helpers::PackageDeleter.new(compiled_package_deleter, blob_deleter, logger)
21
21
  template_deleter = Helpers::TemplateDeleter.new(blob_deleter, logger)
22
- release_deleter = Helpers::ReleaseDeleter.new(package_deleter, template_deleter, event_log, logger)
22
+ release_deleter = Helpers::ReleaseDeleter.new(package_deleter, template_deleter, Config.event_log, logger)
23
23
  release_version_deleter =
24
- Helpers::ReleaseVersionDeleter.new(release_deleter, package_deleter, template_deleter, logger, event_log)
24
+ Helpers::ReleaseVersionDeleter.new(release_deleter, package_deleter, template_deleter, logger, Config.event_log)
25
25
  release_manager = Api::ReleaseManager.new
26
26
  @name_version_release_deleter = Helpers::NameVersionReleaseDeleter.new(release_deleter, release_manager, release_version_deleter, logger)
27
27
  end
@@ -17,7 +17,7 @@ module Bosh::Director
17
17
  blobstore = options.fetch(:blobstore) { App.instance.blobstores.blobstore }
18
18
  blob_deleter = Helpers::BlobDeleter.new(blobstore, logger)
19
19
  compiled_package_deleter = Helpers::CompiledPackageDeleter.new(blob_deleter, logger)
20
- @stemcell_deleter = Helpers::StemcellDeleter.new(@cloud, compiled_package_deleter, logger, event_log)
20
+ @stemcell_deleter = Helpers::StemcellDeleter.new(@cloud, compiled_package_deleter, logger)
21
21
  end
22
22
 
23
23
  def perform
@@ -1,4 +1,5 @@
1
1
  require 'securerandom'
2
+ require 'common/release/release_directory'
2
3
  require 'common/version/release_version'
3
4
  require 'bosh/director/compiled_release_downloader'
4
5
  require 'bosh/director/compiled_release_manifest'
@@ -40,7 +41,7 @@ module Bosh::Director
40
41
  release_version_model = release_manager.find_version(release, @release_version)
41
42
 
42
43
  unless deployment_manifest_has_release?(targeted_deployment.manifest)
43
- raise ReleaseNotMatchingManifest, "Release version `#{@release_name}/#{@release_version}' not found in deployment `#{@deployment_name}' manifest"
44
+ raise ReleaseNotMatchingManifest, "Release version '#{@release_name}/#{@release_version}' not found in deployment '#{@deployment_name}' manifest"
44
45
  end
45
46
 
46
47
  planner_factory = DeploymentPlan::PlannerFactory.create(logger)
@@ -98,7 +99,8 @@ module Bosh::Director
98
99
  output_path = File.join(download_dir, "compiled_release_#{Time.now.to_f}.tar.gz")
99
100
  archiver = Core::TarGzipper.new
100
101
 
101
- archiver.compress(download_dir, ['compiled_packages', 'jobs', 'release.MF'], output_path)
102
+ release_directory = Bosh::Common::Release::ReleaseDirectory.new(download_dir)
103
+ archiver.compress(download_dir, release_directory.ordered_release_files, output_path)
102
104
  tarball_file = File.open(output_path, 'r')
103
105
 
104
106
  oid = blobstore_client.create(tarball_file)
@@ -17,7 +17,7 @@ module Bosh::Director
17
17
 
18
18
  blobstore = options.fetch(:blobstore) { App.instance.blobstores.blobstore }
19
19
  log_bundles_cleaner = LogBundlesCleaner.new(blobstore, 60 * 60 * 24 * 10, logger) # 10 days
20
- @logs_fetcher = LogsFetcher.new(event_log, @instance_manager, log_bundles_cleaner, logger)
20
+ @logs_fetcher = LogsFetcher.new(@instance_manager, log_bundles_cleaner, logger)
21
21
  end
22
22
 
23
23
  def perform
@@ -12,7 +12,7 @@ module Bosh::Director::Jobs
12
12
  @blobstore.delete(blobstore_id)
13
13
  return true
14
14
  rescue Exception => e
15
- @logger.warn("Could not delete blob with id `#{blobstore_id}`from blobstore: #{e}\n " + e.backtrace.join("\n"))
15
+ @logger.warn("Could not delete blob with id '#{blobstore_id}' from blobstore: #{e}\n " + e.backtrace.join("\n"))
16
16
  errors << e
17
17
  end
18
18
 
@@ -31,16 +31,16 @@ module Bosh::Director::Jobs
31
31
  unless deployments.empty?
32
32
  names = deployments.map { |d| d.name }.join(', ')
33
33
  raise Bosh::Director::ReleaseInUse,
34
- "Release `#{release.name}' is still in use by: #{names}"
34
+ "Release '#{release.name}' is still in use by: #{names}"
35
35
  end
36
36
  @release_deleter.delete(release, force)
37
37
  end
38
38
 
39
39
  def delete_release_version(release, version, force)
40
- @logger.info("Looking up release version `#{release.name}/#{version}'")
40
+ @logger.info("Looking up release version '#{release.name}/#{version}'")
41
41
  release_version = @release_manager.find_version(release, version)
42
42
  # found version may be different than the requested version, due to version formatting
43
- @logger.info("Found release version: `#{release.name}/#{release_version.version}'")
43
+ @logger.info("Found release version: '#{release.name}/#{release_version.version}'")
44
44
  @release_version_deleter.delete(release_version, release, force)
45
45
  end
46
46
  end
@@ -19,7 +19,7 @@ module Bosh::Director::Jobs
19
19
  unless deployments.empty?
20
20
  names = deployments.map { |d| d.name }.join(', ')
21
21
  raise Bosh::Director::ReleaseVersionInUse,
22
- "ReleaseVersion `#{release.name}/#{release_version.version}' is still in use by: #{names}"
22
+ "ReleaseVersion '#{release.name}/#{release_version.version}' is still in use by: #{names}"
23
23
  end
24
24
 
25
25
  delete_release_version(release_version, force)
@@ -3,11 +3,10 @@ module Bosh::Director::Jobs
3
3
  class StemcellDeleter
4
4
  include Bosh::Director::LockHelper
5
5
 
6
- def initialize(cloud, compiled_package_deleter, logger, event_log)
6
+ def initialize(cloud, compiled_package_deleter, logger)
7
7
  @cloud = cloud
8
8
  @compiled_package_deleter = compiled_package_deleter
9
9
  @logger = logger
10
- @event_log = event_log
11
10
  end
12
11
 
13
12
  def delete(stemcell, options = {})
@@ -17,7 +16,7 @@ module Bosh::Director::Jobs
17
16
  unless deployments.empty?
18
17
  names = deployments.map { |d| d.name }.join(', ')
19
18
  raise Bosh::Director::StemcellInUse,
20
- "Stemcell `#{stemcell.name}/#{stemcell.version}' is still in use by: #{names}"
19
+ "Stemcell '#{stemcell.name}/#{stemcell.version}' is still in use by: #{names}"
21
20
  end
22
21
 
23
22
  begin
@@ -31,15 +30,6 @@ module Bosh::Director::Jobs
31
30
  stemcell.destroy
32
31
  end
33
32
  end
34
-
35
- private
36
-
37
- def track_and_log(stage, task, log = true)
38
- stage.advance_and_track(task) do |ticker|
39
- @logger.info(task) if log
40
- yield ticker if block_given?
41
- end
42
- end
43
33
  end
44
34
  end
45
35
  end