mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Add CPU topology configuration
This commit is contained in:
@@ -34,6 +34,7 @@ module VagrantPlugins
|
|||||||
@uuid = config.uuid
|
@uuid = config.uuid
|
||||||
@cpus = config.cpus.to_i
|
@cpus = config.cpus.to_i
|
||||||
@cpu_features = config.cpu_features
|
@cpu_features = config.cpu_features
|
||||||
|
@cpu_topology = config.cpu_topology
|
||||||
@features = config.features
|
@features = config.features
|
||||||
@cpu_mode = config.cpu_mode
|
@cpu_mode = config.cpu_mode
|
||||||
@cpu_model = config.cpu_model
|
@cpu_model = config.cpu_model
|
||||||
@@ -176,6 +177,10 @@ module VagrantPlugins
|
|||||||
env[:ui].info(" -- Forced UUID: #{@uuid}") if @uuid != ''
|
env[:ui].info(" -- Forced UUID: #{@uuid}") if @uuid != ''
|
||||||
env[:ui].info(" -- Domain type: #{@domain_type}")
|
env[:ui].info(" -- Domain type: #{@domain_type}")
|
||||||
env[:ui].info(" -- Cpus: #{@cpus}")
|
env[:ui].info(" -- Cpus: #{@cpus}")
|
||||||
|
if not @cpu_topology.empty?
|
||||||
|
env[:ui].info(" -- CPU topology: sockets=#{@cpu_topology[:sockets]}, cores=#{@cpu_topology[:cores]}, threads=#{@cpu_topology[:threads]}")
|
||||||
|
end
|
||||||
|
env[:ui].info("")
|
||||||
@cpu_features.each do |cpu_feature|
|
@cpu_features.each do |cpu_feature|
|
||||||
env[:ui].info(" -- CPU Feature: name=#{cpu_feature[:name]}, policy=#{cpu_feature[:policy]}")
|
env[:ui].info(" -- CPU Feature: name=#{cpu_feature[:name]}, policy=#{cpu_feature[:policy]}")
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ module VagrantPlugins
|
|||||||
attr_accessor :cpu_model
|
attr_accessor :cpu_model
|
||||||
attr_accessor :cpu_fallback
|
attr_accessor :cpu_fallback
|
||||||
attr_accessor :cpu_features
|
attr_accessor :cpu_features
|
||||||
|
attr_accessor :cpu_topology
|
||||||
attr_accessor :features
|
attr_accessor :features
|
||||||
attr_accessor :numa_nodes
|
attr_accessor :numa_nodes
|
||||||
attr_accessor :loader
|
attr_accessor :loader
|
||||||
@@ -171,6 +172,7 @@ module VagrantPlugins
|
|||||||
@cpu_model = UNSET_VALUE
|
@cpu_model = UNSET_VALUE
|
||||||
@cpu_fallback = UNSET_VALUE
|
@cpu_fallback = UNSET_VALUE
|
||||||
@cpu_features = UNSET_VALUE
|
@cpu_features = UNSET_VALUE
|
||||||
|
@cpu_topology = UNSET_VALUE
|
||||||
@features = UNSET_VALUE
|
@features = UNSET_VALUE
|
||||||
@numa_nodes = UNSET_VALUE
|
@numa_nodes = UNSET_VALUE
|
||||||
@loader = UNSET_VALUE
|
@loader = UNSET_VALUE
|
||||||
@@ -315,6 +317,20 @@ module VagrantPlugins
|
|||||||
policy: options[:policy])
|
policy: options[:policy])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def cputopology(options = {})
|
||||||
|
if options[:sockets].nil? || options[:cores].nil? || options[:threads].nil?
|
||||||
|
raise 'CPU topology must have all of sockets, cores and threads specified'
|
||||||
|
end
|
||||||
|
|
||||||
|
if @cpu_topology == UNSET_VALUE
|
||||||
|
@cpu_topology = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
@cpu_topology[:sockets] = options[:sockets]
|
||||||
|
@cpu_topology[:cores] = options[:cores]
|
||||||
|
@cpu_topology[:threads] = options[:threads]
|
||||||
|
end
|
||||||
|
|
||||||
def memorybacking(option, config = {})
|
def memorybacking(option, config = {})
|
||||||
case option
|
case option
|
||||||
when :source
|
when :source
|
||||||
@@ -594,6 +610,7 @@ module VagrantPlugins
|
|||||||
elsif @cpu_mode != 'custom'
|
elsif @cpu_mode != 'custom'
|
||||||
''
|
''
|
||||||
end
|
end
|
||||||
|
@cpu_topology = {} if @cpu_topology == UNSET_VALUE
|
||||||
@cpu_fallback = 'allow' if @cpu_fallback == UNSET_VALUE
|
@cpu_fallback = 'allow' if @cpu_fallback == UNSET_VALUE
|
||||||
@cpu_features = [] if @cpu_features == UNSET_VALUE
|
@cpu_features = [] if @cpu_features == UNSET_VALUE
|
||||||
@features = ['acpi','apic','pae'] if @features == UNSET_VALUE
|
@features = ['acpi','apic','pae'] if @features == UNSET_VALUE
|
||||||
|
|||||||
@@ -15,6 +15,10 @@
|
|||||||
<% @cpu_features.each do |cpu_feature| %>
|
<% @cpu_features.each do |cpu_feature| %>
|
||||||
<feature name='<%= cpu_feature[:name] %>' policy='<%= cpu_feature[:policy] %>'/>
|
<feature name='<%= cpu_feature[:name] %>' policy='<%= cpu_feature[:policy] %>'/>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
<% unless @cpu_topology.empty? %>
|
||||||
|
<%# CPU topology -%>
|
||||||
|
<topology sockets='<%= @cpu_topology[:sockets] %>' cores='<%= @cpu_topology[:cores] %>' threads='<%= @cpu_topology[:threads] %>'/>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% if @numa_nodes %>
|
<% if @numa_nodes %>
|
||||||
<numa>
|
<numa>
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
<cpu mode='custom'>
|
<cpu mode='custom'>
|
||||||
<model fallback='allow'>qemu64</model>
|
<model fallback='allow'>qemu64</model>
|
||||||
<feature name='AAA' policy='required'/>
|
<feature name='AAA' policy='required'/>
|
||||||
|
<topology sockets='1' cores='3' threads='2'/>
|
||||||
</cpu>
|
</cpu>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -31,6 +31,7 @@ describe 'templates/domain' do
|
|||||||
domain.instance_variable_set('@domain_type', 'kvm')
|
domain.instance_variable_set('@domain_type', 'kvm')
|
||||||
domain.cpu_mode = 'custom'
|
domain.cpu_mode = 'custom'
|
||||||
domain.cpu_feature(name: 'AAA', policy: 'required')
|
domain.cpu_feature(name: 'AAA', policy: 'required')
|
||||||
|
domain.cputopology(sockets: '1', cores: '3', threads: '2')
|
||||||
domain.machine_type = 'pc-compatible'
|
domain.machine_type = 'pc-compatible'
|
||||||
domain.machine_arch = 'x86_64'
|
domain.machine_arch = 'x86_64'
|
||||||
domain.loader = '/efi/loader'
|
domain.loader = '/efi/loader'
|
||||||
|
|||||||
Reference in New Issue
Block a user