class RRD::Builder

Constants

ARCHIVE_TYPES
DATASOURCE_TYPES

Attributes

archives[RW]
datasources[RW]
output[RW]
parameters[RW]

Public Class Methods

new(output, parameters = {}) click to toggle source
# File lib/rrd/builder.rb, line 8
def initialize(output, parameters = {})
  @output = output
  
  @parameters = {:step => 5.minutes, :start => Time.now - 10.seconds }.merge parameters
  @parameters[:start] = @parameters[:start].to_i
  
  @datasources = []
  @archives = []
end

Public Instance Methods

archive(consolidation_function, options = {}) click to toggle source
# File lib/rrd/builder.rb, line 26
def archive(consolidation_function, options = {})
  options = {:every => 5.minutes, :during => 1.day}.merge options
  # steps and rows must be integer, so we need to convert float values
  archive_steps = (options[:every]/parameters[:step]).to_i
  archive_rows = (options[:during]/options[:every]).to_i
  archive = "RRA:#{consolidation_function.to_s.upcase}:0.5:#{archive_steps}:#{archive_rows}"
  archives << archive
  archive
end
datasource(name, options = {}) click to toggle source
# File lib/rrd/builder.rb, line 18
def datasource(name, options = {})
  options = {:type => :gauge, :heartbeat => 10.minutes, :min => 0, :max => :unlimited}.merge options
  options[:max] = "U" if options[:max] == :unlimited
  datasource = "DS:#{name}:#{options[:type].to_s.upcase}:#{options[:heartbeat]}:#{options[:min]}:#{options[:max]}"
  datasources << datasource
  datasource
end
save() click to toggle source
# File lib/rrd/builder.rb, line 36
def save
  args = [output]
  line_parameters = RRD.to_line_parameters(parameters)
  args += line_parameters
  args += datasources
  args += archives
  
  Wrapper.create(*args)
end