class Stax::Datadog::Api
Public Class Methods
add_to_list(id, dashboards)
click to toggle source
# File lib/stax/datadog/api.rb, line 53 def add_to_list(id, dashboards) resp = client.add_items_to_dashboard_list(id, Array(dashboards)) handle_response(resp) end
client()
click to toggle source
# File lib/stax/datadog/api.rb, line 18 def client @_client ||= Dogapi::Client.new(datadog_api_key, datadog_app_key) rescue RuntimeError => e abort("Stax::Datadog: #{e.message}") end
create_dashboard(*args)
click to toggle source
# File lib/stax/datadog/api.rb, line 87 def create_dashboard(*args) if dashboard_exists?(args[0]) warn("Dashboard #{args[0]} already exists") else handle_response(client.create_dashboard(*args)).dig('dash', 'id') end end
create_or_get_list(name)
click to toggle source
create list, unless there is already a list with this name
# File lib/stax/datadog/api.rb, line 40 def create_or_get_list(name) list = find_lists(name)&.first || handle_response(client.create_dashboard_list(name)) get_list(list['id']) end
dashboard_exists?(name)
click to toggle source
# File lib/stax/datadog/api.rb, line 74 def dashboard_exists?(name) !find_dashboards(name).empty? end
dashboards()
click to toggle source
# File lib/stax/datadog/api.rb, line 63 def dashboards @_dashboards ||= client.get_dashboards[1]['dashes'] end
datadog_api_key()
click to toggle source
override to set these values in a different way, eg from SSM param store
# File lib/stax/datadog/api.rb, line 10 def datadog_api_key ENV['DATADOG_API_KEY'] end
datadog_app_key()
click to toggle source
# File lib/stax/datadog/api.rb, line 14 def datadog_app_key ENV['DATADOG_APP_KEY'] end
delete_dashboards(name)
click to toggle source
# File lib/stax/datadog/api.rb, line 104 def delete_dashboards(name) find_dashboards(name).each do |dashboard| id = dashboard['id'] warn("Deleting dashboard #{name} (#{id})") handle_response(client.delete_dashboard(id)) end end
delete_from_list(id, dashboards)
click to toggle source
# File lib/stax/datadog/api.rb, line 58 def delete_from_list(id, dashboards) resp = client.delete_items_from_dashboard_list(id, Array(dashboards)) handle_response(resp) end
find_dashboards(x)
click to toggle source
find all dashboards with title or id
# File lib/stax/datadog/api.rb, line 68 def find_dashboards(x) dashboards.select do |t| (t['title'] == x) || (t['id'] == x) end end
find_lists(x)
click to toggle source
find all lists with name or id
# File lib/stax/datadog/api.rb, line 29 def find_lists(x) lists.select do |l| (l['name'] == x) || (l['id'] == x) end end
get_list(id)
click to toggle source
# File lib/stax/datadog/api.rb, line 45 def get_list(id) handle_response(client.get_dashboard_list(id)) end
get_list_items(id)
click to toggle source
# File lib/stax/datadog/api.rb, line 49 def get_list_items(id) handle_response(client.get_items_of_dashboard_list(id)) end
handle_response(resp)
click to toggle source
# File lib/stax/datadog/api.rb, line 78 def handle_response(resp) if resp[0].match(/^2\d\d$/) resp[1] else warn(resp[1].fetch('errors', 'datadog error')) nil end end
list_exists?(name)
click to toggle source
# File lib/stax/datadog/api.rb, line 35 def list_exists?(name) !find_lists(name).empty? end
lists()
click to toggle source
# File lib/stax/datadog/api.rb, line 24 def lists handle_response(client.get_all_dashboard_lists)['dashboard_lists'] end
update_dashboard(*args)
click to toggle source
# File lib/stax/datadog/api.rb, line 95 def update_dashboard(*args) if dashboard_exists?(args[0]) id = find_dashboards(args[0]).first['id'] handle_response(client.update_dashboard(id, *args)) else warn("Dashboard #{args[0]} does not exist") end end