netconf
Version:
Pure JavaScript NETCONF library.
78 lines (70 loc) • 1.97 kB
JavaScript
var fs = require('fs');
var process = require('process');
var netconf = require('../lib/netconf');
var pipeline = require('./pipeline');
var util = require('util');
function pprint(object) {
console.log(util.inspect(object, {depth:null, colors:true}));
}
function configureRouter(configData) {
router.open(function(err) {
if (!err) {
router.load({config: configData, action: 'replace', format: 'text'},
commitConf);
} else {
throw(err);
}
});
}
function commitConf(err, reply) {
if (!err) {
router.compare(function(err, reply) {
console.log('Configuration Diff:');
console.log(reply);
if (process.argv[2] === '-c') {
commitRollback(true);
} else {
commitRollback(false);
}
});
} else {
pprint(reply);
throw (err);
}
}
function commitRollback(value) {
if (value === true) {
console.log('Commiting configuration.');
router.commit(function(err, result) {
if (err) {
router.rollback(function (err, rollback_result) {
pprint(result);
console.log('Commit error, rolling back.')
router.close();
process.exit(1);
});
} else {
router.close();
}
});
} else {
console.log('Rolling back changes. Run with "-c" flag to commit.');
router.rollback(function(err, result) {
router.close();
});
}
}
var params = {
host: '172.28.128.3',
username: 'vagrant',
pkey: fs.readFileSync('insecure_ssh.key', {encoding: 'utf8'})
};
var router = new netconf.Client(params);
pipeline.read(function renderTemplate(err, data) {
if (err) {
throw (err);
} else {
configureRouter(data);
}
});