Я новичок в clojure, и мне нужно настроить конфигурацию riemann, чтобы можно было легко редактировать/добавлять новые условия . Что мы имеем сейчас:
(defn tell-ops
([to]
(by [:service]
(throttle 3 360
(rollup 2 360
slackerDefault
(email to)))))
([to channel]
(by [:service]
(throttle 3 360
(rollup 2 360
(slacker channel)
(email to))))))
............
(where (state "FATAL")
(where (service #"^Serv1")
(tell-ops "[email protected]" "#dev-ops1"))
(where (service #"^Serv2")
(tell-ops "[email protected]"))
....
)
кроме того, в нем отсутствует оператор по умолчанию, что-то вроде, если ничего не совпадает, Tell-Ops "[email protected]"
Я думаю, мне нужно что-то вроде структуры верхнего уровня
(def services
[{:regex #"^serv1" :mail "[email protected]" :channel "#serv1"}
{:regex #"serv2$" :mail "[email protected]"} ])
чтобы можно было легко добавлять новые. Но я понятия не имею, как пройтись по этому массиву, учитывая отсутствие :channel во втором случае и выполнение «вызова по умолчанию», если ни одно из регулярных выражений не соответствует
заранее спасибо