Sha256: 22628f683a1c08179630ccb558ed1ad17d14486698210a74ad546504edb23446

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

require 'rubygems'
require 'socket'
require 'resourceful'
require 'pp'

require File.dirname(__FILE__) + '/collectd_server/packet'
require File.dirname(__FILE__) + '/collectd_server/ssbe_authenticator'

PREVIOUS_VALUES = {}

module CollectdServer

  class Runner

    attr_accessor :port

    def initialize(port = 1981, services = 'http://auth.v6.localhost/services')
      @port = port
      @services = services
    end

    def run!
      @socket = UDPSocket.new
      @socket.bind(nil, port)
      @connection = Connection.new(@services)
      loop do
        data = @socket.recvfrom(65535)
        @connection.receive_data(data.first)
      end

    end

  end

  class Connection

    def initialize(service_uri)
      @http = Resourceful::HttpAccessor.new
      @http.add_authenticator(Resourceful::SSBEAuthenticator.new('admin', 'admin'))
      resp = @http.resource(service_uri).get(:accept => 'application/csv')

      bulk_datapoint_href = nil
      FasterCSV.parse(resp.body, :headers => true) do |row|
        if row['name'] == 'BulkCreateDatapoints'
          bulk_datapoint_href = row['resource_href']
        end
      end

      @datapoint_resource = @http.resource(bulk_datapoint_href)

    end

    def receive_data(data)
      packet = Packet.new(data)
      dps = packet.to_datapoints

      csv = FasterCSV.generate do |csv|
        dps.each do |dp|
          csv << dp.to_a
        end
      end

      @datapoint_resource.post(csv, :content_type => 'text/csv')

    end
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
absperf-collectd_server-0.1.0 lib/collectd_server.rb
absperf-collectd_server-0.1.1 lib/collectd_server.rb