class InfluxdbSetup::LoadQueries
Constants
- FileFormatError
Public Instance Methods
call()
click to toggle source
# File lib/influxdb_setup/load_queries.rb, line 18 def call queries_file = Pathname.new("db/influxdb_queries.yml") if queries_file.exist? db = @config.db_name root = @config.build_client(db) existing_queries = root.list_continuous_queries(db) raw = YAML.load(ERB.new(queries_file.read).result) || {} raise FileFormatError, "expected influxdb_queries.yml to be a hash, was a #{raw.class.name}" unless raw.is_a?(Hash) expected_queries = raw.map do |name, query| Query.new(name, query) end # Delete first in case an old name is getting overwritten existing_queries.each do |query| if expected_queries.none? {|expected| expected.name == query["name"]} log "Removing '#{query['name']}', was: '#{query['query']}'" root.delete_continuous_query(query["name"], db) end end expected_queries.each do |expected| if existing_queries.any? {|hash| hash["name"] == expected.name} log "Skipping '#{expected.raw_name}', a query by that name already exists" else log "Adding '#{expected.raw_name}': '#{expected.query}'" root.create_continuous_query(expected.name, db, expected.query) end end else log "No influxdb_queries.yml file found, skipping continuous queries setup" end end