class Object

Public Instance Methods

build_record(type, data_to_build) click to toggle source
# File lib/juniper_telemetry_lib.rb, line 36
def build_record(type, data_to_build)

  if type.to_s == 'flat'

    record = {}

    # initialize variables
    name = ""
    sensor_value = ""

    ## Concatene all key/value into a string and stop at "value"
    data_to_build.each do |entry|
      entry.each do |key, value|

        if key == "value"
          sensor_value = value
          next
        end

        if name == ""
          name = key + "." + clean_up_name(value)
        else
          name = name + "." + key + "." + clean_up_name(value)
        end
      end
    end

    record = { name => sensor_value }
    return record

  elsif output_format.to_s == 'structured'

    record = {}
    ## Convert list into Hash
    ## Each entry on the list is a hash with 1 key/value
    data_to_build.each do |entry|
      entry.each do |key, value|
        record[key] = value
      end
    end

    return record

  elsif output_format.to_s == 'statsd'

      record = {}

      # initialize variables
      name = ""
      sensor_value = ""

      ## Concatene all key/value into a string, exclude device & stop at "value"
      data_to_build.each do |entry|
        entry.each do |key, value|

          if key == "value"
            sensor_value = value
            next
          elsif key == "device"
            next
          else
            if name == ""
              name = key + "." + clean_up_name(value)
            else
              name = name + "." + key + "." + clean_up_name(value)
            end
          end
        end
      end

      record[:statsd_type] = 'gauge'
      record[:statsd_key] = name.downcase
      record[:statsd_gauge] = sensor_value

      return record
  else
    $log.warn "Output_format '#{type.to_s}' not supported"
  end
end
clean_up_name(name) click to toggle source
# File lib/juniper_telemetry_lib.rb, line 22
def clean_up_name(name)

    ## Create a clean copy of Name and convert to string
    tmp = name.to_s.dup

    ## Clean up device name and interface name to remove restricted caracter
    tmp.gsub!('/', '_')
    tmp.gsub!(':', '_')
    tmp.gsub!('.', '_')
    tmp.gsub!(' ', '_')

    return tmp
end
epoc_to_sec(epoc) click to toggle source

Supporting functions ##

# File lib/juniper_telemetry_lib.rb, line 6
def epoc_to_sec(epoc)

  # Check if sec, usec or msec
  nbr_digit = epoc.to_s.size

  if nbr_digit == 10
    return epoc.to_i
  elsif nbr_digit == 13
    return (epoc.to_i/1000).to_i
  elsif nbr_digit == 16
    return (epoc.to_i/1000000).to_i
  end

  return epoc
end