Get the book Learning Ruby. 

Worth it. 

> On Nov 27, 2013, at 7:44 AM, Dan White <y...@comcast.net> wrote:
> 
> 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)
> 
> 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 a topic in the Google 
> Groups "Puppet Users" group.
> To unsubscribe from this topic, visit 
> https://groups.google.com/d/topic/puppet-users/cHpZlKkPmr4/unsubscribe.
> To unsubscribe from this group and all its topics, 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.

-- 
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/36085646-13B6-4457-A36B-B2C8F97A603E%40me.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to