57 lines
1.4 KiB
Ruby
Executable File
57 lines
1.4 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
require "mysql2"
|
|
require "json"
|
|
|
|
target_type = ARGV[0]
|
|
|
|
client = Mysql2::Client.new(:host => "localhost", :username => "prom", :password => "prom", :database => "registry")
|
|
query = "SELECT t.target_id , t.target, tl.label_key,tl.label_value FROM targets t
|
|
JOIN targets_lables tl ON t.target_id = tl.target_id
|
|
WHERE t.y = 1 AND tl.target_id IN (SELECT t.target_id FROM targets t
|
|
JOIN targets_lables tl ON t.target_id = tl.target_id
|
|
WHERE t.y = 1 AND tl.label_key = 'target_type' AND tl.label_value = ?);"
|
|
|
|
statement = client.prepare(query)
|
|
|
|
targets = {}
|
|
results = statement.execute(target_type)
|
|
|
|
results.each do |row|
|
|
if targets[row["target"]].nil?
|
|
targets[row["target"]] = {}
|
|
|
|
case row["label_key"]
|
|
when 'target_type'
|
|
if row["label_value"] == target_type
|
|
targets[row["target"]][row["label_key"]] = row["label_value"]
|
|
end
|
|
else
|
|
targets[row["target"]][row["label_key"]] = row["label_value"]
|
|
end
|
|
|
|
else
|
|
case row["label_key"]
|
|
when 'target_type'
|
|
if row["label_value"] == target_type
|
|
targets[row["target"]][row["label_key"]] = row["label_value"]
|
|
end
|
|
else
|
|
targets[row["target"]][row["label_key"]] = row["label_value"]
|
|
end
|
|
|
|
end
|
|
end
|
|
|
|
client.close
|
|
|
|
def dump_targets(targets)
|
|
res = []
|
|
targets.each_key do |key|
|
|
res << { "targets" => [ key ], "labels" => targets[key] }
|
|
end
|
|
puts JSON.pretty_generate(res)
|
|
end
|
|
|
|
dump_targets(targets)
|