diff --git a/plugins/guests/tinycore/cap/configure_networks.rb b/plugins/guests/tinycore/cap/configure_networks.rb index cccc0e311..5196dd52b 100644 --- a/plugins/guests/tinycore/cap/configure_networks.rb +++ b/plugins/guests/tinycore/cap/configure_networks.rb @@ -7,6 +7,10 @@ module VagrantPlugins def self.configure_networks(machine, networks) machine.communicate.tap do |comm| networks.each do |n| + if n[:type] == :dhcp + raise Errors::NetworkStaticOnly + end + ifc = "/sbin/ifconfig eth#{n[:interface]}" broadcast = (IPAddr.new(n[:ip]) | (~ IPAddr.new(n[:netmask]))).to_s comm.sudo("#{ifc} down") diff --git a/plugins/guests/tinycore/errors.rb b/plugins/guests/tinycore/errors.rb new file mode 100644 index 000000000..ed9e0e63c --- /dev/null +++ b/plugins/guests/tinycore/errors.rb @@ -0,0 +1,13 @@ +module VagrantPlugins + module GuestTinyCore + module Errors + class TinyCoreError < Vagrant::Errors::VagrantError + error_namespace("vagrant_tinycore.errors") + end + + class NetworkStaticOnly < TinyCoreError + error_key(:network_static_only) + end + end + end +end diff --git a/plugins/guests/tinycore/plugin.rb b/plugins/guests/tinycore/plugin.rb index b7553fa0a..7c72e58da 100644 --- a/plugins/guests/tinycore/plugin.rb +++ b/plugins/guests/tinycore/plugin.rb @@ -2,29 +2,45 @@ require "vagrant" module VagrantPlugins module GuestTinyCore + autoload :Errors, File.expand_path("../errors", __FILE__) + class Plugin < Vagrant.plugin("2") name "TinyCore Linux guest." description "TinyCore Linux guest support." guest("tinycore", "linux") do require File.expand_path("../guest", __FILE__) + init! Guest end guest_capability("tinycore", "configure_networks") do require_relative "cap/configure_networks" + init! Cap::ConfigureNetworks end guest_capability("tinycore", "halt") do require_relative "cap/halt" + init! Cap::Halt end guest_capability("tinycore", "rsync_install") do require_relative "cap/rsync" + init! Cap::RSync end + + protected + + def self.init! + return if defined?(@_init) + I18n.load_path << File.expand_path( + "templates/locales/guest_tinycore.yml", Vagrant.source_root) + I18n.reload! + @_init = true + end end end end diff --git a/templates/locales/guest_tinycore.yml b/templates/locales/guest_tinycore.yml new file mode 100644 index 000000000..f794ef2cc --- /dev/null +++ b/templates/locales/guest_tinycore.yml @@ -0,0 +1,8 @@ +en: + vagrant_tinycore: + errors: + network_static_only: |- + The TinyCore guest doesn't support DHCP for networks. Please use + a static assigned IP. If you know how to configure DHCP for + TinyCore, please open an issue on Vagrant with the steps and we'd + be happy to bring this functionality in.