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