Method: Kennel::Models::Dashboard#resolve_linked_tracking_ids!

Defined in:
lib/kennel/models/dashboard.rb

#resolve_linked_tracking_ids!(id_map, **args) ⇒ Object



178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
# File 'lib/kennel/models/dashboard.rb', line 178

def resolve_linked_tracking_ids!(id_map, **args)
  widgets = as_json[:widgets].flat_map { |w| [w, *w.dig(:definition, :widgets) || []] }
  widgets.each do |widget|
    next unless definition = widget[:definition]
    case definition[:type]
    when "uptime"
      if ids = definition[:monitor_ids]
        definition[:monitor_ids] = ids.map do |id|
          resolve(id, :monitor, id_map, **args) || id
        end
      end
    when "alert_graph"
      if id = definition[:alert_id]
        resolved = resolve(id, :monitor, id_map, **args) || id
        definition[:alert_id] = resolved.to_s # even though it's a monitor id
      end
    when "slo"
      if id = definition[:slo_id]
        definition[:slo_id] = resolve(id, :slo, id_map, **args) || id
      end
    end
  end
end