class Nucleon::Action::Agent::Manager

Public Class Methods

describe() click to toggle source
Calls superclass method
   # File lib/nucleon/action/agent/manager.rb
10 def self.describe
11   super(nil, :manager, 1100)
12 end

Public Instance Methods

arguments() click to toggle source
   # File lib/nucleon/action/agent/manager.rb
29 def arguments
30   [ :sleep_interval ]
31 end
configure() click to toggle source
Calls superclass method
   # File lib/nucleon/action/agent/manager.rb
17 def configure
18   super do
19     codes :network_failure
20 
21     register_int :sleep_interval, 15
22     register_int :network_retries, 3
23     register_int :agent_restart_retries, 2
24   end
25 end
execute() click to toggle source
Calls superclass method
   # File lib/nucleon/action/agent/manager.rb
36 def execute
37   super do |node|
38     ensure_node(node) do
39       network_retry       = 0
40       agent_restart_retry = {}
41 
42       while status == code.success
43         if network.load({ :remote => settings[:net_remote], :pull => true })
44           network_retry = 0
45 
46           node.agents.each do |provider, agent_options|
47             agent_restart_retry[provider] = 0 unless agent_restart_retry.has_key?(provider)
48 
49             unless provider == :agent_manager || node.agent_running(provider)
50               if agent_restart_retry[provider] < settings[:agent_restart_retries]
51                 command = "corl #{agent_options[:args]} --log_level=warn"
52                 result  = node.exec({ :commands => [ command ] }).first
53 
54                 if result.status == code.success
55                   agent_restart_retry[provider] = 0
56                 else
57                   agent_restart_retry[provider] += 1
58                 end
59               end
60             end
61           end
62         elsif network_retry < settings[:network_retries]
63           network_retry += 1
64         else
65           myself.status = code.network_failure
66         end
67         sleep settings[:sleep_interval]
68       end
69     end
70   end
71 end