class Bosh::Director::Jobs::DeleteDeploymentSnapshots

Attributes

deployment[R]

Public Class Methods

job_type() click to toggle source
# File lib/bosh/director/jobs/delete_deployment_snapshots.rb, line 8
def self.job_type
  :delete_deployment_snapshots
end
new(deployment_name) click to toggle source
# File lib/bosh/director/jobs/delete_deployment_snapshots.rb, line 12
def initialize(deployment_name)
  @deployment = deployment_manager.find_by_name(deployment_name)
end

Public Instance Methods

deployment_manager() click to toggle source
# File lib/bosh/director/jobs/delete_deployment_snapshots.rb, line 16
def deployment_manager
  @deployment_manager ||= Bosh::Director::Api::DeploymentManager.new
end
perform() click to toggle source
# File lib/bosh/director/jobs/delete_deployment_snapshots.rb, line 20
def perform
  logger.info("deleting snapshots of deployment: #{deployment.name}")
  deployment.job_instances.each do |instance|
    snapshots = instance.persistent_disks.map { |disk| disk.snapshots }.flatten
    if snapshots.any?
      logger.info("deleting snapshots of: #{instance.job}/#{instance.index} (#{instance.vm_cid})")
      Bosh::Director::Api::SnapshotManager.delete_snapshots(snapshots)
    end
  end

  "snapshots of deployment '#{deployment.name}' deleted"
end