mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Provide an option to randomize domain name
This commit lets users enable hostname randomization from their Vagrantfile. Without this option enabled, domain creation will fail when multiple VMs are spun up from the same Vagrantfile, due to a domain name conflict.
This commit is contained in:
@@ -41,7 +41,6 @@ module VagrantPlugins
|
|||||||
# development-centos-6-chef-11_1404488971_3b7a569e2fd7c554b852
|
# development-centos-6-chef-11_1404488971_3b7a569e2fd7c554b852
|
||||||
# @return [String] libvirt domain name
|
# @return [String] libvirt domain name
|
||||||
def build_domain_name(env)
|
def build_domain_name(env)
|
||||||
postfix = "#{Time.now.utc.to_i}_#{SecureRandom.hex(10)}"
|
|
||||||
config = env[:machine].provider_config
|
config = env[:machine].provider_config
|
||||||
domain_name =
|
domain_name =
|
||||||
if config.default_prefix.nil?
|
if config.default_prefix.nil?
|
||||||
@@ -49,8 +48,11 @@ module VagrantPlugins
|
|||||||
else
|
else
|
||||||
config.default_prefix.to_s
|
config.default_prefix.to_s
|
||||||
end
|
end
|
||||||
|
domain_name << '_'
|
||||||
|
domain_name << env[:machine].name.to_s
|
||||||
domain_name.gsub!(/[^-a-z0-9_]/i, '')
|
domain_name.gsub!(/[^-a-z0-9_]/i, '')
|
||||||
domain_name << "_#{postfix}"
|
domain_name << "_#{Time.now.utc.to_i}_#{SecureRandom.hex(10)}" if config.random_hostname
|
||||||
|
domain_name
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
@@ -58,4 +60,3 @@ module VagrantPlugins
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@@ -40,6 +40,9 @@ module VagrantPlugins
|
|||||||
# be stored.
|
# be stored.
|
||||||
attr_accessor :storage_pool_name
|
attr_accessor :storage_pool_name
|
||||||
|
|
||||||
|
# Turn on to prevent hostname conflicts
|
||||||
|
attr_accessor :random_hostname
|
||||||
|
|
||||||
# Libvirt default network
|
# Libvirt default network
|
||||||
attr_accessor :management_network_name
|
attr_accessor :management_network_name
|
||||||
attr_accessor :management_network_address
|
attr_accessor :management_network_address
|
||||||
@@ -70,6 +73,7 @@ module VagrantPlugins
|
|||||||
@password = UNSET_VALUE
|
@password = UNSET_VALUE
|
||||||
@id_ssh_key_file = UNSET_VALUE
|
@id_ssh_key_file = UNSET_VALUE
|
||||||
@storage_pool_name = UNSET_VALUE
|
@storage_pool_name = UNSET_VALUE
|
||||||
|
@random_hostname = UNSET_VALUE
|
||||||
@management_network_name = UNSET_VALUE
|
@management_network_name = UNSET_VALUE
|
||||||
@management_network_address = UNSET_VALUE
|
@management_network_address = UNSET_VALUE
|
||||||
|
|
||||||
@@ -182,6 +186,7 @@ module VagrantPlugins
|
|||||||
@password = nil if @password == UNSET_VALUE
|
@password = nil if @password == UNSET_VALUE
|
||||||
@id_ssh_key_file = 'id_rsa' if @id_ssh_key_file == UNSET_VALUE
|
@id_ssh_key_file = 'id_rsa' if @id_ssh_key_file == UNSET_VALUE
|
||||||
@storage_pool_name = 'default' if @storage_pool_name == UNSET_VALUE
|
@storage_pool_name = 'default' if @storage_pool_name == UNSET_VALUE
|
||||||
|
@random_hostname = false if @random_hostname == UNSET_VALUE
|
||||||
@management_network_name = 'vagrant-libvirt' if @management_network_name == UNSET_VALUE
|
@management_network_name = 'vagrant-libvirt' if @management_network_name == UNSET_VALUE
|
||||||
@management_network_address = '192.168.121.0/24' if @management_network_address == UNSET_VALUE
|
@management_network_address = '192.168.121.0/24' if @management_network_address == UNSET_VALUE
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,8 @@ class EnvironmentHelper
|
|||||||
|
|
||||||
attr_writer :default_prefix, :domain_name
|
attr_writer :default_prefix, :domain_name
|
||||||
|
|
||||||
|
attr_accessor :random_hostname, :name
|
||||||
|
|
||||||
def [](value)
|
def [](value)
|
||||||
self.send(value.to_sym)
|
self.send(value.to_sym)
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -5,10 +5,16 @@ describe VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain do
|
|||||||
@env = EnvironmentHelper.new
|
@env = EnvironmentHelper.new
|
||||||
end
|
end
|
||||||
|
|
||||||
it "builds uniqie domain name" do
|
it "builds unique domain name" do
|
||||||
|
@env.random_hostname = true
|
||||||
dmn = VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain.new(Object.new, @env)
|
dmn = VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain.new(Object.new, @env)
|
||||||
first = dmn.build_domain_name(@env)
|
first = dmn.build_domain_name(@env)
|
||||||
second = dmn.build_domain_name(@env)
|
second = dmn.build_domain_name(@env)
|
||||||
first.should_not eq(second)
|
first.should_not eq(second)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "builds simple domain name" do
|
||||||
|
dmn = VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain.new(Object.new, @env)
|
||||||
|
dmn.build_domain_name(@env).should eq("foo_")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user