ovsdriver
Version:
Openvswitch utility commands wrapper
147 lines (129 loc) • 4.06 kB
JavaScript
// Generated by CoffeeScript 1.9.3
(function() {
var OVS, exec, util;
util = require('util');
exec = require('child_process').exec;
OVS = (function() {
function OVS() {}
OVS.prototype.execute = function(command, callback) {
if (command == null) {
callback(false);
}
util.log("executing " + command + "...");
return exec(command, (function(_this) {
return function(error, stdout, stderr) {
if (error) {
return callback(false);
} else {
return callback(true);
}
};
})(this));
};
OVS.prototype.createBridge = function(bridgname, callback) {
var command;
command = "ovs-vsctl add-br " + bridgname;
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
OVS.prototype.addInterface = function(bridgname, ifname, callback) {
var command;
command = "ovs-vsctl add-port " + bridgname + " " + ifname;
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
OVS.prototype.enableBridge = function(bridgname, callback) {
var command;
command = "ifconfig " + bridgname + " up";
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
OVS.prototype.disableBridge = function(bridgname, callback) {
var command;
command = "ifconfig " + bridgname + " down";
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
OVS.prototype.setController = function(bridgename, controllerip, callback) {
var command;
command = "ovs-vsctl set-controller " + bridgename + " " + controllerip;
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
OVS.prototype.deleteBridge = function(bridgename, callback) {
return this.disableBridge(bridgename, (function(_this) {
return function(result) {
var command;
command = "ovs-vsctl del-br " + bridgename;
return _this.execute(command, function(result) {
return callback(result);
});
};
})(this));
};
OVS.prototype.getStatus = function(bridgename, callback) {
var command;
command = "ovs-vsctl show " + bridgename;
return exec(command, (function(_this) {
return function(error, stdout, stderr) {
if ((stdout != null) || error) {
return callback("notrunning");
} else {
return callback("running");
}
};
})(this));
};
OVS.prototype.setOFVersion = function(bridgename, versionno, callback) {
var command, version;
switch (versionno) {
case 1.0:
version = "OpenFlow10";
break;
case 1.1:
version = "OpenFlow11";
break;
case 1.2:
version = "OpenFlow12";
break;
case 1.3:
version = "OpenFlow13";
break;
default:
version = "OpenFlow10";
}
command = "ovs-vsctl set bridge " + bridgename + " protocols=" + version;
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
OVS.prototype.setDPid = function(bridgename, dpid, callback) {
var command;
command = "ovs-vsctl set bridge " + bridgename + " other_config:datapath-id=" + dpid;
return this.execute(command, (function(_this) {
return function(result) {
return callback(result);
};
})(this));
};
return OVS;
})();
module.exports = new OVS;
}).call(this);