2014-04-18 23:29:56 +00:00
|
|
|
require "log4r"
|
|
|
|
|
|
|
|
module VagrantPlugins
|
|
|
|
module DockerProvider
|
|
|
|
module Action
|
|
|
|
class DestroyBuildImage
|
|
|
|
def initialize(app, env)
|
|
|
|
@app = app
|
|
|
|
@logger = Log4r::Logger.new("vagrant::docker::destroybuildimage")
|
|
|
|
end
|
|
|
|
|
|
|
|
def call(env)
|
2014-04-19 00:19:31 +00:00
|
|
|
machine = env[:machine]
|
|
|
|
image = env[:build_image]
|
|
|
|
image_file = nil
|
2014-04-18 23:29:56 +00:00
|
|
|
|
2014-04-19 00:19:31 +00:00
|
|
|
if !image
|
|
|
|
# Try to read the image ID from the cache file if we've
|
|
|
|
# already built it.
|
|
|
|
image_file = machine.data_dir.join("docker_build_image")
|
|
|
|
image = nil
|
|
|
|
if image_file.file?
|
|
|
|
image = image_file.read.chomp
|
|
|
|
end
|
|
|
|
end
|
2014-04-18 23:29:56 +00:00
|
|
|
|
2014-04-19 00:19:31 +00:00
|
|
|
if image
|
2014-04-18 23:29:56 +00:00
|
|
|
machine.ui.output(I18n.t("docker_provider.build_image_destroy"))
|
2014-04-28 16:36:55 +00:00
|
|
|
if !machine.provider.driver.rmi(image)
|
|
|
|
machine.ui.detail(I18n.t(
|
|
|
|
"docker_provider.build_image_destroy_in_use"))
|
|
|
|
end
|
2014-04-19 00:19:31 +00:00
|
|
|
end
|
|
|
|
|
2014-04-20 15:13:59 +00:00
|
|
|
if image_file && image_file.file?
|
|
|
|
begin
|
|
|
|
image_file.delete
|
|
|
|
rescue Errno::ENOENT
|
|
|
|
# Its okay
|
|
|
|
end
|
2014-04-18 23:29:56 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
@app.call(env)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|