51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
# File 'lib/chef/knife/status.rb', line 51
def run
all_nodes = []
q = Chef::Search::Query.new
query = @name_args[0] || "*:*"
q.search(:node, query) do |node|
all_nodes << node
end
all_nodes.sort { |n1, n2|
if (config[:sort_reverse] || Chef::Config[:knife][:sort_status_reverse])
(n2["ohai_time"] or 0) <=> (n1["ohai_time"] or 0)
else
(n1["ohai_time"] or 0) <=> (n2["ohai_time"] or 0)
end
}.each do |node|
if node.has_key?("ec2")
fqdn = node['ec2']['public_hostname']
ipaddress = node['ec2']['public_ipv4']
else
fqdn = node['fqdn']
ipaddress = node['ipaddress']
end
hours, minutes, seconds = time_difference_in_hms(node["ohai_time"])
hours_text = "#{hours} hour#{hours == 1 ? ' ' : 's'}"
minutes_text = "#{minutes} minute#{minutes == 1 ? ' ' : 's'}"
run_list = ", #{node.run_list}." if config[:run_list]
if hours > 24
color = :red
text = hours_text
elsif hours >= 1
color = :yellow
text = hours_text
else
color = :green
text = minutes_text
end
line_parts = Array.new
line_parts << @ui.color(text, color) + " ago" << node.name
line_parts << fqdn if fqdn
line_parts << ipaddress if ipaddress
line_parts << run_list if run_list
if node['platform']
platform = node['platform']
if node['platform_version']
platform << " #{node['platform_version']}"
end
line_parts << platform
end
highline.say(line_parts.join(', ') + '.') unless (config[:hide_healthy] && hours < 1)
end
end
|