Class: Vagrant::LXC::Action::HandleBoxMetadata
- Inherits:
-
Object
- Object
- Vagrant::LXC::Action::HandleBoxMetadata
- Defined in:
- lib/vagrant-lxc/action/handle_box_metadata.rb
Overview
Prepare arguments to be used for lxc-create
Constant Summary collapse
- SUPPORTED_VERSIONS =
['1.0.0', '2', '3']
Instance Method Summary collapse
- #box_version ⇒ Object
- #call(env) ⇒ Object
-
#initialize(app, env) ⇒ HandleBoxMetadata
constructor
A new instance of HandleBoxMetadata.
-
#old_template_config_file ⇒ Object
TODO: Remove this once we remove compatibility for < 1.0.0 boxes.
- #rootfs_tarball ⇒ Object
- #template_config_file ⇒ Object
- #template_opts ⇒ Object
- #template_src ⇒ Object
- #validate_box ⇒ Object
Constructor Details
#initialize(app, env) ⇒ HandleBoxMetadata
Returns a new instance of HandleBoxMetadata.
8 9 10 11 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 8 def initialize(app, env) @app = app @logger = Log4r::Logger.new("vagrant::lxc::action::handle_box_metadata") end |
Instance Method Details
#box_version ⇒ Object
88 89 90 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 88 def box_version @box..fetch('version') end |
#call(env) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 13 def call(env) @env = env @box = @env[:machine].box @env[:ui].info I18n.t("vagrant.actions.vm.import.importing", :name => @env[:machine].box.name) @logger.info 'Validating box contents' validate_box @logger.info 'Setting box options on environment' @env[:lxc_template_src] = template_src @env[:lxc_template_opts] = template_opts # FIXME: Remove support for pre 1.0.0 boxes if box_version != '1.0.0' @env[:ui].warn "WARNING: You are using a base box that has a format that has been deprecated, please upgrade to a new one." @env[:lxc_template_opts].merge!( '--auth-key' => Vagrant.source_root.join('keys', 'vagrant.pub')..to_s ) end if template_config_file.exist? @env[:lxc_template_opts].merge!('--config' => template_config_file.to_s) elsif old_template_config_file.exist? @env[:lxc_template_config] = old_template_config_file.to_s end @app.call env end |
#old_template_config_file ⇒ Object
TODO: Remove this once we remove compatibility for < 1.0.0 boxes
58 59 60 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 58 def old_template_config_file @old_template_config_file ||= @box.directory.join('lxc.conf') end |
#rootfs_tarball ⇒ Object
68 69 70 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 68 def rootfs_tarball @rootfs_tarball ||= @box.directory.join('rootfs.tar.gz').to_s end |
#template_config_file ⇒ Object
53 54 55 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 53 def template_config_file @template_config_file ||= @box.directory.join('lxc-config') end |
#template_opts ⇒ Object
62 63 64 65 66 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 62 def template_opts @template_opts ||= @box..fetch('template-opts', {}).dup.merge!( '--tarball' => rootfs_tarball ) end |
#template_src ⇒ Object
44 45 46 47 48 49 50 51 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 44 def template_src @template_src ||= if (box_template = @box.directory.join('lxc-template')).exist? box_template.to_s else Vagrant::LXC.source_root.join('scripts/lxc-template').to_s end end |
#validate_box ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/vagrant-lxc/action/handle_box_metadata.rb', line 72 def validate_box unless SUPPORTED_VERSIONS.include? box_version raise Errors::IncompatibleBox.new name: @box.name, found: box_version, supported: SUPPORTED_VERSIONS.join(', ') end unless File.exists?(template_src) raise Errors::TemplateFileMissing.new name: @box.name end unless File.exists?(rootfs_tarball) raise Errors::RootFSTarballMissing.new name: @box.name end end |