mirror of
https://github.com/vagrant-libvirt/vagrant-libvirt.git
synced 2025-02-25 18:55:27 -06:00
Add feature-complete /domain/clock support
Feature reference: https://libvirt.org/formatdomain.html#time-keeping
This commit is contained in:
@@ -36,7 +36,11 @@ module VagrantPlugins
|
||||
@nodeset = config.nodeset
|
||||
@features = config.features
|
||||
@features_hyperv = config.features_hyperv
|
||||
@clock_absolute = config.clock_absolute
|
||||
@clock_adjustment = config.clock_adjustment
|
||||
@clock_basis = config.clock_basis
|
||||
@clock_offset = config.clock_offset
|
||||
@clock_timezone = config.clock_timezone
|
||||
@clock_timers = config.clock_timers
|
||||
@launchsecurity_data = config.launchsecurity_data
|
||||
@shares = config.shares
|
||||
@@ -236,7 +240,15 @@ module VagrantPlugins
|
||||
env[:ui].info(" -- Feature (HyperV): name=#{feature[:name]}, state=#{feature[:state]}")
|
||||
end
|
||||
end
|
||||
env[:ui].info(" -- Clock offset: #{@clock_offset}")
|
||||
if not @clock_absolute.nil?
|
||||
env[:ui].info(" -- Clock absolute: #{@clock_absolute}")
|
||||
elsif not @clock_adjustment.nil?
|
||||
env[:ui].info(" -- Clock adjustment: #{@clock_adjustment}")
|
||||
elsif not @clock_timezone.nil?
|
||||
env[:ui].info(" -- Clock timezone: #{@clock_timezone}")
|
||||
else
|
||||
env[:ui].info(" -- Clock offset: #{@clock_offset}")
|
||||
end
|
||||
@clock_timers.each do |timer|
|
||||
env[:ui].info(" -- Clock timer: #{timer.map { |k,v| "#{k}=#{v}"}.join(', ')}")
|
||||
end
|
||||
|
||||
@@ -166,12 +166,29 @@ module VagrantPlugins
|
||||
xml_descr.delete_element('/domain/cpu')
|
||||
end
|
||||
|
||||
# Clock
|
||||
# Clock - can change in complicated ways, so just build a new clock and compare
|
||||
newclock = REXML::Element.new('newclock')
|
||||
if not config.clock_absolute.nil?
|
||||
newclock.add_attribute('offset', 'absolute')
|
||||
newclock.add_attribute('start', config.clock_absolute)
|
||||
elsif not config.clock_adjustment.nil?
|
||||
newclock.add_attribute('offset', 'variable')
|
||||
newclock.add_attribute('basis', config.clock_basis)
|
||||
newclock.add_attribute('adjustment', config.clock_adjustment)
|
||||
elsif not config.clock_timezone.nil?
|
||||
newclock.add_attribute('offset', 'timezone')
|
||||
newclock.add_attribute('timezone', config.clock_timezone)
|
||||
else
|
||||
newclock.add_attribute('offset', config.clock_offset)
|
||||
end
|
||||
clock = REXML::XPath.first(xml_descr, '/domain/clock')
|
||||
if clock.attributes['offset'] != config.clock_offset
|
||||
@logger.debug "clock offset changed"
|
||||
if clock.attributes != newclock.attributes
|
||||
@logger.debug "clock definition changed"
|
||||
descr_changed = true
|
||||
clock.attributes['offset'] = config.clock_offset
|
||||
clock.attributes.clear
|
||||
newclock.attributes.each do |attr, value|
|
||||
clock.add_attribute(attr, value)
|
||||
end
|
||||
end
|
||||
|
||||
# clock timers - because timers can be added/removed, just rebuild and then compare
|
||||
|
||||
@@ -98,7 +98,11 @@ module VagrantPlugins
|
||||
attr_accessor :shares
|
||||
attr_accessor :features
|
||||
attr_accessor :features_hyperv
|
||||
attr_accessor :clock_absolute
|
||||
attr_accessor :clock_adjustment
|
||||
attr_accessor :clock_basis
|
||||
attr_accessor :clock_offset
|
||||
attr_accessor :clock_timezone
|
||||
attr_accessor :clock_timers
|
||||
attr_accessor :launchsecurity_data
|
||||
attr_accessor :numa_nodes
|
||||
@@ -278,7 +282,11 @@ module VagrantPlugins
|
||||
@shares = UNSET_VALUE
|
||||
@features = UNSET_VALUE
|
||||
@features_hyperv = UNSET_VALUE
|
||||
@clock_absolute = UNSET_VALUE
|
||||
@clock_adjustment = UNSET_VALUE
|
||||
@clock_basis = UNSET_VALUE
|
||||
@clock_offset = UNSET_VALUE
|
||||
@clock_timezone = UNSET_VALUE
|
||||
@clock_timers = []
|
||||
@launchsecurity_data = UNSET_VALUE
|
||||
@numa_nodes = UNSET_VALUE
|
||||
@@ -1002,7 +1010,11 @@ module VagrantPlugins
|
||||
@shares = nil if @shares == UNSET_VALUE
|
||||
@features = ['acpi','apic','pae'] if @features == UNSET_VALUE
|
||||
@features_hyperv = [] if @features_hyperv == UNSET_VALUE
|
||||
@clock_absolute = nil if @clock_absolute == UNSET_VALUE
|
||||
@clock_adjustment = nil if @clock_adjustment == UNSET_VALUE
|
||||
@clock_basis = 'utc' if @clock_basis == UNSET_VALUE
|
||||
@clock_offset = 'utc' if @clock_offset == UNSET_VALUE
|
||||
@clock_timezone = nil if @clock_timezone == UNSET_VALUE
|
||||
@clock_timers = [] if @clock_timers == UNSET_VALUE
|
||||
@launchsecurity_data = nil if @launchsecurity_data == UNSET_VALUE
|
||||
@numa_nodes = @numa_nodes == UNSET_VALUE ? nil : _generate_numa
|
||||
|
||||
@@ -132,7 +132,15 @@
|
||||
</hyperv>
|
||||
<%- end -%>
|
||||
</features>
|
||||
<%- if not @clock_absolute.nil? -%>
|
||||
<clock offset='absolute' start='<%= @clock_absolute %>'>
|
||||
<%- elsif not @clock_adjustment.nil? -%>
|
||||
<clock offset='variable' basis='<%= @clock_basis %>' adjustment='<%= @clock_adjustment %>'>
|
||||
<%- elsif not @clock_timezone.nil? -%>
|
||||
<clock offset='timezone' timezone='<%= @clock_timezone %>'>
|
||||
<%- else -%>
|
||||
<clock offset='<%= @clock_offset %>'>
|
||||
<%- end -%>
|
||||
<%- @clock_timers.each do |clock_timer| -%>
|
||||
<timer<% clock_timer.each do |attr, value| %> <%= attr %>='<%= value %>'<% end %>/>
|
||||
<%- end -%>
|
||||
|
||||
Reference in New Issue
Block a user