avoid timeout DBUS error if time is moved to future or past (bnc#553980)
[opensuse:yast-rest-service.git] / plugins / ntp / app / models / ntp.rb
1 class Ntp
2
3   attr_accessor :actions
4
5   public
6     def initialize
7       @actions = { :synchronize => false }
8     end
9     
10     def self.find
11       Ntp.new
12     end
13
14     def save
15       if @actions[:synchronize]
16         synchronize
17       end
18     end
19
20   private
21     def synchronize
22       ret = "OK"
23       begin
24         ret = YastService.Call("YaPI::NTP::Synchronize")
25       rescue Exception => e
26         Rails.logger.info "ntp synchronization cause probably timeout #{e.inspect}"
27       end
28       raise NtpError.new(ret) unless ret == "OK"
29     end
30 end
31
32 require 'exceptions'
33 class NtpError < BackendException
34   def initialize(message)
35     @message = message
36     super("Ntp failed to synchronize with this error: #{@message}.")
37   end
38
39   def to_xml
40     xml = Builder::XmlMarkup.new({})
41     xml.instruct!
42
43     xml.error do
44       xml.type "NTP_ERROR"
45       xml.description message
46       xml.output @message
47     end
48   end
49 end