Very nice. 
I am still learning Ruby and this will help 

Thanks. 


“Sometimes I think the surest sign that intelligent life exists elsewhere in 
the universe is that none of it has tried to contact us.” 
Bill Waterson (Calvin & Hobbes) 

----- Original Message -----
From: "David Portabella" <david.portabe...@gmail.com> 
To: puppet-users@googlegroups.com 
Sent: Wednesday, November 27, 2013 10:12:48 AM 
Subject: Re: [Puppet Users] get a *structured* version of the puppet agent 
output 



Thanks again! It is great to use the puppet report yaml files! 
here there is an example script that prints all resources statuses, 

then it filters them by taking only the services, 
then it filters them by taking only the services changed to running. 


test.ruby 
#!/usr/bin/ruby 


require 'puppet' 
filename = ARGV.first 
report = YAML.load_file(filename) 
rs = report.resource_statuses.values.sort_by{|r| r.resource} 


puts "PRINT ALL RESOURCES STATUSES." 
rs.each do |r| 
puts "#{r.change_count} #{r.events.map {|e| e.previous_value}} #{r.events.map 
{|e| e.desired_value}} #{r.resource}" 
end 


puts "PRINT ALL SERVICES." 
services = rs.select{|r| r.resource_type == 'Service'} 
services.each do |r| 
puts "#{r.change_count} #{r.events.map {|e| e.previous_value}} #{r.events.map 
{|e| e.desired_value}} #{r.resource}" 
end 


puts "PRINT ALL SERVICES CHANGED TO RUNNING." 
services_changed_to_running = rs.select{|r| r.resource_type == 'Service' && 
r.change_count > 0 && r.events.index { |e| e.desired_value == :running } != 
nil} 
services_changed_to_running.each do |r| 
puts "#{r.change_count} #{r.events.map {|e| e.previous_value}} #{r.events.map 
{|e| e.desired_value}} #{r.resource}" 
end 

example output: 
$ test.ruby /var/opt/lib/pe-puppet/reports/test/201311261645.yaml 
PRINT ALL RESOURCES STATUSES. 
1 [:absent] [:directory] File[/var/app] 
1 [:absent] [:file] File[/var/app/app.conf] 
2 [0, "755"] [91, "775"] File[/var/log/tomcat6] 
0 [] [] Filebucket[puppet] 
1 [:absent] [:present] Group[release] 
1 [:absent] [:present] Package[varnish] 
0 [] [] Schedule[weekly] 
1 [:stopped] [:running] Service[varnish] 
0 [] [] Tidy[/etc/collectd.d/] 
1 ["/sbin/nologin"] ["/bin/bash"] User[tomcat] 
... 


PRINT ALL SERVICES. 
1 [:stopped] [:running] Service[collectd] 
1 [:stopped] [:running] Service[logstash-agent] 
1 [:true] [:false] Service[logstash] 
1 [:stopped] [:running] Service[nginx] 
0 [] [] Service[rsyslog] 
1 [:stopped] [:running] Service[statsd] 
1 [:false] [:true] Service[supervisord] 
1 [:stopped] [:running] Service[varnish] 


PRINT ALL SERVICES CHANGED TO RUNNING 
1 [:stopped] [:running] Service[collectd] 
1 [:stopped] [:running] Service[logstash-agent] 
1 [:stopped] [:running] Service[nginx] 
1 [:stopped] [:running] Service[statsd] 
1 [:stopped] [:running] Service[varnish] 



-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group. 
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com. 
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/c70db1f6-b133-4290-a8e1-827ea239028b%40googlegroups.com
 . 
For more options, visit https://groups.google.com/groups/opt_out . 

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to puppet-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/puppet-users/1253465309.4764508.1385567092577.JavaMail.root%40sz0126a.westchester.pa.mail.comcast.net.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to