Browse Source

add downtime api

pull/14/head
Brett Langdon 11 years ago
parent
commit
0a18a915c5
2 changed files with 243 additions and 0 deletions
  1. +242
    -0
      lib/api/downtime.js
  2. +1
    -0
      lib/api/index.js

+ 242
- 0
lib/api/downtime.js View File

@ -0,0 +1,242 @@
var client = require("../client");
var util = require("util");
/*section: downtime
*comment: schedule a new downtime
*params:
* scope: string scope that the downtime should apply to (e.g. "env:staging")
* properties: |
* optional, an object containing any of the following
* * start: POSIX timestamp for when the downtime should start
* * end: POSIX timestamp for when the downtime should end
* * message: a string message to accompany the downtime
* callback: function(err, res)
*example: |
* ```javascript
* var dogapi = require("dogapi");
* var options = {
* api_key: "api_key",
* app_key: "app_key"
* };
* dogapi.initialize(options);
* dogapi.downtime.create("env:staging", function(err, res){
* console.dir(res);
* });
* ```
*/
function create(scope, properties, callback){
if(arguments.length < 3 && typeof arguments[1] === "function"){
callback = properties;
properties = {};
}
var params = {
body: {
scope: scope
}
};
if(typeof properties === "object"){
if(properties.start){
params.body.start = parseInt(properties.start);
}
if(properties.end){
params.body.end = parseInt(properties.end);
}
if(properties.message){
params.body.message = properties.message;
}
}
client.request("POST", "/downtime", params, callback);
}
/*section: downtime
*comment: update an existing downtime
*params:
* downtimeId: the id the downtie to update
* properties: |
* optional, an object containing any of the following
* * scope: the scope the downtime should be changed to (e.g. "env:staging")
* * start: POSIX timestamp for when the downtime should start
* * end: POSIX timestamp for when the downtime should end
* * message: a string message to accompany the downtime
* callback: function(err, res)
*example: |
* ```javascript
* var dogapi = require("dogapi");
* var options = {
* api_key: "api_key",
* app_key: "app_key"
* };
* dogapi.initialize(options);
* var properties = {
* scope: "env:staging"
* };
* dogapi.downtime.update(1234, properties, function(err, res){
* console.dir(res);
* });
* ```
*/
function update(downtimeId, properties, callback){
if(arguments.length < 3 && typeof arguments[1] === "function"){
callback = properties;
properties = {};
}
var params = {
body: {}
};
if(typeof properties === "object"){
if(properties.scope){
params.body.scope = properties.scope;
}
if(properties.start){
params.body.start = parseInt(properties.start);
}
if(properties.end){
params.body.end = parseInt(properties.end);
}
if(properties.message){
params.body.message = properties.message;
}
}
client.request("PUT", util.format("/downtime/%s", downtimeId), params, callback);
}
/*section: downtime
*comment: delete a scheduled downtime
*params:
* downtimeId: the id of the downtime
* callback: function(err, res)
*example: |
* ```javascript
* var dogapi = require("dogapi");
* var options = {
* api_key: "api_key",
* app_key: "app_key"
* };
* dogapi.initialize(options);
* dogapi.downtime.remove(1234, function(err, res){
* console.dir(res);
* });
* ```
*/
function remove(downtimeId, callback){
client.request("DELETE", util.format("/downtime/%s", downtimeId), callback);
}
/*section: downtime
*comment: get a scheduled downtimes details
*params:
* downtimeId: the id of the downtime
* callback: function(err, res)
*example: |
* ```javascript
* var dogapi = require("dogapi");
* var options = {
* api_key: "api_key",
* app_key: "app_key"
* };
* dogapi.initialize(options);
* dogapi.downtime.get(1234, function(err, res){
* console.dir(res);
* });
* ```
*/
function get(downtimeId, callback){
client.request("GET", util.format("/downtime/%s", downtimeId), callback);
}
/*section: downtime
*comment: get all downtimes details
*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.downtime.getAll(function(err, res){
* console.dir(res);
* });
* ```
*/
function getAll(callback){
client.request("GET", "/downtime", callback);
}
module.exports = {
create: create,
update: update,
remove: remove,
get: get,
getAll: getAll,
getUsage: function(){
return [
" dogapi downtime create <scope> [--start <start>] [--end <end>] [--message <message>]",
" dogapi downtime update <downtime-id> [--scope <scope>] [--start <start>] [--end <end>] [--message <message>]",
" dogapi downtime remove <downtime-id>",
" dogapi downtime get <downtime-id>",
" dogapi downtime getall",
];
},
getHelp: function(){
return [
"Downtime:",
" Subcommands:",
" create <scope> create a new downtime with the provided scope (e.g. \"env:staging\")",
" update <downtime-id> update an existing downtime with the provided id",
" remove <downtime-id> remove the downtime with the provided id",
" get <downtime-id> get the details of the downtime with the provided id",
" getall get the details of all downtimes",
"",
" Options:",
" --start <start> POSIX timestamp for when the downtime should start",
" --end <end> POSIX timestamp for when the downtime should end",
" --message <message> a string message to accompany the downtime",
" --scope <scope> the scope of the downtime (e.g. \"env:staging\")"
];
},
handleCli: function(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"){
var scope = args._[4];
var properties = {};
if(args["start"]){
properties.start = parseInt(args["start"]);
}
if(args["end"]){
properties.end = parseInt(args["end"]);
}
if(args["message"]){
properties.message = args["message"];
}
create(scope, properties, callback);
} else if(subcommand === "update"){
var downtimeId = args._[4];
var properties = {};
if(args["scope"]){
properties.scope = args["scope"];
}
if(args["start"]){
properties.start = parseInt(args["start"]);
}
if(args["end"]){
properties.end = parseInt(args["end"]);
}
if(args["message"]){
properties.message = args["message"];
}
update(downtimeId, properties, callback);
} else {
callback("unknown subcommand or arguments try `dogapi downtime --help` for help", false);
}
}
};

+ 1
- 0
lib/api/index.js View File

@ -1,4 +1,5 @@
var api = { var api = {
downtime: require("./downtime"),
event: require("./event"), event: require("./event"),
graph: require("./graph"), graph: require("./graph"),
host: require("./host"), host: require("./host"),


Loading…
Cancel
Save