diff --git a/lib/vagrant-libvirt/action/set_name_of_domain.rb b/lib/vagrant-libvirt/action/set_name_of_domain.rb index 026a739..e7dba96 100644 --- a/lib/vagrant-libvirt/action/set_name_of_domain.rb +++ b/lib/vagrant-libvirt/action/set_name_of_domain.rb @@ -41,7 +41,6 @@ module VagrantPlugins # development-centos-6-chef-11_1404488971_3b7a569e2fd7c554b852 # @return [String] libvirt domain name def build_domain_name(env) - postfix = "#{Time.now.utc.to_i}_#{SecureRandom.hex(10)}" config = env[:machine].provider_config domain_name = if config.default_prefix.nil? @@ -49,8 +48,11 @@ module VagrantPlugins else config.default_prefix.to_s end + domain_name << '_' + domain_name << env[:machine].name.to_s 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 @@ -58,4 +60,3 @@ module VagrantPlugins end end end - diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb index 3a8d48d..0c1f046 100644 --- a/lib/vagrant-libvirt/config.rb +++ b/lib/vagrant-libvirt/config.rb @@ -40,6 +40,9 @@ module VagrantPlugins # be stored. attr_accessor :storage_pool_name + # Turn on to prevent hostname conflicts + attr_accessor :random_hostname + # Libvirt default network attr_accessor :management_network_name attr_accessor :management_network_address @@ -70,6 +73,7 @@ module VagrantPlugins @password = UNSET_VALUE @id_ssh_key_file = UNSET_VALUE @storage_pool_name = UNSET_VALUE + @random_hostname = UNSET_VALUE @management_network_name = UNSET_VALUE @management_network_address = UNSET_VALUE @@ -182,6 +186,7 @@ module VagrantPlugins @password = nil if @password == 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 + @random_hostname = false if @random_hostname == 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 diff --git a/spec/support/environment_helper.rb b/spec/support/environment_helper.rb index 5cbf582..7a4cf70 100644 --- a/spec/support/environment_helper.rb +++ b/spec/support/environment_helper.rb @@ -5,6 +5,8 @@ class EnvironmentHelper attr_writer :default_prefix, :domain_name + attr_accessor :random_hostname, :name + def [](value) self.send(value.to_sym) end diff --git a/spec/vagrant-libvirt/action/set_name_of_domain_spec.rb b/spec/vagrant-libvirt/action/set_name_of_domain_spec.rb index a01ef03..4847c75 100644 --- a/spec/vagrant-libvirt/action/set_name_of_domain_spec.rb +++ b/spec/vagrant-libvirt/action/set_name_of_domain_spec.rb @@ -5,10 +5,16 @@ describe VagrantPlugins::ProviderLibvirt::Action::SetNameOfDomain do @env = EnvironmentHelper.new 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) first = dmn.build_domain_name(@env) second = dmn.build_domain_name(@env) first.should_not eq(second) 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