Created
January 28, 2014 21:43
-
-
Save kbarber/8677137 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns giordano.pdb | |
(:require [clj-http.client :as client])) | |
(defn cm [host port] | |
{:host host | |
:port port | |
:cm (clj-http.conn-mgr/make-reusable-conn-manager {:timeout 2 :threads 4})}) | |
(defn query [cm url] | |
(let [host (:host cm) | |
port (:port cm) | |
cm (:cm cm)] | |
(:body (client/get (str "http://" host ":" port url) | |
{:connection-manager cm | |
:accept :json | |
:as :json-string-keys})))) | |
(defn metric [cm metric] | |
(let [encoded (clj-http.util/url-encode metric)] | |
(query cm (str "/v3/metrics/mbean/" encoded)))) | |
(defn mbeans-all [cm] | |
"Retrieve top level mbeans" | |
(query cm "/v3/metrics/mbeans")) | |
(defn metrics-all | |
([cm] | |
"Retreive all metrics without a filter" | |
(metrics-all cm nil)) | |
([cm filt] | |
"Retreive all metrics with a filter" | |
(let [mbeans (query cm "/v3/metrics/mbeans")] | |
(for [[k v] (seq mbeans) | |
:let [data (metric cm k)] | |
:when (or (nil? filt) (nil? (re-find filt k)))] | |
[k data])))) | |
(defn metrics-all-table | |
([cm] | |
"Retreive all metrics without a filter" | |
(metrics-all-table cm nil)) | |
([cm filt] | |
"Retreive all metrics with a filter" | |
(let [result (atom []) | |
mbeans (mbeans-all cm)] | |
(doseq [[object _] (seq mbeans) | |
:let [data (metric cm object)] | |
:when (or (nil? filt) (nil? (re-find filt object)))] | |
(doseq [[property value] (seq data)] | |
(swap! result #(conj %1 [object property value])))) | |
@result))) | |
(defn nodes-all-table [cm] | |
"Retreive all nodes" | |
(let [raw (query cm "/v3/nodes")] | |
(vec (for [node raw | |
:let [name (get node "name") | |
deac (get node "deactivated") | |
cat (get node "catalog_timestamp") | |
fact (get node "facts_timestamp") | |
rep (get node "report_timestamp")]] | |
[name deac cat fact rep])))) | |
(defn facts-all-table [cm] | |
"Retreive all facts" | |
(let [raw (query cm "/v3/facts")] | |
(vec (for [node raw | |
:let [certname (get node "certname") | |
name (get node "name") | |
value (get node "value")]] | |
[certname name value])))) | |
(defn resources-all-table [cm] | |
"Retreive all resources" | |
(let [raw (query cm "/v3/resources")] | |
(vec (for [node raw | |
:let [certname (get node "certname") | |
type (get node "type") | |
title (get node "title") | |
tags (get node "tags") | |
parameters (get node "parameters") | |
exported (get node "exported") | |
file (get node "file") | |
line (get node "line")]] | |
[certname type title tags parameters exported file line])))) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment