2013-03-02 15:17:04 +00:00
|
|
|
module Vagrant
|
|
|
|
module LXC
|
|
|
|
module Action
|
|
|
|
# Prepare arguments to be used for lxc-create
|
2013-04-02 00:05:19 +00:00
|
|
|
class HandleBoxMetadata
|
2013-03-02 15:17:04 +00:00
|
|
|
def initialize(app, env)
|
2013-04-02 00:05:19 +00:00
|
|
|
@app = app
|
2013-03-02 15:17:04 +00:00
|
|
|
@logger = Log4r::Logger.new("vagrant::lxc::action::handle_box_metadata")
|
|
|
|
end
|
|
|
|
|
|
|
|
def call(env)
|
2013-03-11 03:13:48 +00:00
|
|
|
env[:ui].info I18n.t("vagrant.actions.vm.import.importing",
|
|
|
|
:name => env[:machine].box.name)
|
|
|
|
|
2013-04-05 06:10:38 +00:00
|
|
|
box = env[:machine].box
|
2013-03-02 15:17:04 +00:00
|
|
|
|
2013-04-05 06:10:38 +00:00
|
|
|
template_src = box.directory.join('lxc-template').to_s
|
|
|
|
unless File.exists?(template_src)
|
2013-03-08 03:54:15 +00:00
|
|
|
raise Errors::TemplateFileMissing.new name: box.name
|
|
|
|
end
|
2013-04-05 06:10:38 +00:00
|
|
|
|
|
|
|
# TODO: Validate box version
|
2013-03-08 03:54:15 +00:00
|
|
|
|
2013-04-05 01:31:09 +00:00
|
|
|
@logger.debug('Merging metadata with template name and rootfs tarball')
|
2013-04-05 06:10:38 +00:00
|
|
|
|
|
|
|
template_opts = box.metadata.fetch('template-opts', {}).dup
|
|
|
|
template_opts.merge!(
|
|
|
|
'--tarball' => box.directory.join('rootfs.tar.gz').to_s,
|
|
|
|
'--auth-key' => Vagrant.source_root.join('keys', 'vagrant.pub').expand_path.to_s
|
2013-03-08 03:54:15 +00:00
|
|
|
)
|
2013-03-02 15:17:04 +00:00
|
|
|
|
2013-04-05 06:10:38 +00:00
|
|
|
env[:lxc_template_opts] = template_opts
|
|
|
|
env[:lxc_template_src] = template_src
|
|
|
|
|
|
|
|
@app.call env
|
2013-03-02 15:17:04 +00:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|