Datadog API Node.JS Client
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

273 lines
8.5 KiB

const util = require('util');
const json = require('../json');
module.exports = function(client) {
/* 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
* const dogapi = require("dogapi");
* const options = {
* api_key: "api_key",
* app_key: "app_key"
* };
* dogapi.initialize(options);
* const title = "Time Keeps on Slipping";
* const description = "Into the Future";
* const graphs = [
* {
* definition: {
* events: [],
* requests: [
* {q: "avg:system.mem.free{*}"}
* ],
* viz: "timeseries"
* },
* title: "Average Memory Free"
* }
* ];
* const 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 = [];
}
const params = {
body: {
title,
description,
graphs
}
};
if (Array.isArray(templateVariables) && templateVariables.length > 0) {
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
* const dogapi = require("dogapi");
* const options = {
* api_key: "api_key",
* app_key: "app_key"
* };
* dogapi.initialize(options);
* const title = "Time Keeps on Slipping";
* const description = "Into the Future";
* const graphs = [
* {
* definition: {
* events: [],
* requests: [
* {q: "avg:system.mem.free{*}"}
* ],
* viz: "timeseries"
* },
* title: "Average Memory Free"
* }
* ];
* const 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 = [];
}
const params = {
body: {
title,
description,
graphs
}
};
if (Array.isArray(templateVariables) && templateVariables.length > 0) {
params.body.template_variables = templateVariables;
}
client.request('PUT', 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
* const dogapi = require("dogapi");
* const 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), {}, callback);
}
/* section: timeboard
*comment: get all existing timeboards
*params:
* callback: function(err, res)
*example: |
* ```javascript
* const dogapi = require("dogapi");
* const 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', {}, callback);
}
/* section: timeboard
*comment: get an existing timeboard
*params:
* dashId: the id of the timeboard to get
* callback: function(err, res)
*example: |
* ```javascript
* const dogapi = require("dogapi");
* const 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), {}, callback);
}
return {
create,
update,
remove,
getAll,
get,
getUsage() {
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() {
return [
'Timeboard:',
' Subcommands:',
' get <dash-id> get an existing timeboard',
' getall get all existing timeboards',
' remove <dash-id> remove an existing timeboard',
' create <title> <description> <graphs> create a new timeboard, <graphs> is a json of the graphs definition',
' update <dash-id> <title> <description> <graphs> update an existing timeboard, <graphs> is a json of the graphs definition',
' Options:',
' --tmpvars <templateVariables> a json representation of the template variables definition'
];
},
handleCli(subcommand, args, callback) {
if (subcommand === 'get') {
get(args._[4], callback);
} else if (subcommand === 'getall') {
getAll(callback);
} else if (subcommand === 'remove') {
remove(args._[4], callback);
} else if (subcommand === 'create') {
const title = args._[4];
const description = args._[5];
const graphs = json.parse(args._[6]);
const templateVariables = args.tmpvars ? json.parse(args.tmpvars) : [];
create(title, description, graphs, templateVariables, callback);
} else if (subcommand === 'update') {
const dashId = parseInt(args._[4]);
const title = args._[5];
const description = args._[6];
const graphs = json.parse(args._[7]);
const templateVariables = args.tmpvars ? json.parse(args.tmpvars) : [];
update(dashId, title, description, graphs, templateVariables, callback);
} else {
return callback(
'unknown subcommand or arguments try `dogapi timeboard --help` for help',
false
);
}
}
};
};