From 7b321cc8ee0025ae1ee631b174882bbcfc074d93 Mon Sep 17 00:00:00 2001 From: brettlangdon Date: Sat, 21 Mar 2015 18:46:50 -0400 Subject: [PATCH] add graph api --- lib/api/graph.js | 73 ++++++++++++++++++++++++++++++++++++++++++++++++ lib/api/index.js | 1 + 2 files changed, 74 insertions(+) create mode 100644 lib/api/graph.js diff --git a/lib/api/graph.js b/lib/api/graph.js new file mode 100644 index 0000000..84fdbff --- /dev/null +++ b/lib/api/graph.js @@ -0,0 +1,73 @@ +var client = require("../client"); + +/*section: graph + *comment: take a snapshot of a metric query + *params: + * query: the metric query to use for the snapshot + * from: POSIX timestamp for the beginning of the query + * to: POSIX timestamp for the end of the query + * eventQuery: optional, an event query to overlay event bands on the snapshot + * callback: function(err, res) + *example: | + * ```javascript + * var dogapi = require("dogapi"); + * var options = { + * api_key: "api_key", + * app_key: "app_key" + * }; + * dogapi.initialize(options); + * var query = "system.cpu.idle{*}"; + * var to = dogapi.now(); + * var from = from - 3600; // an hour ago + * dogapi.graph.snapshot(query, from, to, function(err, res){ + * console.dir(res); + * }); + * ``` + */ +function snapshot(query, from, to, eventQuery, callback){ + if(arguments.length < 5 && typeof arguments[3] === "function"){ + callback = eventQuery; + eventQuery = undefined; + } + var params = { + query: { + metric_query: query, + start: parseInt(from), + end: parseInt(to) + } + }; + if(eventQuery){ + params.query.event_query = eventQuery; + } + + client.request("GET", "/graph/snapshot", params, callback); +} + +module.exports = { + snapshot: snapshot, + getUsage: function(){ + return [ + " dogapi graph snapshot [--events ]" + ]; + }, + getHelp: function(){ + return [ + "Graph:", + " Subcommands:", + " snapshot take a snapshot of a graph", + " Options:", + " --events a query for event bands to add to the snapshot" + ]; + }, + handleCli: function(subcommand, args, callback){ + if(args._.length > 5){ + var query = args._[4]; + var from = parseInt(args._[5]); + var to = parseInt(args._[6]); + var eventQuery = args["events"]; + snapshot(query, from, to, eventQuery, callback); + } else { + callback("unknown subcommand or arguments try `dogapi graph --help` for help", false); + } + } +}; diff --git a/lib/api/index.js b/lib/api/index.js index 90a1b3f..e8edf67 100644 --- a/lib/api/index.js +++ b/lib/api/index.js @@ -1,5 +1,6 @@ var api = { event: require("./event"), + graph: require("./graph"), host: require("./host"), infrastructure: require("./infrastructure"), metric: require("./metric"),