46 lines
1003 B
Ruby
46 lines
1003 B
Ruby
module Vagrant
|
|
module Actions
|
|
module VM
|
|
class Export < Base
|
|
attr_reader :temp_dir
|
|
|
|
def execute!
|
|
setup_temp_dir
|
|
export
|
|
end
|
|
|
|
def cleanup
|
|
if temp_dir
|
|
logger.info "Removing temporary export directory..."
|
|
FileUtils.rm_r(temp_dir)
|
|
end
|
|
end
|
|
|
|
def rescue(exception)
|
|
cleanup
|
|
end
|
|
|
|
def setup_temp_dir
|
|
@temp_dir = File.join(@runner.env.tmp_path, Time.now.to_i.to_s)
|
|
|
|
logger.info "Creating temporary directory for export..."
|
|
FileUtils.mkpath(temp_dir)
|
|
end
|
|
|
|
def ovf_path
|
|
File.join(temp_dir, @runner.env.config.vm.box_ovf)
|
|
end
|
|
|
|
def export
|
|
logger.info "Exporting VM to #{ovf_path}..."
|
|
@runner.vm.export(ovf_path) do |progress|
|
|
logger.report_progress(progress.percent, 100, false)
|
|
end
|
|
|
|
logger.clear_progress
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|