class DTK::State::Component::Attribute::Influxdb::Client

Constants

INFLUXDB_SECRET_DIR

Attributes

connection[R]
connection_parameters[R]

Public Class Methods

new() click to toggle source
# File lib/state/component/providers/influxdb/client.rb, line 7
def initialize
  @connection_parameters   = return_connection_parameters
  @connection    = return_connection(@connection_parameters)
end

Public Instance Methods

measurement_helper(measurement_name) click to toggle source
# File lib/state/component/providers/influxdb/client.rb, line 26
def measurement_helper(measurement_name)
  klass = Measurement.const_get(measurement_name.to_sym.capitalize)
  klass.new(measurement_name, self)
rescue => e
  raise e
end
query(query_expression) click to toggle source
# File lib/state/component/providers/influxdb/client.rb, line 12
def query(query_expression)
  query_api = self.connection.create_query_api
  query_api.query(query_expression)
rescue => e
  raise "Failed while processing flux query!. Error: #{e}"
end
write_point(data) click to toggle source
# File lib/state/component/providers/influxdb/client.rb, line 19
def write_point(data)
  write_api = self.connection.create_write_api
  write_api.write(data: data)
rescue => e
  raise e
end

Private Instance Methods

return_connection(connection_parameters) click to toggle source
# File lib/state/component/providers/influxdb/client.rb, line 54
def return_connection(connection_parameters)
  client = InfluxDB2::Client.new(connection_parameters[:url], connection_parameters[:token],
                        bucket: connection_parameters[:bucket],
                        org: connection_parameters[:org],
                        precision: InfluxDB2::WritePrecision::MILLISECOND,
                        use_ssl: false)
  query_api = client.create_query_api
  query_api.query(query: 'from(bucket:"' + connection_parameters[:bucket] + '") |> range(start: -5)')
  client
rescue => e
  raise "Connection with InfluxDB could not be established. #{e}"
end
return_connection_parameters() click to toggle source
# File lib/state/component/providers/influxdb/client.rb, line 37
def return_connection_parameters
  params = {}
  Dir.children(INFLUXDB_SECRET_DIR).each do |file| 
    if (file == 'url' || file == 'token' || file == 'org' || file == 'bucket')
      params[file.to_sym] = File.read("#{INFLUXDB_SECRET_DIR}#{file}")
    end
  end
  {
    url: params[:url],
    token: params[:token],
    org: params[:org],
    bucket: params[:bucket]
  }
rescue => e
  raise "Problem happened while processing InfluxDB connection parameters. Error: #{e}"
end