Class: Pwrake::HostInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/pwrake/option/host_map.rb

Constant Summary collapse

@@local_ip =
nil

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, id, ncore, weight, group = nil) ⇒ HostInfo

Returns a new instance of HostInfo.



14
15
16
17
18
19
20
21
22
23
24
# File 'lib/pwrake/option/host_map.rb', line 14

def initialize(name,id,ncore,weight,group=nil)
  @name = name
  @ncore = ncore
  @weight = weight || 1.0
  @group = group || 0
  @id = id
  @continuous_fail = 0
  @total_fail = 0
  @count_task = 0
  @ipaddr = []
end

Instance Attribute Details

#groupObject (readonly)

Returns the value of attribute group.



26
27
28
# File 'lib/pwrake/option/host_map.rb', line 26

def group
  @group
end

#idObject (readonly)

Returns the value of attribute id.



26
27
28
# File 'lib/pwrake/option/host_map.rb', line 26

def id
  @id
end

#idle_coresObject

Returns the value of attribute idle_cores.



28
29
30
# File 'lib/pwrake/option/host_map.rb', line 28

def idle_cores
  @idle_cores
end

#ipaddrObject (readonly)

Returns the value of attribute ipaddr.



27
28
29
# File 'lib/pwrake/option/host_map.rb', line 27

def ipaddr
  @ipaddr
end

#nameObject (readonly)

Returns the value of attribute name.



26
27
28
# File 'lib/pwrake/option/host_map.rb', line 26

def name
  @name
end

#ncoreObject (readonly)

Returns the value of attribute ncore.



26
27
28
# File 'lib/pwrake/option/host_map.rb', line 26

def ncore
  @ncore
end

#steal_flagObject (readonly)

Returns the value of attribute steal_flag.



26
27
28
# File 'lib/pwrake/option/host_map.rb', line 26

def steal_flag
  @steal_flag
end

#weightObject (readonly)

Returns the value of attribute weight.



26
27
28
# File 'lib/pwrake/option/host_map.rb', line 26

def weight
  @weight
end

Class Method Details

.local_ipObject



9
10
11
12
# File 'lib/pwrake/option/host_map.rb', line 9

def self.local_ip
  @@local_ip ||=
    Socket.getifaddrs.select{|a| a.addr.ip?}.map{|a| a.addr.ip_address}
end

Instance Method Details

#accept_core(task_name, use_cores) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/pwrake/option/host_map.rb', line 90

def accept_core(task_name, use_cores)
  if @reserved_task
    if @reserved_task == task_name
      if use_cores <= @idle_cores
        Log.info "use reserved: #{@name} for #{task_name} (#{use_cores} cores)"
        @reserved_task = nil
        return :ok
      end
    end
  else
    if use_cores <= @idle_cores
      return :ok
    elsif use_cores > 1
      @reserved_task = task_name
      Log.info "reserve host: #{@name} for #{task_name} (#{use_cores} cores)"
      return :reserve
    end
  end
  :busy
end

#busy(n) ⇒ Object



53
54
55
56
57
# File 'lib/pwrake/option/host_map.rb', line 53

def busy(n)
  @busy_cores += n
  @idle_cores -= n
  @idle_cores + @busy_cores < 1 # all retired
end

#decrease(n) ⇒ Object



59
60
61
62
# File 'lib/pwrake/option/host_map.rb', line 59

def decrease(n)
  @idle_cores -= n
  @idle_cores + @busy_cores < 1 # all retired
end

#idle(n) ⇒ Object



45
46
47
48
49
50
51
# File 'lib/pwrake/option/host_map.rb', line 45

def idle(n)
  @busy_cores -= n
  @idle_cores += n
  @idle_cores -= @retire
  @retire = 0
  @idle_cores + @busy_cores < 1 # all retired
end

#local?Boolean

Returns:

  • (Boolean)


30
31
32
33
# File 'lib/pwrake/option/host_map.rb', line 30

def local?
  ipa = IPSocket.getaddress(@name)
  HostInfo.local_ip.include?(ipa)
end

#retire(n) ⇒ Object



71
72
73
74
# File 'lib/pwrake/option/host_map.rb', line 71

def retire(n)
  @retire += n
  Log.debug "retire n=#{n}, host=#{@name}"
end

#set_ip(ipa) ⇒ Object



41
42
43
# File 'lib/pwrake/option/host_map.rb', line 41

def set_ip(ipa)
  @ipaddr.push(ipa)
end

#set_ncore(n) ⇒ Object



35
36
37
38
39
# File 'lib/pwrake/option/host_map.rb', line 35

def set_ncore(n)
  @retire = 0
  @busy_cores = 0
  @ncore = @idle_cores = n
end

#steal_phaseObject



64
65
66
67
68
69
# File 'lib/pwrake/option/host_map.rb', line 64

def steal_phase
  @steal_flag = true
  t = yield(self)
  @steal_flag = false
  t
end

#task_result(result) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/pwrake/option/host_map.rb', line 76

def task_result(result)
  @count_task += 1
  case result
  when "end"
    @continuous_fail = 0
  when "fail"
    @continuous_fail += 1
    @total_fail += 1
  else
    raise "unknown result: #{result}"
  end
  @continuous_fail
end