| @ -0,0 +1,245 @@ | |||||
| var client = require("../client"); | |||||
| var util = require("util"); | |||||
| /*section: timeboard | |||||
| *comment: add a new timeboard | |||||
| *params: | |||||
| * title: the title of the timeboard | |||||
| * description: the description of the timeboard | |||||
| * graphs: | | |||||
| * an array of objects with the following keys | |||||
| * * title: the name of the graph | |||||
| * * definition: an object containing the graph definition, e.g. `{"requests": [{"q": "system.cpu.idle{*} by {host}"}` | |||||
| * templateVariables: | | |||||
| * optional, an array of objects with the following keys | |||||
| * * name: the name of the variable | |||||
| * * prefix: optional, the tag prefix for this variable | |||||
| * * default: optional, the default value for this tag | |||||
| * callback: function(err, res) | |||||
| *example: | | |||||
| * ```javascript | |||||
| * var dogapi = require("dogapi"); | |||||
| * var options = { | |||||
| * api_key: "api_key", | |||||
| * app_key: "app_key" | |||||
| * }; | |||||
| * dogapi.initialize(options); | |||||
| * var title = "Time Keeps on Slipping"; | |||||
| * var description = "Into the Future"; | |||||
| * var graphs = [ | |||||
| * { | |||||
| * definition: { | |||||
| * events: [], | |||||
| * requests: [ | |||||
| * {q: "avg:system.mem.free{*}"} | |||||
| * ], | |||||
| * viz: "timeseries" | |||||
| * }, | |||||
| * title: "Average Memory Free" | |||||
| * } | |||||
| * ]; | |||||
| * var templateVariables = [ | |||||
| * { | |||||
| * name: "host1", | |||||
| * prefix: "host", | |||||
| * default: "host:my-host" | |||||
| * } | |||||
| * ]; | |||||
| * dogapi.timeboard.create( | |||||
| * title, description, graphs, templateVariables, | |||||
| * function(err, res){ | |||||
| * console.dir(res); | |||||
| * } | |||||
| * ); | |||||
| * ``` | |||||
| */ | |||||
| function create(title, description, graphs, templateVariables, callback){ | |||||
| if(arguments.length < 5 && typeof arguments[3] === "function"){ | |||||
| callback = templateVariables; | |||||
| templateVariables = []; | |||||
| } | |||||
| var params = { | |||||
| body: { | |||||
| title: title, | |||||
| description: description, | |||||
| graphs: graphs | |||||
| } | |||||
| }; | |||||
| if(Array.isArray(templateVariables) && templateVariables.length){ | |||||
| params.body.template_variables = templateVariables; | |||||
| } | |||||
| client.request("POST", "/dash", params, callback); | |||||
| } | |||||
| /*section: timeboard | |||||
| *comment: update an existing timeboard | |||||
| *params: | |||||
| * dashId: the id of the timeboard to update | |||||
| * title: the title of the timeboard | |||||
| * description: the description of the timeboard | |||||
| * graphs: | | |||||
| * an array of objects with the following keys | |||||
| * * title: the name of the graph | |||||
| * * definition: an object containing the graph definition, e.g. `{"requests": [{"q": "system.cpu.idle{*} by {host}"}` | |||||
| * templateVariables: | | |||||
| * optional, an array of objects with the following keys | |||||
| * * name: the name of the variable | |||||
| * * prefix: optional, the tag prefix for this variable | |||||
| * * default: optional, the default value for this tag | |||||
| * callback: function(err, res) | |||||
| *example: | | |||||
| * ```javascript | |||||
| * var dogapi = require("dogapi"); | |||||
| * var options = { | |||||
| * api_key: "api_key", | |||||
| * app_key: "app_key" | |||||
| * }; | |||||
| * dogapi.initialize(options); | |||||
| * var title = "Time Keeps on Slipping"; | |||||
| * var description = "Into the Future"; | |||||
| * var graphs = [ | |||||
| * { | |||||
| * definition: { | |||||
| * events: [], | |||||
| * requests: [ | |||||
| * {q: "avg:system.mem.free{*}"} | |||||
| * ], | |||||
| * viz: "timeseries" | |||||
| * }, | |||||
| * title: "Average Memory Free" | |||||
| * } | |||||
| * ]; | |||||
| * var templateVariables = [ | |||||
| * { | |||||
| * name: "host1", | |||||
| * prefix: "host", | |||||
| * default: "host:my-host" | |||||
| * } | |||||
| * ]; | |||||
| * dogapi.timeboard.update( | |||||
| * 1234, title, description, graphs, templateVariables, | |||||
| * function(err, res){ | |||||
| * console.dir(res); | |||||
| * } | |||||
| * ); | |||||
| * ``` | |||||
| */ | |||||
| function update(dashId, title, description, graphs, templateVariables, callback){ | |||||
| if(arguments.length < 6 && typeof arguments[4] === "function"){ | |||||
| callback = templateVariables; | |||||
| templateVariables = []; | |||||
| } | |||||
| var params = { | |||||
| body: { | |||||
| title: title, | |||||
| description: description, | |||||
| graphs: graphs | |||||
| } | |||||
| }; | |||||
| if(Array.isArray(templateVariables) && templateVariables.length){ | |||||
| params.body.template_variables = templateVariables; | |||||
| } | |||||
| client.request("POST", util.format("/dash/%s", dashId), params, callback); | |||||
| } | |||||
| /*section: timeboard | |||||
| *comment: remove an existing timeboard | |||||
| *params: | |||||
| * dashId: the id of the timeboard to remove | |||||
| * callback: function(err, res) | |||||
| *example: | | |||||
| * ```javascript | |||||
| * var dogapi = require("dogapi"); | |||||
| * var options = { | |||||
| * api_key: "api_key", | |||||
| * app_key: "app_key" | |||||
| * }; | |||||
| * dogapi.initialize(options); | |||||
| * dogapi.timeboard.remove(1234, function(err, res){ | |||||
| * console.dir(res); | |||||
| * }); | |||||
| * ``` | |||||
| */ | |||||
| function remove(dashId, callback){ | |||||
| client.request("DELETE", util.format("/dash/%s", dashId), params, callback); | |||||
| } | |||||
| /*section: timeboard | |||||
| *comment: get all existing timeboards | |||||
| *params: | |||||
| * callback: function(err, res) | |||||
| *example: | | |||||
| * ```javascript | |||||
| * var dogapi = require("dogapi"); | |||||
| * var options = { | |||||
| * api_key: "api_key", | |||||
| * app_key: "app_key" | |||||
| * }; | |||||
| * dogapi.initialize(options); | |||||
| * dogapi.timeboard.getAll(1234, function(err, res){ | |||||
| * console.dir(res); | |||||
| * }); | |||||
| * ``` | |||||
| */ | |||||
| function getAll(callback){ | |||||
| client.request("GET", "/dash", params, callback); | |||||
| } | |||||
| /*section: timeboard | |||||
| *comment: get an existing timeboard | |||||
| *params: | |||||
| * dashId: the id of the timeboard to get | |||||
| * callback: function(err, res) | |||||
| *example: | | |||||
| * ```javascript | |||||
| * var dogapi = require("dogapi"); | |||||
| * var options = { | |||||
| * api_key: "api_key", | |||||
| * app_key: "app_key" | |||||
| * }; | |||||
| * dogapi.initialize(options); | |||||
| * dogapi.timeboard.get(1234, function(err, res){ | |||||
| * console.dir(res); | |||||
| * }); | |||||
| * ``` | |||||
| */ | |||||
| function get(dashId, callback){ | |||||
| client.request("GET", util.format("/dash/%s", dashId), params, callback); | |||||
| } | |||||
| module.exports = { | |||||
| create: create, | |||||
| update: update, | |||||
| remove: remove, | |||||
| getAll: getAll, | |||||
| get: get, | |||||
| getUsage: function(){ | |||||
| return [ | |||||
| " dogapi timeboard get <dash-id>", | |||||
| " dogapi timeboard getall", | |||||
| " dogapi timeboard remove <dash-id>", | |||||
| " dogapi timeboard create <title> <description> <graphs> [--tmpvars <templateVariables>]", | |||||
| " dogapi timeboard update <dash-id> <title> <description> <graphs> [--tmpvars <templateVariables>]", | |||||
| ]; | |||||
| }, | |||||
| getHelp: function(){ | |||||
| return [ | |||||
| "Timeboard:", | |||||
| " Subcommands:", | |||||
| " get <dash-id>", | |||||
| " getall", | |||||
| " remove <dash-id>", | |||||
| " create <title> <description> <graphs>", | |||||
| " update <dash-id> <title> <description> <graphs>", | |||||
| " Options:", | |||||
| " --tmpvars <templateVariables>" | |||||
| ]; | |||||
| }, | |||||
| handleCli: function(subcommand, args, callback){ | |||||
| } | |||||
| }; | |||||