guests/tinycore: error if DHCP [GH-4699]

This commit is contained in:
Mitchell Hashimoto 2014-10-24 11:24:16 -07:00
parent b82d3c0990
commit 64139f2158
4 changed files with 41 additions and 0 deletions

View File

@ -7,6 +7,10 @@ module VagrantPlugins
def self.configure_networks(machine, networks) def self.configure_networks(machine, networks)
machine.communicate.tap do |comm| machine.communicate.tap do |comm|
networks.each do |n| networks.each do |n|
if n[:type] == :dhcp
raise Errors::NetworkStaticOnly
end
ifc = "/sbin/ifconfig eth#{n[:interface]}" ifc = "/sbin/ifconfig eth#{n[:interface]}"
broadcast = (IPAddr.new(n[:ip]) | (~ IPAddr.new(n[:netmask]))).to_s broadcast = (IPAddr.new(n[:ip]) | (~ IPAddr.new(n[:netmask]))).to_s
comm.sudo("#{ifc} down") comm.sudo("#{ifc} down")

View File

@ -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

View File

@ -2,29 +2,45 @@ require "vagrant"
module VagrantPlugins module VagrantPlugins
module GuestTinyCore module GuestTinyCore
autoload :Errors, File.expand_path("../errors", __FILE__)
class Plugin < Vagrant.plugin("2") class Plugin < Vagrant.plugin("2")
name "TinyCore Linux guest." name "TinyCore Linux guest."
description "TinyCore Linux guest support." description "TinyCore Linux guest support."
guest("tinycore", "linux") do guest("tinycore", "linux") do
require File.expand_path("../guest", __FILE__) require File.expand_path("../guest", __FILE__)
init!
Guest Guest
end end
guest_capability("tinycore", "configure_networks") do guest_capability("tinycore", "configure_networks") do
require_relative "cap/configure_networks" require_relative "cap/configure_networks"
init!
Cap::ConfigureNetworks Cap::ConfigureNetworks
end end
guest_capability("tinycore", "halt") do guest_capability("tinycore", "halt") do
require_relative "cap/halt" require_relative "cap/halt"
init!
Cap::Halt Cap::Halt
end end
guest_capability("tinycore", "rsync_install") do guest_capability("tinycore", "rsync_install") do
require_relative "cap/rsync" require_relative "cap/rsync"
init!
Cap::RSync Cap::RSync
end 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 end
end end

View File

@ -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.