[CORD-1305] PPPoE Client
Change-Id: Id5ae5ba0ce0cbb89d434fb34d4c42796c61c059e
diff --git a/extensions/pppoe/scripts/apps/netcfgConsolidator/NetcfgConfig.json b/extensions/pppoe/scripts/apps/netcfgConsolidator/NetcfgConfig.json
new file mode 100755
index 0000000..fe6de73
--- /dev/null
+++ b/extensions/pppoe/scripts/apps/netcfgConsolidator/NetcfgConfig.json
@@ -0,0 +1 @@
+{"OnosIP":"10.100.198.201"}
diff --git a/extensions/pppoe/scripts/apps/netcfgConsolidator/NetcfgConsolidator.js b/extensions/pppoe/scripts/apps/netcfgConsolidator/NetcfgConsolidator.js
new file mode 100755
index 0000000..498575c
--- /dev/null
+++ b/extensions/pppoe/scripts/apps/netcfgConsolidator/NetcfgConsolidator.js
@@ -0,0 +1,50 @@
+/**
+ * NetcfgConsolidator - Contains PPPoE device report functions
+ */
+var jsonServer = require('json-server')
+var server = jsonServer.create()
+var router = jsonServer.router('db.json')
+var middlewares = jsonServer.defaults()
+var fs=require('fs');
+var __dirname = "/usr/local/lib/node_modules"
+var sendOper = require(__dirname + '/addAndDeleteApList')
+// Set default middlewares (logger, static, cors and no-cache)
+server.use(middlewares)
+
+server.post('/:device',function(req,res){
+ console.log("device:"+req.params.device);
+ var device = req.params.device;
+ var str = device.split(":");
+ console.log("str:"+str);
+ console.log("enter post");
+ console.log("port:"+str[2]);
+ var netcfgDbObj = {};
+ var testjson = {"ip":str[1],"port":parseInt(str[2]),"protocol": "http"};
+ netcfgDbObj = JSON.parse(fs.readFileSync(__dirname + '/netconfigdb.json'));
+ console.log(JSON.stringify(netcfgDbObj));
+ var resProm = sendOper.addApList(netcfgDbObj,testjson,device);
+ console.log(resProm);
+ var data = {"state":"Add data success."};
+ res.jsonp(data)
+
+
+})
+server.delete('/:device',function(req,res){
+ var device = req.params.device;
+ console.log("device:"+device);
+ var str = device.split(":");
+ console.log("enter delte");
+ var netcfgDbObj = {};
+ var testjson = {"ip":str[1],"port":str[2],"protocol": "http"};
+ console.log(testjson);
+ netcfgDbObj = JSON.parse(fs.readFileSync(__dirname + '/netconfigdb.json'));
+ var resProm = sendOper.deleteApList(netcfgDbObj,testjson,device);
+ console.log(resProm);
+ var data = {"state":"Delete data success."}
+ res.jsonp(data)
+})
+
+server.use(router)
+server.listen(24000, function () {
+ console.log('NETCFG-Consolidator Server is running')
+})
diff --git a/extensions/pppoe/scripts/apps/netcfgConsolidator/addAndDeleteApList.js b/extensions/pppoe/scripts/apps/netcfgConsolidator/addAndDeleteApList.js
new file mode 100755
index 0000000..bf05873
--- /dev/null
+++ b/extensions/pppoe/scripts/apps/netcfgConsolidator/addAndDeleteApList.js
@@ -0,0 +1,123 @@
+/**
+ * addAndDeleteApList - Contains PPPoE device report functions
+ */
+var fs=require('fs');
+var Promise = require('bluebird');
+var request = Promise.promisifyAll(require('request'));
+var __dirname = "/usr/local/lib/node_modules";
+module.exports={
+ addApList:function(netcfgDbObj,testjson,device){
+ console.log("add ap list!");
+ var APList = netcfgDbObj.apps['org.onosproject.restsb'].devices;
+ var DeviceList = netcfgDbObj.devices;
+ DeviceList[device] = { "basic": { "driver": "rest-pppoe" } };
+ var flag = true;
+ for(var i = 0;i< APList.length;i++) {
+ if((testjson.ip == APList[i].ip) && (testjson.port == APList[i].port)) {
+ flag = false;
+ }
+ }
+ if(flag) {
+ APList.push(testjson);
+ }
+ var APListObj = {"devices": DeviceList,"apps":{"org.onosproject.restsb":{"devices":APList}}};
+ console.log("add test!!!!")
+ console.log(JSON.stringify(APListObj));
+ console.log("add test!!!!");
+ fs.writeFile(__dirname + '/netconfigdb.json', JSON.stringify(APListObj), function(err) {
+ if (err) {
+ throw err;
+ }
+ console.log('Saved.');
+ });
+ console.log("Add one data,and report to ONOS!");
+ var config = JSON.parse(fs.readFileSync(__dirname + '/NetcfgConfig.json'));
+ console.log(config);
+ var waitTimeout = 10000;
+ setTimeout(function() {
+ console.log("Delayed POST reqeust: Add AP List!");
+ request({
+ url: "http://"+config.OnosIP+":8182/onos/v1/network/configuration/",
+ method: "POST",
+ json: true, // <--Very important!!!
+ body: APListObj,
+ auth: {
+ username: 'onos',
+ password: 'rocks'
+ }
+ }, function (error, response, body){
+ console.log(error);
+ //console.log(response);
+ });
+ }, waitTimeout);
+ var rep = {"status":true};
+ return rep;
+ },
+ deleteApList:function(netcfgDbObj,testjson,device){
+ console.log("delete ap list!");
+ var APList = netcfgDbObj.apps['org.onosproject.restsb'].devices;
+ var DeviceList = netcfgDbObj.devices;
+ delete DeviceList[device];
+ var tempList = new Array();
+ for (var i = 0;i< APList.length;i++) {
+ if((testjson.ip == APList[i].ip) && (testjson.port == APList[i].port)) {
+
+ } else {
+ tempList.push(APList[i]);
+ }
+ }
+ var APListObj = {"devices": DeviceList,"apps":{"org.onosproject.restsb":{"devices":tempList}}};
+ console.log("delete test!!!!")
+ console.log(JSON.stringify(APListObj));
+ console.log("delete test!!!!");
+ fs.writeFile(__dirname + '/netconfigdb.json', JSON.stringify(APListObj), function(err) {
+ if (err) {
+ throw err;
+ }
+ console.log('Saved.');
+ });
+ console.log("Delete one data,and report to ONOS!");
+ var config = JSON.parse(fs.readFileSync(__dirname + '/NetcfgConfig.json'));
+ console.log(config);
+ request({
+ url: "http://"+config.OnosIP+":8182/onos/v1/network/configuration/devices/"+device,
+ method: "DELETE",
+ json: true, // <--Very important!!!
+ auth: {
+ username: 'onos',
+ password: 'rocks'
+ }
+ }, function (error, response, body){
+ console.log(error);
+ // console.log(response);
+ });
+ request({
+ url: "http://"+config.OnosIP+":8182/onos/v1/network/configuration/",
+ method: "POST",
+ json: true, // <--Very important!!!
+ body: APListObj,
+ auth: {
+ username: 'onos',
+ password: 'rocks'
+ }
+ }, function (error, response, body){
+ console.log(error);
+ });
+ var rep = {"status":true};
+ return rep;
+ },
+ deleteReportOnos:function(){
+ var netcfgDbObj = {};
+ var APList = new Array();
+ var tempList = new Array();
+ netcfgDbObj = JSON.parse(fs.readFileSync(__dirname + '/netconfigdb.json'));
+ APList = netcfgDbObj.AP;
+ for(var i = 0;i < APList.length; i++) {
+ if(APList[i].status === "Available") {
+ tempList.push(APList[i]);
+ }
+ }
+ var data = {"AP":tempList};
+ //report onos
+ }
+}
diff --git a/extensions/pppoe/scripts/apps/netcfgConsolidator/netconfigdb.json b/extensions/pppoe/scripts/apps/netcfgConsolidator/netconfigdb.json
new file mode 100755
index 0000000..19c5bb8
--- /dev/null
+++ b/extensions/pppoe/scripts/apps/netcfgConsolidator/netconfigdb.json
@@ -0,0 +1 @@
+{"devices": {},"apps":{"org.onosproject.restsb":{"devices":[]}}}