1 # $Id$ |
2 |
3 class HudsonJobSettings < ActiveRecord::Base |
4 unloadable |
5 |
6 belongs_to :job, :class_name => 'HudsonJob', :foreign_key => 'hudson_job_id' |
7 |
8 # ��������������������������� |
9 validates_presence_of :hudson_job_id |
10 |
11 include RexmlHelper |
12 include HudsonHelper |
13 |
14 def initialize(attributes = nil) |
15 super attributes |
16 self.build_rotate = false |
17 self.build_rotator_days_to_keep = -1 |
18 self.build_rotator_num_to_keep = -1 |
19 end |
20 |
21 def do_rotate? |
22 return false unless self.build_rotate |
23 return false unless (self.build_rotator_days_to_keep > 0 || self.build_rotator_num_to_keep > 0) |
24 return true |
25 end |
26 |
27 def fetch |
28 |
29 return unless self.job |
30 return unless self.job.settings |
31 |
32 api_uri = "#{job.config_url_for(:plugin)}" |
33 content = open_hudson_api(api_uri, self.job.settings.auth_user, self.job.settings.auth_password) |
34 |
35 doc = REXML::Document.new content |
36 |
37 self.update_by_xml(doc) |
38 |
39 end |
40 |
41 def update_by_xml(doc) |
42 return unless doc |
43 return unless doc.is_a?(REXML::Document) |
44 |
45 rotate = false |
46 days_to_keep = "" |
47 num_to_keep = "" |
48 doc.elements.each('//logRotator') do |log_rotator| |
49 rotate = true |
50 days_to_keep = get_element_value(log_rotator, 'daysToKeep') |
51 num_to_keep = get_element_value(log_rotator, 'numToKeep') |
52 end |
53 |
54 self.build_rotate = rotate |
55 self.build_rotator_days_to_keep = days_to_keep.to_i if days_to_keep =~ /^[+-]?\d+$/ |
56 self.build_rotator_num_to_keep = num_to_keep.to_i if num_to_keep =~ /^[+-]?\d+$/ |
57 |
58 end |
59 |
60 end |