diff --git a/README.md b/README.md index ab3293f..578415b 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,7 @@ end ### Domain Specific Options * `disk_bus` - The type of disk device to emulate. Defaults to virtio if not set. Possible values are documented in libvirt's [description for _target_](http://libvirt.org/formatdomain.html#elementsDisks). +* `nic_model_type` - parameter specifies the model of the network adapter when you create a domain value by default virtio KVM believe possible values, see the documentation for libvirt * `memory` - Amount of memory in MBytes. Defaults to 512 if not set. * `cpus` - Number of virtual cpus. Defaults to 1 if not set. * `nested` - [Enable nested virtualization](https://github.com/torvalds/linux/blob/master/Documentation/virtual/kvm/nested-vmx.txt). Default is false. @@ -237,6 +238,7 @@ starts with 'libvirt__' string. Here is a list of those options: be forwarded (NATed or routed). Used only when creating new network. By default, all physical interfaces are used. * `:mac` - MAC address for the interface. +* `model_type` - parameter specifies the model of the network adapter when you create a domain value by default virtio KVM believe possible values, see the documentation for libvirt ### Public Network Options * `:dev` - Physical device that the public interface should use. Default is 'eth0'. diff --git a/lib/vagrant-libvirt/action/create_network_interfaces.rb b/lib/vagrant-libvirt/action/create_network_interfaces.rb index bedafb1..468ee0a 100644 --- a/lib/vagrant-libvirt/action/create_network_interfaces.rb +++ b/lib/vagrant-libvirt/action/create_network_interfaces.rb @@ -17,6 +17,8 @@ module VagrantPlugins def initialize(app, env) @logger = Log4r::Logger.new('vagrant_libvirt::action::create_network_interfaces') @management_network_name = env[:machine].provider_config.management_network_name + config = env[:machine].provider_config + @nic_model_type = config.nic_model_type @app = app end @@ -66,6 +68,7 @@ module VagrantPlugins @iface_number = slot_number @network_name = iface_configuration[:network_name] @mac = iface_configuration.fetch(:mac, false) + @model_type = iface_configuration.fetch(:model_type, @nic_model_type) template_name = 'interface' # Configuration for public interfaces which use the macvtap driver @@ -73,7 +76,7 @@ module VagrantPlugins @device = iface_configuration.fetch(:dev, 'eth0') @type = iface_configuration.fetch(:type, 'direct') @mode = iface_configuration.fetch(:mode, 'bridge') - @model_type = iface_configuration.fetch(:model_type, 'e1000') + @model_type = iface_configuration.fetch(:model_type, @nic_model_type) template_name = 'public_interface' @logger.info("Setting up public interface using device #{@device} in mode #{@mode}") end diff --git a/lib/vagrant-libvirt/config.rb b/lib/vagrant-libvirt/config.rb index 3a8d48d..01939ba 100644 --- a/lib/vagrant-libvirt/config.rb +++ b/lib/vagrant-libvirt/config.rb @@ -52,6 +52,7 @@ module VagrantPlugins attr_accessor :cpus attr_accessor :cpu_mode attr_accessor :disk_bus + attr_accessor :nic_model_type attr_accessor :nested attr_accessor :volume_cache attr_accessor :kernel @@ -78,6 +79,7 @@ module VagrantPlugins @cpus = UNSET_VALUE @cpu_mode = UNSET_VALUE @disk_bus = UNSET_VALUE + @nic_model_type = UNSET_VALUE @nested = UNSET_VALUE @volume_cache = UNSET_VALUE @kernel = UNSET_VALUE @@ -193,6 +195,7 @@ module VagrantPlugins @cpus = 1 if @cpus == UNSET_VALUE @cpu_mode = 'host-model' if @cpu_mode == UNSET_VALUE @disk_bus = 'virtio' if @disk_bus == UNSET_VALUE + @nic_model_type = 'virtio' if @nic_model_type == UNSET_VALUE @nested = false if @nested == UNSET_VALUE @volume_cache = 'default' if @volume_cache == UNSET_VALUE @kernel = nil if @kernel == UNSET_VALUE diff --git a/lib/vagrant-libvirt/templates/interface.xml.erb b/lib/vagrant-libvirt/templates/interface.xml.erb index 616c9a4..34ceccd 100644 --- a/lib/vagrant-libvirt/templates/interface.xml.erb +++ b/lib/vagrant-libvirt/templates/interface.xml.erb @@ -5,6 +5,6 @@ <% end %> - +