lib/fnordmetric/web/reactor.rb in fnordmetric-1.0.1 vs lib/fnordmetric/web/reactor.rb in fnordmetric-1.2.0
- old
+ new
@@ -20,15 +20,27 @@
return false unless ns = @namespaces[event["namespace"].to_sym]
messages << discover(ns) if event["type"] == "discover_request"
messages << widget(ns, event) if event["type"] == "widget_request"
messages << gauge(ns, event) if event["type"] == "render_request"
messages << active_users(ns, event) if event["type"] == "active_users_request"
- messages.flatten.compact
+ messages << gauge_list(ns, event) if event["type"] == "gauge_list_request"
+
+ messages.flatten.compact.map do |m|
+ m["namespace"] = event["namespace"]; m
+ end
end
def widget(namespace, event)
- "FnordMetric::#{event["klass"]}".constantize.execute(namespace, event) # FIXPAUL
+ klass = if event["klass"] == "generic" && event["cmd"] == "values_for"
+ FnordMetric::NumbersWidget
+ elsif event["klass"] == "generic" && event["cmd"] == "values_at"
+ FnordMetric::TimeseriesWidget
+ else
+ "FnordMetric::#{event["klass"]}".constantize
+ end
+
+ klass.execute(namespace, event)
end
def gauge(namespace, event)
return false unless gauge = namespace.gauges[event["gauge"].to_sym]
@@ -38,10 +50,12 @@
:payload => gauge.render_to_event(namespace, event)
}
end
def discover(namespace)
+ namespace.ready!(@redis)
+
[namespace.dashboards.map do |dash_key, dash|
{ "type" => "discover_response", "gauge_key" => dash_key, "view" => "dashboard",
"group" => dash.group }
end,
namespace.gauges.map do |gauge_key, gauge|
@@ -79,9 +93,25 @@
{
:type => "active_users_response",
:sessions => sessions,
:events => events.map(&:to_json),
:types => types
+ }
+ end
+
+ def gauge_list(namespace, event)
+ namespace.ready!(@redis)
+
+ gauges = namespace.gauges.map do |name, gauge|
+ {
+ "key" => gauge.name,
+ "title" => gauge.title
+ }
+ end
+
+ {
+ :type => "gauge_list_response",
+ :gauges => gauges
}
end
end