class VagrantPlugins::Openstack::Action::SnapshotCleanup

Public Class Methods

new(app, _env) click to toggle source
# File lib/vagrant-openstack-provider/action/snapshot_cleanup.rb, line 7
def initialize(app, _env)
  @app = app
end

Public Instance Methods

call(env) click to toggle source
# File lib/vagrant-openstack-provider/action/snapshot_cleanup.rb, line 11
def call(env)
  nova = env[:openstack_client].nova
  machine_snapshots = nova.list_snapshots(env, env[:machine].id)

  snapshots_to_clean = machine_snapshots.select do |s|
    s.metadata.key?('vagrant_snapshot')
  end

  @app.call env

  unless snapshots_to_clean.empty?
    env[:ui].info("Deleting Vagrant snapshots: #{snapshots_to_clean.map(&:name)}")
  end

  snapshots_to_clean.each do |s|
    nova.delete_snapshot(env, s.id)
  end
end