ummon-client

configure

method
client.configure()
  • @param: {object}optionsRestify client options like url, timeout and retries

Description

Setup the restify client

Source

client.configure = function(options){
    if (!options) { options = {}; }
    var config = {};

    // Cheap and dirty default values.
    config.version = '*';
    config.url = options.url || 'http://localhost:8888';
    if (options.retry) { config.retry = {"retries":options.retry}; }
    config.timeout = options.timeout || 1;

    api = restify.createJsonClient(config);

    if (options.username && options.password) {
      api.basicAuth(options.username, options.password);
    }
  };
  // Configure the restify client
  client.configure(options);

basicAuth

method
client.basicAuth()
  • @see: client.configure()client.configure()
  • @param: {String}user
  • @param: {String}pass

Description

Authenticate your client

If you pass username and password keys to the constructor
it will authenticate for you

Source

client.basicAuth = function(user, pass){
    api.basicAuth(user, pass);
  };

getStatus

method
client.getStatus()
  • @param: {Function}callback(err,result)

Description

Retreive the status of your ummon server

Returns:

 // TODO

Source

client.getStatus = function(callback) {
    api.get(apiUrls.status, function(err, req, res, result) {
      callback(err, result);
    })
  };

getConfig

method
client.getConfig()
  • @param: {Function}callback(err,result)

Description

Return ummon-servers configuration

Returns:

 // TODO

Source

client.getConfig = function(callback) {
    api.get(apiUrls.config, function(err, req, res, result) {
      callback(err, result);
    })
  };

setConfig

method
client.setConfig()
  • @param: {Object}optionsconfiguration options to set
  • @param: {Function}callback(err,result)

Description

Set configuration options

Example:

 client.setConfig( {pause: true}, function(err, result){
   console.log('Ummon has been paused');
 });

Source

client.setConfig = function(options, callback) {
    var setConfigUrl = url.parse(apiUrls.config);
    setConfigUrl.query = options;
    setConfigUrl = url.format(setConfigUrl);
    api.put(setConfigUrl, function(err, req, res, result) {
      callback(err, result);
    })
  };

showLog

method
client.showLog()
  • @param: {Object}optionsOptions to control the filtering of the logs
  • @param: {Function}callbackcallback(err, result)

Description

Return a portion of the server's log

Example:

 client.showLog({ lines: 500, filter: {collection: 'ummon'}}, function(err, result){
   console.log(result)
 })

Options:

  • lines: The number of lines to retreive
  • runsOnly: Return only a history of completed tasks, without task output
  • filter: Object with key collection, task or run

Source

client.showLog = function(options, callback){
    if (!callback && 'function' === typeof options){
      callback = options;
    }

    var key = Object.keys(options.filter)[0];
    var val = options[key];

    var logUrl = (key) ? apiUrls.log+'/'+key+'/'+val : apiUrls.log;
    logUrl+="?lines="+options.lines;

    if (options.runsOnly) {
      logUrl+="&runsOnly=true";
    }

    if (options.follow) {
      logUrl+="&follow=true";
    }

    api.get(logUrl, function(err, req, res, result) {
      // res.on('data', function(chunk){
      //   console.log('DATA: '+ chunk)
      // })

      // res.on('data', function(chunk){
      //   console.log('DATA: '+ chunk)
      // })
      callback(err, res.body); // This is weird that result is empty and res.body isn't
    });
  };

getCollectionDefaults

method
client.getCollectionDefaults()
  • @param: {String}collectionA collection name
  • @param: {Function}callbackcallback(err, result)

Description

Return the defautls for a particular collection

Source

client.getCollectionDefaults = function(collection, callback) {
    api.get(apiUrls.collections+'/'+collection+'/defaults', function(err, req, res, result) {
      callback(err, result);
    });
  };

setCollectionDefaults

method
client.setCollectionDefaults()
  • @param: {String}collectionA collection name
  • @param: {Object}configThe values to set as defaults, eg: cwd
  • @param: {Function}callbackcallback(err, result)

Description

Set the defaults for a particular collection

Source

client.setCollectionDefaults = function(collection, config, callback) {
    api.put(apiUrls.collections+'/'+collection+'/defaults', config, function(err, req, res, result) {
      callback(err, result);
    });
  };

setTasks

method
client.setTasks()
  • @param: {String}collectionThe new collection's name
  • @param: {Object}configAn object containing defaults, settings and tasks
  • @param: {Function}callbackcallback(err, result)

Description

Create a new collection. Also useful for renaming collections

Source

client.setTasks = function(collection, config, callback) {
    api.put(apiUrls.collections+'/'+collection, config, function(err, req, res, result) {
      callback(err, result);
    });
  };

enableTasks

method
client.enableTasks()
  • @param: {Object}optionsObject describing what to enable
  • @param: {Function}callbackcallback(err, result)

Description

Enable an individual task or a collection of tasks

Examples:

// Enable a single task
client.enableTasks({ task:'ummon.doAwesome' }, callback)

// Enable a collection
client.enableTasks({ collection:'ummon' }, callback)

Source

client.enableTasks = function(options, callback) {
    var enableTasksUrl;
    if (options.collection) {
      enableTasksUrl = apiUrls.collections+'/'+options.collection + '/enable'
    } else if (options.task) {
      enableTasksUrl = apiUrls.tasks+'/' + options.task + '/enable'
    } else {
      return callback(new Error('You did not specify a collection or task to enable'));
    }

    api.put(enableTasksUrl, function(err, req, res, result) {
      if (res.statusCode === 304) {
        err = new Error('Collection already disabled')
      }
      callback(err, result);
    });
  };

disableTasks

method
client.disableTasks()
  • @param: {Object}optionsObject describing what to disable
  • @param: {Function}callbackcallback(err, result)

Description

Disable an individual task or a collection of tasks

Examples:

// Enable a single task
client.disableTasks({ task:'ummon.doAwesome' }, callback)

// Enable a collection
client.disableTasks({ collection:'ummon' }, callback)

Source

client.disableTasks = function(options, callback) {
    var disableTasksUrl;
    if (options.collection) {
      disableTasksUrl = apiUrls.collections+'/'+options.collection + '/disable'
    } else if (options.task) {
      disableTasksUrl = apiUrls.tasks+'/' + options.task + '/disable'
    } else {
      return callback(new Error('You did not specify a collection or task to disable'));
    }

    api.put(disableTasksUrl, function(err, req, res, result) {
      if (res.statusCode === 304) {
        err = new Error('Collection already disabled')
      }
      callback(err, result);
    });
  };

getTasks

method
client.getTasks()
  • @param: {Object}optionsObject describing what to get
  • @param: {Function}callbackcallback(err, result)

Description

Return an individual task or a collection of tasks

Source

client.getTasks = function(options, callback){
    if (!callback && "function" === typeof options) {
      callback = options;
      options = false;
    }
    // URL BUILDER!
    var taskurl;
    if (options.collection) {
      taskurl = apiUrls.collections + '/' + options.collection;
    } else if (options.task) {
      taskurl = apiUrls.tasks + '/' + options.task;
    } else {
      taskurl = apiUrls.tasks;
    }

    api.get(taskurl, function(err, req, res, result) {
      // console.log(err, result);
      if (err) {
        return callback(err);
      }

      callback(null, result);
    });
  };

createTask

method
client.createTask()
  • @param: {Object}optionsObject describing what to create
  • @param: {Function}callbackcallback(err, result)

Description

Create a task

Example

 client.createTask({
   collection:"ummon",
   name: "doAwesome",
   command: "sh fixTheWorld.sh",
   trigger: {time: '1 * * * *'}},
 callback)

Source

client.createTask = function(config, callback){
    api.post(apiUrls.createTask, config, function(err, req, res, result) {
      if (err) {
        return callback(err);
      }

      callback(null, result);
    });
  };

updateTask

method
client.updateTask()
  • @param: {Object}configA tasks updated config object
  • @param: {Function}callbackcallback(err, result)

Description

Update an existing task

Source

client.updateTask = function(config, callback){
    api.put(apiUrls.tasks + '/' + config.taskid, config, function(err, req, res, result) {
      if (err) {
        return callback(err);
      }

      callback(null, result);
    });
  };

deleteTask

method
client.deleteTask()
  • @param: {String}taskid
  • @param: {Function}callbackcallback(err)

Description

Delete a task

Source

client.deleteTask = function(taskid, callback){
    api.del(apiUrls.tasks + '/' + taskid, function(err, req, res) {
      callback(err);
    });
  };

deleteCollection

method
client.deleteCollection()
  • @param: {String}collection
  • @param: {Function}callbackcallback(err)

Description

Delete a collection, it's defaults and all tasks in it

Source

client.deleteCollection = function(collection, callback){
    api.del(apiUrls.collections + '/' + collection, function(err, req, res) {
      callback(err);
    });
  };

  return client;
};