ovsdb-js
Version:
A node.js library implementation of the ovsdb protocol.
252 lines (221 loc) • 5.76 kB
JavaScript
var prm = require('./primitives');
/////////////////////////////// Operations ///////////////////////////////
exports.insert = function(params) {
// basic insert validation
prm.assertObject('insert.params', params);
prm.assertId('table', params.table);
prm.assertObject('row', params.row);
// build the base object
var insert = {
op: "insert",
table: params.table,
row: params.row
};
// determine if a named uuid is present and valid
if(params.uuid_name) {
prm.assertString('uuid-name', params.uuid_name);
insert["uuid-name"] = params.uuid_name;
}
// thats it ...
return insert;
};
exports.select = function(params) {
// basic select validation
prm.assertObject('select.params', params);
prm.assertId('table', params.table);
// build the base object
var select = {
op: "select",
table: params.table,
where: [],
columns: []
};
// validate the where clause if present ..
if(params.where) {
prm.assertArray('where', params.where);
update.where = params.where;
}
// validate the target columns if present ..
if(params.columns) {
prm.assertColumns(params.columns);
select.columns = params.columns;
}
// thats it ...
return select;
};
exports.update = function(params) {
// basic update validation
prm.assertObject('update.params', params);
prm.assertId('table', params.table);
prm.assertObject('row', params.row);
// build the base object
var update = {
op: "update",
table: params.table,
where: [],
row: params.row
};
// validate the where clause if present ..
if(params.where) {
prm.assertArray('where', params.where);
update.where = params.where;
}
// thats it ...
return update;
};
exports.mutate = function(params) {
// basic mutate validation
prm.assertObject('mutate.params', params);
prm.assertId('table', params.table);
var mutate = {
op: "mutate",
table: params.table,
where: [],
mutations: []
};
// validate the where clause if present ..
if(params.where) {
prm.assertArray('where', params.where);
mutate.where = params.where;
}
// validate the mutations clause if present ..
if(params.mutations) {
prm.assertArray('mutations', params.mutations);
mutate.mutations = params.mutations;
}
// thats it ...
return mutate;
};
exports.del = function(params) {
// basic mutate validation
prm.assertObject('delete.params', params);
prm.assertId('table', params.table);
var del = {
op: "delete",
table: params.table,
where: []
};
// validate the where clause if present ..
if(params.where) {
prm.assertArray('where', params.where);
del.where = params.where;
}
// thats it ...
return del;
};
exports.wait = function(params) {
// basic wait validation
prm.assertObject('wait.params', params);
prm.assertId('table', params.table);
prm.assertUntil('until', params.until);
var wait = {
op: "wait",
table: params.table,
where: [],
columns: [],
until: params.until,
rows: []
};
// validate the timeout if present ..
if(params.timeout) {
prm.assertInteger('timeout', params.timeout);
wait.timeout = params.timeout;
}
// validate the where clause if present ..
if(params.where) {
prm.assertArray('where', params.where);
wait.where = params.where;
}
// validate the columns clause if present ..
if(params.columns) {
prm.assertColumns(params.columns);
wait.columns = params.columns;
}
// validate the rows clause if present ..
if(params.rows) {
prm.assertArray('rows', params.rows);
wait.rows = params.rows;
}
// thats it ...
return wait;
};
exports.commit = function(params) {
// basic commit validation
prm.assertBoolean('durable', params.durable);
// return the simple commit object
return {
op: "commit",
durable: params.durable
};
};
exports.abort = function() {
// return the simple abort object
return { op: "abort" };
};
exports.comment = function(params) {
// basic comment validation
prm.assertObject('comment.params', params);
prm.assertString('comment', params.comment);
// return the simple comment object
return {
op: "comment",
comment: params.comment
};
};
exports.assert = function(params) {
// basic assert validation
prm.assertObject('assert.params', params);
prm.assertString('lock', params.lock);
// return the simple assert object
return {
op: "assert",
lock: params.lock
};
};
//////////////////////// OVSDB Functions //////////////////////////
exports.less = function(col, val) {
return [col, "<", val];
};
exports.lessEqual = function(col, val) {
return [col, "<=", val];
};
exports.equal = function(col, val) {
return [col, "==", val];
};
exports.notEqual = function(col, val) {
return [col, "!=", val];
};
exports.greaterEqual = function(col, val) {
return [col, ">=", val];
};
exports.greater = function(col, val) {
return [col, ">", val];
};
exports.includes = function(col, val) {
return [col, "includes", val];
};
exports.excludes = function(col, val) {
return [col, "excludes", val];
};
//////////////////////// OVSDB Mutations //////////////////////////
exports.addTo = function(col, val) {
return [col, "+=", val];
};
exports.subFrom = function(col, val) {
return [col, "-=", val];
};
exports.multTo = function(col, val) {
return [col, "*=", val];
};
exports.divFrom = function(col, val) {
return [col, "/=", val];
};
exports.modFrom = function(col, val) {
return [col, "%=", val];
};
exports.insertTo = function(col, val) {
return [col, "insert", val];
};
exports.deleteFrom = function(col, val) {
return [col, "delete", val];
};