node-deadline
Version:
Module to interface with Deadline Compute Management System by Thinkbox Software
75 lines (61 loc) • 1.78 kB
JavaScript
var enums = require( "./lib/utils/enums.js" ),
jobs = require( "./lib/jobs/jobs" ),
tasks = require( "./lib/tasks/tasks" ),
slaves = require( "./lib/slaves/slaves" ),
settings = require( "./lib/settings" ),
Err = require( "./lib/utils/Error" ),
utils = require( "./lib/utils/utils" );
var i,
Deadline = module.exports = {};
Deadline.init = function( options, port ) {
var option;
//make sure the options parameter is defined
if ( "undefined" == typeof options ) {
throw new Err(
Err.PARAM,
"Deadline.init requires a host name or options object"
);
}
//see if a host string was passed instead of options object
if ( "string" == typeof options ) {
options = { host: options };
//did they pass a port too?
if ( "number" == typeof port ) {
options.port = port;
}
}
//copy options into settings object
for ( option in options ) {
//make sure it exists
if ( "undefined" == typeof settings[ option ] ) {
throw new Err(
Err.PARAM,
"Unrecognized option parameter (" + option + ")",
"check what you are sending to the deadline constrictor"
);
}
if ( settings.verbose ) {
utils.log( "setting Deadline option: " + option + " -> " + options[ option ] );
}
settings[ option ] = options[ option ];
}
};
//exports
Deadline.jobs = jobs;
Deadline.tasks = tasks;
Deadline.slaves = slaves;
//move some things into global export scope for usefulness
Deadline.Job = jobs.Job;
Deadline.Slave = slaves.Slave;
Deadline.Task = tasks.Task;
//get and set functions
Deadline.get = {
jobs: jobs.get
};
Deadline.set = {
jobs: jobs.set
};
//copy enums/constants into global export scope
for ( i in enums ) {
Deadline[ i ] = enums[ i ];
}