class Grafana::GrafanaAnnotationsDatasource
Implements the datasource interface to grafana annotations.
Public Instance Methods
request(query_description)
click to toggle source
:raw_query
needs to contain a Hash with the following structure:
{ dashboardId: Dashboard ID as String or nil panelId: Panel ID as String or nil columns: limit: alertId: userId: type: tags: }
@see AbstractDatasource#request
# File lib/grafana/grafana_annotations_datasource.rb, line 19 def request(query_description) webrequest = query_description[:prepared_request] webrequest.relative_url = "/api/annotations#{url_parameters(query_description)}" result = webrequest.execute(query_description[:timeout]) json = JSON.parse(result.body) content = [] begin json.each { |item| content << item.fetch_values(*query_description[:raw_query]['columns'].split(',')) } rescue KeyError => e raise MalformedAttributeContentError.new(e.message, 'columns', query_description[:raw_query]['columns']) end result = {} result[:header] = [query_description[:raw_query]['columns'].split(',')] result[:content] = content result end
Private Instance Methods
url_parameters(query_desc)
click to toggle source
# File lib/grafana/grafana_annotations_datasource.rb, line 43 def url_parameters(query_desc) url_vars = {} url_vars.merge!(query_desc[:raw_query].select do |k, _v| k =~ /^(?:limit|alertId|dashboardId|panelId|userId|type|tags)/ end) url_vars['from'] = query_desc[:from] if query_desc[:from] url_vars['to'] = query_desc[:to] if query_desc[:to] url_params = URI.encode_www_form(url_vars.map { |k, v| [k, v.to_s] }) return '' if url_params.empty? "?#{url_params}" end