Method: GrafanaReporter::Asciidoctor::PanelImageInlineMacro#process

Defined in:
lib/grafana_reporter/asciidoctor/panel_image_inline_macro.rb

#process(parent, target, attrs) ⇒ Object

:nodoc:


37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/grafana_reporter/asciidoctor/panel_image_inline_macro.rb', line 37

def process(parent, target, attrs)
  return if @report.cancel

  @report.next_step
  instance = attrs['instance'] || parent.document.attr('grafana_default_instance') || 'default'
  dashboard = attrs['dashboard'] || parent.document.attr('grafana_default_dashboard')
  @report.logger.debug("Processing PanelImageInlineMacro (instance: #{instance}, dashboard: #{dashboard},"\
                       " panel: #{target})")

  begin
    # set alt text to a default, because otherwise asciidoctor fails
    attrs['alt'] = '' unless attrs['alt']
    query = PanelImageQuery.new(@report.grafana(instance).dashboard(dashboard).panel(target),
                                variables: build_attribute_hash(parent.document.attributes, attrs))

    image = query.execute
    image_path = @report.save_image_file(image)
  rescue Grafana::GrafanaError => e
    @report.logger.error(e.message)
    return create_inline(parent, :quoted, e.message)
  rescue GrafanaReporterError => e
    @report.logger.error(e.message)
    return create_inline(parent, :quoted, e.message)
  rescue StandardError => e
    @report.logger.fatal("#{e.message}\n#{e.backtrace.join("\n")}")
    return create_inline(parent, :quoted, "#{e.message}\n#{e.backtrace.join("\n")}")
  end

  create_inline(parent, :image, nil, { target: image_path, attributes: attrs })
end