From e904fd8941249f9fefdac6fc43df6a3457f93139 Mon Sep 17 00:00:00 2001 From: Tim Hughes Date: Mon, 14 Sep 2015 17:37:19 +0100 Subject: [PATCH] Enables setting of MAC address on management interface as per #426 --- lib/vagrant-libvirt/action/create_domain.rb | 4 +++- lib/vagrant-libvirt/config.rb | 2 ++ lib/vagrant-libvirt/util/network_util.rb | 7 ++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/vagrant-libvirt/action/create_domain.rb b/lib/vagrant-libvirt/action/create_domain.rb index 461fd57..097a431 100644 --- a/lib/vagrant-libvirt/action/create_domain.rb +++ b/lib/vagrant-libvirt/action/create_domain.rb @@ -39,6 +39,7 @@ module VagrantPlugins @disk_bus = config.disk_bus @nested = config.nested @memory_size = config.memory.to_i * 1024 + @management_network_mac = config.management_network_mac @domain_volume_cache = config.volume_cache @kernel = config.kernel @cmd_line = config.cmd_line @@ -74,7 +75,7 @@ module VagrantPlugins # Get path to domain image from the storage pool selected if we have a box. if env[:machine].box - actual_volumes = + actual_volumes = env[:machine].provider.driver.connection.volumes.all.select do |x| x.pool_name == @storage_pool_name end @@ -135,6 +136,7 @@ module VagrantPlugins env[:ui].info(" -- Domain type: #{@domain_type}") env[:ui].info(" -- Cpus: #{@cpus}") env[:ui].info(" -- Memory: #{@memory_size / 1024}M") + env[:ui].info(" -- Management MAC: #{@management_network_mac}") env[:ui].info(" -- Loader: #{@loader}") if env[:machine].box env[:ui].info(" -- Base box: #{env[:machine].box.name}") diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb index 75161b8..5153571 100644 --- a/lib/vagrant-libvirt/config.rb +++ b/lib/vagrant-libvirt/config.rb @@ -47,6 +47,7 @@ module VagrantPlugins attr_accessor :management_network_name attr_accessor :management_network_address attr_accessor :management_network_mode + attr_accessor :management_network_mac # Default host prefix (alternative to use project folder name) attr_accessor :default_prefix @@ -112,6 +113,7 @@ module VagrantPlugins @machine_virtual_size = UNSET_VALUE @disk_bus = UNSET_VALUE @nic_model_type = UNSET_VALUE + @management_network_mac = UNSET_VALUE @nested = UNSET_VALUE @volume_cache = UNSET_VALUE @kernel = UNSET_VALUE diff --git a/lib/vagrant-libvirt/util/network_util.rb b/lib/vagrant-libvirt/util/network_util.rb index dea45d5..3e0bd2b 100644 --- a/lib/vagrant-libvirt/util/network_util.rb +++ b/lib/vagrant-libvirt/util/network_util.rb @@ -10,7 +10,8 @@ module VagrantPlugins def configured_networks(env, logger) management_network_name = env[:machine].provider_config.management_network_name management_network_address = env[:machine].provider_config.management_network_address - management_network_mode = env[:machine].provider_config.management_network_mode + management_network_mode = env[:machine].provider_config.management_network_mode + management_network_mac = env[:machine].provider_config.management_network_mac logger.info "Using #{management_network_name} at #{management_network_address} as the management network #{management_network_mode} is the mode" begin @@ -37,6 +38,10 @@ module VagrantPlugins forward_mode: management_network_mode, } + unless management_network_mac.nil? + management_network_options[:mac] = management_network_mac + end + # add management network to list of networks to check networks = [ management_network_options ]