class Bosh::Director::Jobs::CleanupArtifacts
Public Class Methods
enqueue(username, config, job_queue)
click to toggle source
# File lib/bosh/director/jobs/cleanup_artifacts.rb, line 12 def self.enqueue(username, config, job_queue) description = config['remove_all'] ? 'clean up all' : 'clean up' job_queue.enqueue(username, Jobs::CleanupArtifacts, description, [config]) end
job_type()
click to toggle source
# File lib/bosh/director/jobs/cleanup_artifacts.rb, line 8 def self.job_type :delete_artifacts end
new(config)
click to toggle source
# File lib/bosh/director/jobs/cleanup_artifacts.rb, line 17 def initialize(config) @config = config @disk_manager = DiskManager.new(Config.cloud, Config.logger) release_manager = Api::ReleaseManager.new @stemcell_manager = Api::StemcellManager.new blobstore = App.instance.blobstores.blobstore cloud = Config.cloud @blob_deleter = Jobs::Helpers::BlobDeleter.new(blobstore, logger) compiled_package_deleter = Jobs::Helpers::CompiledPackageDeleter.new(@blob_deleter, logger) @stemcell_deleter = Jobs::Helpers::StemcellDeleter.new(cloud, compiled_package_deleter, logger) @releases_to_delete_picker = Jobs::Helpers::ReleasesToDeletePicker.new(release_manager) @stemcells_to_delete_picker = Jobs::Helpers::StemcellsToDeletePicker.new(@stemcell_manager) package_deleter = Helpers::PackageDeleter.new(compiled_package_deleter, @blob_deleter, logger) template_deleter = Helpers::TemplateDeleter.new(@blob_deleter, logger) release_deleter = Helpers::ReleaseDeleter.new(package_deleter, template_deleter, Config.event_log, logger) release_version_deleter = Helpers::ReleaseVersionDeleter.new(release_deleter, package_deleter, template_deleter, logger, Config.event_log) @name_version_release_deleter = Helpers::NameVersionReleaseDeleter.new(release_deleter, release_manager, release_version_deleter, logger) end
Public Instance Methods
perform()
click to toggle source
# File lib/bosh/director/jobs/cleanup_artifacts.rb, line 38 def perform if @config['remove_all'] releases_to_keep, stemcells_to_keep = 0, 0 else releases_to_keep, stemcells_to_keep = 2, 2 end unused_release_name_and_version = @releases_to_delete_picker.pick(releases_to_keep) release_stage = Config.event_log.begin_stage('Deleting releases', unused_release_name_and_version.count) ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool| unused_release_name_and_version.each do |name_and_version| pool.process do name = name_and_version['name'] version = name_and_version['version'] release_stage.advance_and_track("#{name}/#{version}") do with_release_lock(name, :timeout => 10) do @name_version_release_deleter.find_and_delete_release(name, version, false) end end end end end stemcells_to_delete = @stemcells_to_delete_picker.pick(stemcells_to_keep) stemcell_stage = Config.event_log.begin_stage('Deleting stemcells', stemcells_to_delete.count) ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool| stemcells_to_delete.each do |stemcell| pool.process do stemcell_stage.advance_and_track("#{stemcell['name']}/#{stemcell['version']}") do stemcell_to_delete = @stemcell_manager.find_by_name_and_version(stemcell['name'], stemcell['version']) @stemcell_deleter.delete(stemcell_to_delete) end end end end orphan_disks = [] if @config['remove_all'] orphan_disks = Models::OrphanDisk.all orphan_disk_stage = Config.event_log.begin_stage('Deleting orphaned disks', orphan_disks.count) ThreadPool.new(:max_threads => Config.max_threads).wrap do |pool| orphan_disks.each do |orphan_disk| pool.process do orphan_disk_stage.advance_and_track("#{orphan_disk.disk_cid}") do @disk_manager.delete_orphan_disk(orphan_disk) end end end end end ephemeral_blobs = Models::EphemeralBlob.all ephemeral_blob_stage = Config.event_log.begin_stage('Deleting ephemeral blobs', ephemeral_blobs.count) ephemeral_blobs.each do |ephemeral_blob| ephemeral_blob_stage.advance_and_track("#{ephemeral_blob.blobstore_id}") do if @blob_deleter.delete(ephemeral_blob.blobstore_id, [], false) ephemeral_blob.destroy end end end "Deleted #{unused_release_name_and_version.count} release(s), #{stemcells_to_delete.count} stemcell(s), #{orphan_disks.count} orphaned disk(s), #{ephemeral_blobs.count} ephemeral blob(s)" end