diff --git a/lib/puppet/reports/rrdgraph.rb b/lib/puppet/reports/rrdgraph.rb deleted file mode 100644 index 6238ddda9..000000000 --- a/lib/puppet/reports/rrdgraph.rb +++ /dev/null @@ -1,128 +0,0 @@ -Puppet::Reports.register_report(:rrdgraph) do - desc "Graph all available data about hosts using the RRD library. You - must have the Ruby RRDtool library installed to use this report, which - you can get from - [the RubyRRDTool RubyForge page](http://rubyforge.org/projects/rubyrrdtool/). - This package may also be available as `librrd-ruby`, `ruby-rrd`, or `rrdtool-ruby` in your - distribution's package management system. The library and/or package will both - require the binary `rrdtool` package from your distribution to be installed. - - This report will create, manage, and graph RRD database files for each - of the metrics generated during transactions, and it will create a - few simple html files to display the reporting host's graphs. At this - point, it will not create a common index file to display links to - all hosts. - - All RRD files and graphs get created in the `rrddir` directory. If - you want to serve these publicly, you should be able to just alias that - directory in a web server. - - If you really know what you're doing, you can tune the `rrdinterval`, - which defaults to the `runinterval`." - - def hostdir - @hostdir ||= File.join(Puppet[:rrddir], self.host) - end - - def htmlfile(type, graphs, field) - file = File.join(hostdir, "#{type}.html") - File.open(file, "w") do |of| - of.puts "#{type.capitalize} graphs for #{host}" - - graphs.each do |graph| - if field == :first - name = graph.sub(/-\w+.png/, '').capitalize - else - name = graph.sub(/\w+-/, '').sub(".png", '').capitalize - end - of.puts "
" - end - of.puts "" - end - - file - end - - def mkhtml - images = Dir.entries(hostdir).find_all { |d| d =~ /\.png/ } - - periodorder = %w{daily weekly monthly yearly} - - periods = {} - types = {} - images.each do |n| - type, period = n.sub(".png", '').split("-") - periods[period] ||= [] - types[type] ||= [] - periods[period] << n - types[type] << n - end - - files = [] - # Make the period html files - periodorder.each do |period| - unless ary = periods[period] - raise Puppet::Error, "Could not find graphs for #{period}" - end - files << htmlfile(period, ary, :first) - end - - # make the type html files - types.sort { |a,b| a[0] <=> b[0] }.each do |type, ary| - newary = [] - periodorder.each do |period| - if graph = ary.find { |g| g.include?("-#{period}.png") } - newary << graph - else - raise "Could not find #{type}-#{period} graph" - end - end - - files << htmlfile(type, newary, :second) - end - - File.open(File.join(hostdir, "index.html"), "w") do |of| - of.puts "Report graphs for #{host}" - files.each do |file| - of.puts "#{File.basename(file).sub(".html",'').capitalize}
" - end - of.puts "" - end - end - - def process(time = nil) - time ||= Time.now.to_i - - unless File.directory?(hostdir) and FileTest.writable?(hostdir) - # Some hackishness to create the dir with all of the right modes and ownership - config = Puppet::Settings.new - config.define_settings(:reports, :hostdir => {:type => :directory, :default => hostdir, :owner => 'service', :mode => 0755, :group => 'service', :desc => "eh"}) - - # This creates the dir. - config.use(:reports) - end - - self.metrics.each do |name, metric| - metric.basedir = hostdir - - if name == "time" - timeclean(metric) - end - - metric.store(time) - - metric.graph - end - - mkhtml unless Puppet::FileSystem.exist?(File.join(hostdir, "index.html")) - end - - # Unfortunately, RRD does not deal well with changing lists of values, - # so we have to pick a list of values and stick with it. In this case, - # that means we record the total time, the config time, and that's about - # it. We should probably send each type's time as a separate metric. - def timeclean(metric) - metric.values = metric.values.find_all { |name, label, value| ['total', 'config_retrieval'].include?(name.to_s) } - end -end - diff --git a/spec/fixtures/yaml/report0.25.x.yaml b/spec/fixtures/yaml/report0.25.x.yaml deleted file mode 100644 index b6e4a73d6..000000000 --- a/spec/fixtures/yaml/report0.25.x.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- !ruby/object:Puppet::Transaction::Report - host: mattmac.local - logs: - - !ruby/object:Puppet::Util::Log - level: !ruby/sym info - message: Applying configuration version '1285283846' - source: Puppet - tags: - - info - time: 2010-09-23 16:17:26.977750 -07:00 - metrics: - time: !ruby/object:Puppet::Util::Metric - label: Time - name: time - values: - - - !ruby/sym config_retrieval - - Config retrieval - - 0.955046892166138 - - - !ruby/sym schedule - - Schedule - - 0.00123691558837891 - - - !ruby/sym total - - Total - - 0.956486701965332 - - - !ruby/sym filebucket - - Filebucket - - 0.00020289421081543 - resources: !ruby/object:Puppet::Util::Metric - label: Resources - name: resources - values: - - - !ruby/sym skipped - - Skipped - - 0 - - - !ruby/sym scheduled - - Scheduled - - 7 - - - !ruby/sym applied - - Applied - - 0 - - - !ruby/sym restarted - - Restarted - - 0 - - - !ruby/sym total - - Total - - 10 - - - !ruby/sym failed_restarts - - Failed restarts - - 0 - - - !ruby/sym out_of_sync - - Out of sync - - 0 - - - !ruby/sym failed - - Failed - - 0 - changes: !ruby/object:Puppet::Util::Metric - label: Changes - name: changes - values: - - - !ruby/sym total - - Total - - 0 - records: {} - time: 2010-09-23 16:17:26.987789 -07:00 diff --git a/spec/unit/reports/rrdgraph_spec.rb b/spec/unit/reports/rrdgraph_spec.rb deleted file mode 100755 index ea5258ea6..000000000 --- a/spec/unit/reports/rrdgraph_spec.rb +++ /dev/null @@ -1,29 +0,0 @@ -#! /usr/bin/env ruby -require 'spec_helper' - -require 'puppet/reports' - -processor = Puppet::Reports.report(:rrdgraph) - -describe processor do - include PuppetSpec::Files - before do - Puppet[:rrddir] = tmpdir('rrdgraph') - end - - after do - FileUtils.rm_rf(Puppet[:rrddir]) - end - - it "should not error on 0.25.x report format" do - report = YAML.load_file(File.join(PuppetSpec::FIXTURE_DIR, 'yaml/report0.25.x.yaml')).extend processor - report.expects(:mkhtml) - lambda{ report.process }.should_not raise_error - end - - it "should not error on 2.6.x report format" do - report = YAML.load_file(File.join(PuppetSpec::FIXTURE_DIR, 'yaml/report2.6.x.yaml')).extend processor - report.expects(:mkhtml) - lambda{ report.process }.should_not raise_error - end -end