summaryrefslogtreecommitdiffstats
path: root/vbd/gui/module
diff options
context:
space:
mode:
Diffstat (limited to 'vbd/gui/module')
-rw-r--r--vbd/gui/module/src/main/resources/vpp/controllers/bdm.bridgedomain.controller.js18
-rw-r--r--vbd/gui/module/src/main/resources/vpp/controllers/bdm.controller.js127
-rw-r--r--vbd/gui/module/src/main/resources/vpp/controllers/bdm.interface.controller.js17
-rw-r--r--vbd/gui/module/src/main/resources/vpp/controllers/bdm.vpp.controller.js17
-rw-r--r--vbd/gui/module/src/main/resources/vpp/controllers/inventory.controller.js (renamed from vbd/gui/module/src/main/resources/vpp/vpp.controller.js)184
-rw-r--r--vbd/gui/module/src/main/resources/vpp/controllers/vpp.controller.js48
-rw-r--r--vbd/gui/module/src/main/resources/vpp/services/bdm.bridgedomain.service.js14
-rw-r--r--vbd/gui/module/src/main/resources/vpp/services/bdm.interface.service.js14
-rw-r--r--vbd/gui/module/src/main/resources/vpp/services/bdm.service.js14
-rw-r--r--vbd/gui/module/src/main/resources/vpp/services/bdm.vpp.service.js14
-rw-r--r--vbd/gui/module/src/main/resources/vpp/services/inventory.service.js142
-rw-r--r--vbd/gui/module/src/main/resources/vpp/services/vpp.services.js (renamed from vbd/gui/module/src/main/resources/vpp/vpp.services.js)96
-rw-r--r--vbd/gui/module/src/main/resources/vpp/vpp.module.js25
13 files changed, 434 insertions, 296 deletions
diff --git a/vbd/gui/module/src/main/resources/vpp/controllers/bdm.bridgedomain.controller.js b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.bridgedomain.controller.js
new file mode 100644
index 000000000..ea65afbc9
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.bridgedomain.controller.js
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+
+define(['app/vpp/vpp.module'], function(vpp) {
+
+ vpp.register.controller('bdmBridgeDomainCtrl', ['$scope', '$rootScope', '$timeout' ,'dataService', 'toastService', '$mdSidenav', '$mdDialog',
+ function ($scope, $rootScope, $timeout ,dataService, toastService, $mdSidenav, $mdDialog) {
+
+ }]);
+
+
+});
diff --git a/vbd/gui/module/src/main/resources/vpp/controllers/bdm.controller.js b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.controller.js
new file mode 100644
index 000000000..02c9879a8
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.controller.js
@@ -0,0 +1,127 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+define(['app/vpp/vpp.module'], function(vpp) {
+ vpp.register.controller('bdmCtrl', ['$scope', '$rootScope','$filter', 'dataService', 'toastService', function ($scope, $rootScope, filter, dataService, toastService) {
+
+ }]);
+
+
+ vpp.register.controller('TableController', ['$scope', '$rootScope','$filter', 'dataService', 'toastService', function ($scope, $rootScope, filter, dataService, toastService) {
+ var vm = this;
+ vm.rowCollection = dataService.tableContent;
+ vm.displayedCollection = [].concat(vm.rowCollection);
+ vm.updateAssignment = function(receivedInterface) {
+ var interf = _.find(dataService.interfaces, {name: receivedInterface.name, 'phys-address': receivedInterface['phys-address']});
+ angular.copy(receivedInterface, interf);
+ if (interf.assigned){
+ interf['v3po:l2']['bridge-domain'] = dataService.selectedBd.name;
+ } else {
+ interf['v3po:l2']['bridge-domain'] = '';
+ }
+ dataService.injectBridgeDomainsTopoElements();
+ dataService.buildTableContent();
+ var previouslyChangedInterface = _.find(dataService.changedInterfaces, {name: interf.name, 'phys-address': interf['phys-address']});
+ if (!previouslyChangedInterface) {
+ dataService.changedInterfaces.push(interf);
+ }
+ console.log(dataService.changedInterfaces);
+ };
+ }]);
+
+ vpp.register.controller('BridgeDomainsController', function(dataService, $location, $mdDialog, toastService) {
+ var vm = this;
+ vm.dataService = dataService;
+
+ dataService.nextApp.container(document.getElementById('bridge-domains-next-app'));
+ dataService.bridgeDomainsTopo.attach(dataService.nextApp);
+
+ window.addEventListener('resize', function () {
+ if ($location.path() === '/bridgedomains') {
+ dataService.topo.adaptToContainer();
+ }
+ });
+
+ vm.bridgedomains = dataService.bridgedomains;
+ vm.selectedBd = dataService.selectedBd;
+
+ dataService.bridgeDomainsTopo.on('clickNode',function(topo,node) {
+ console.log(node);
+ });
+
+ vm.bdChanged = function() {
+ dataService.injectBridgeDomainsTopoElements();
+ dataService.buildTableContent();
+ };
+
+ vm.addBd = function() {
+ //show dialog
+ $mdDialog.show({
+ controller: function() {
+ var vm = this;
+ vm.bd = {};
+ vm.waiting = false;
+
+ //function called when the cancel button ( 'x' in the top right) is clicked
+ vm.close = function() {
+ $mdDialog.cancel();
+ };
+
+ vm.isDone = function(status) {
+ vm.waiting = false;
+ if (status === 'success') {
+ dataService.bridgedomains.push(vm.bd);
+ dataService.selectedBd.name = vm.bd.name;
+ dataService.injectBridgeDomainsTopoElements();
+ dataService.buildTableContent();
+ vm.close();
+ }
+ };
+
+ //function called when the update button is clicked
+ vm.updateConfig = function() {
+ vm.waiting = true;
+ //send a POST with the entered content in the form field
+
+ };
+ },
+ controllerAs: 'NewBdDialogCtrl',
+ templateUrl: 'templates/new-bd-dialog.html',
+ parent: angular.element(document.body),
+ clickOutsideToClose:false
+ })
+ };
+
+ vm.deploy = function() {
+
+ };
+
+ vm.removeBd = function() {
+ if(vm.selectedBd.name) {
+ var successCallback = function(success) {
+ if (success) {
+ console.log(vm.bridgedomains);
+ _.remove(vm.bridgedomains, {
+ name: vm.selectedBd.name
+ });
+ toastService.showToast('Bridge Domain Removed!');
+ vm.selectedBd.name = '';
+ dataService.clearInjectedInterfacesInBridgeDomainTopo();
+ dataService.injectBdIntoBridgeDomainsTopo();
+ dataService.tableContent.length = 0;
+ } else {
+ toastService.showToast('Error removing Bridge Domain!');
+
+ }
+ };
+
+ //... removeBdFromOdl(vm.selectedBd.name, successCallback);
+ }
+ };
+ });
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/controllers/bdm.interface.controller.js b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.interface.controller.js
new file mode 100644
index 000000000..5aa68a9dc
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.interface.controller.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+define(['app/vpp/vpp.module'], function(vpp) {
+
+ vpp.register.controller('bdmInterfaceCtrl', ['$scope', '$rootScope', '$timeout' ,'dataService', 'toastService', '$mdSidenav', '$mdDialog',
+ function ($scope, $rootScope, $timeout ,dataService, toastService, $mdSidenav, $mdDialog) {
+
+ }]);
+
+
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/controllers/bdm.vpp.controller.js b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.vpp.controller.js
new file mode 100644
index 000000000..5ef5c3c6a
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/controllers/bdm.vpp.controller.js
@@ -0,0 +1,17 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+define(['app/vpp/vpp.module'], function(vpp) {
+
+ vpp.register.controller('bdmVppCtrl', ['$scope', '$rootScope', '$timeout' ,'dataService', 'toastService', '$mdSidenav', '$mdDialog',
+ function ($scope, $rootScope, $timeout ,dataService, toastService, $mdSidenav, $mdDialog) {
+
+ }]);
+
+
+});
diff --git a/vbd/gui/module/src/main/resources/vpp/vpp.controller.js b/vbd/gui/module/src/main/resources/vpp/controllers/inventory.controller.js
index acb7d0a5c..f447bd0fb 100644
--- a/vbd/gui/module/src/main/resources/vpp/vpp.controller.js
+++ b/vbd/gui/module/src/main/resources/vpp/controllers/inventory.controller.js
@@ -6,75 +6,23 @@
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
-var modules = ['app/vpp/vpp.module',
- 'app/vpp/vpp.services',
- ];
-
-
-define(modules, function(vpp) {
-
- vpp.register.controller('vppCtrl', ['$scope', '$rootScope', '$timeout' ,'dataService', 'toastService', '$mdSidenav', '$mdDialog',
- function ($scope, $rootScope, $timeout ,dataService, toastService, $mdSidenav, $mdDialog) {
- $rootScope['section_logo'] = 'src/app/vpp/assets/images/vpp.gif';
- $scope.view_path = 'src/app/vpp/views/';
-
- $scope.mainView = "inventory";
-
- $scope.setMainView = function(viewName) {
- $scope.mainView = viewName;
- };
- }]);
+define(['app/vpp/vpp.module'], function(vpp) {
vpp.register.controller('InventoryTableController', ['$scope', '$rootScope','$filter', 'toastService', 'VppService', '$mdDialog', 'dataService', 'VppInterfaceService',
function($scope, $rootScope, filter, toastService, VppService, $mdDialog, dataService, VppInterfaceService) {
- $scope.initTable =
-
- $scope.getInterfaces = function(index) {
- VppInterfaceService.getInterfaceList(
- $scope.vppList[index].name,
- //success callback
- function(data) {
- var interfaces = data['interfaces-state'].interface;
- var vpp = $scope.vppList[index];
- vpp.interfaces = [];
-
- interfaces.forEach(function(i){
- if (i.name != 'local0') {
- vpp.interfaces.push(i);
- }
- });
- console.log($scope.vppList);
- angular.copy($scope.vppList, dataService.vpps);
- },
- //error callback
- function(res) {
- console.error(res);
- }
- )
- };
-
$scope.getVppList = function() {
$scope.initVppList();
VppService.getVppList(
// success callback
function(data) {
- if(data.topology.length || data.topology[0].node.length) {
- data.topology[0].node.forEach(function(n) {
- if(n['node-id'] !== 'controller-config') {
- var vppObj = VppService.createObj(n['node-id'], n['netconf-node-topology:host'], n['netconf-node-topology:port'], null, null, n['netconf-node-topology:connection-status']);
- $scope.vppList.push(vppObj);
- $scope.getInterfaces($scope.vppList.length - 1); //pass index.
- }
- });
- }
-
+ $scope.vppList = data;
$scope.$broadcast('RELOAD_VPP_TABLE');
},
// error callback
function(res) {
- console.error(res);
+ console.warn("Can't load VPPs from controller. Nothing is mounted, or other error", res);
}
);
};
@@ -280,7 +228,7 @@ define(modules, function(vpp) {
};
$scope.getVppList();
- }]);
+ }]);
vpp.register.controller('InventoryTableDefinitonController', ['$scope', function($scope) {
@@ -292,7 +240,6 @@ define(modules, function(vpp) {
$scope.gridOptions = {
expandableRowTemplate: $scope.view_path + 'inventory-table-interfaces-subgrid.tpl.html',
- expandableRowHeight: 150,
//subGridVariable will be available in subGrid scope
expandableRowScope: {
subGridVariable: 'subGridScopeVariable'
@@ -319,9 +266,9 @@ define(modules, function(vpp) {
$scope.gridOptions.data = $scope.vppList.map(function(item) {
item.subGridOptions = {
columnDefs: [
- { name:"Name", field:"name" },
- {name:"Mac Address", field: "phys-address"},
- {name:"Oper. Status", fiels: "oper-status"}
+ { name:"name" },
+ { name:"phys-address"},
+ { name:"oper-status"}
],
data: item.interfaces
};
@@ -331,119 +278,4 @@ define(modules, function(vpp) {
});
}]);
-
- vpp.register.controller('TableController', ['$scope', '$rootScope','$filter', 'dataService', 'toastService', function ($scope, $rootScope, filter, dataService, toastService) {
- var vm = this;
- vm.rowCollection = dataService.tableContent;
- vm.displayedCollection = [].concat(vm.rowCollection);
- vm.updateAssignment = function(receivedInterface) {
- var interf = _.find(dataService.interfaces, {name: receivedInterface.name, 'phys-address': receivedInterface['phys-address']});
- angular.copy(receivedInterface, interf);
- if (interf.assigned){
- interf['v3po:l2']['bridge-domain'] = dataService.selectedBd.name;
- } else {
- interf['v3po:l2']['bridge-domain'] = '';
- }
- dataService.injectBridgeDomainsTopoElements();
- dataService.buildTableContent();
- var previouslyChangedInterface = _.find(dataService.changedInterfaces, {name: interf.name, 'phys-address': interf['phys-address']});
- if (!previouslyChangedInterface) {
- dataService.changedInterfaces.push(interf);
- }
- console.log(dataService.changedInterfaces);
- };
- }]);
-
- vpp.register.controller('BridgeDomainsController', function(dataService, $location, $mdDialog, toastService) {
- var vm = this;
- vm.dataService = dataService;
-
- dataService.nextApp.container(document.getElementById('bridge-domains-next-app'));
- dataService.bridgeDomainsTopo.attach(dataService.nextApp);
-
- window.addEventListener('resize', function () {
- if ($location.path() === '/bridgedomains') {
- dataService.topo.adaptToContainer();
- }
- });
-
- vm.bridgedomains = dataService.bridgedomains;
- vm.selectedBd = dataService.selectedBd;
-
- dataService.bridgeDomainsTopo.on('clickNode',function(topo,node) {
- console.log(node);
- });
-
- vm.bdChanged = function() {
- dataService.injectBridgeDomainsTopoElements();
- dataService.buildTableContent();
- };
-
- vm.addBd = function() {
- //show dialog
- $mdDialog.show({
- controller: function() {
- var vm = this;
- vm.bd = {};
- vm.waiting = false;
-
- //function called when the cancel button ( 'x' in the top right) is clicked
- vm.close = function() {
- $mdDialog.cancel();
- };
-
- vm.isDone = function(status) {
- vm.waiting = false;
- if (status === 'success') {
- dataService.bridgedomains.push(vm.bd);
- dataService.selectedBd.name = vm.bd.name;
- dataService.injectBridgeDomainsTopoElements();
- dataService.buildTableContent();
- vm.close();
- }
- };
-
- //function called when the update button is clicked
- vm.updateConfig = function() {
- vm.waiting = true;
- //send a POST with the entered content in the form field
-
- };
- },
- controllerAs: 'NewBdDialogCtrl',
- templateUrl: 'templates/new-bd-dialog.html',
- parent: angular.element(document.body),
- clickOutsideToClose:false
- })
- };
-
- vm.deploy = function() {
-
- };
-
- vm.removeBd = function() {
- if(vm.selectedBd.name) {
- var successCallback = function(success) {
- if (success) {
- console.log(vm.bridgedomains);
- _.remove(vm.bridgedomains, {
- name: vm.selectedBd.name
- });
- toastService.showToast('Bridge Domain Removed!');
- vm.selectedBd.name = '';
- dataService.clearInjectedInterfacesInBridgeDomainTopo();
- dataService.injectBdIntoBridgeDomainsTopo();
- dataService.tableContent.length = 0;
- } else {
- toastService.showToast('Error removing Bridge Domain!');
-
- }
- };
-
- //... removeBdFromOdl(vm.selectedBd.name, successCallback);
- }
- };
- });
-});
-
-
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/controllers/vpp.controller.js b/vbd/gui/module/src/main/resources/vpp/controllers/vpp.controller.js
new file mode 100644
index 000000000..6b2dde830
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/controllers/vpp.controller.js
@@ -0,0 +1,48 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+
+var modules = [
+ // module
+ 'app/vpp/vpp.module',
+ // services
+ 'app/vpp/services/vpp.services',
+ 'app/vpp/services/inventory.service',
+ 'app/vpp/services/bdm.service',
+ 'app/vpp/services/bdm.bridgedomain.service',
+ 'app/vpp/services/bdm.interface.service',
+ 'app/vpp/services/bdm.vpp.service',
+ //controllers
+ 'app/vpp/controllers/inventory.controller',
+ 'app/vpp/controllers/bdm.controller',
+ 'app/vpp/controllers/bdm.bridgedomain.controller',
+ 'app/vpp/controllers/bdm.vpp.controller',
+ 'app/vpp/controllers/bdm.interface.controller'
+];
+
+
+define(modules, function(vpp) {
+
+ vpp.controller('vppCtrl', ['$scope', '$rootScope', '$timeout', 'toastService', '$mdSidenav', '$mdDialog',
+ function ($scope, $rootScope, $timeout, toastService, $mdSidenav, $mdDialog) {
+
+ $rootScope['section_logo'] = 'src/app/vpp/assets/images/vpp.gif';
+ $scope.view_path = 'src/app/vpp/views/';
+
+ $scope.mainView = "inventory";
+
+ $scope.setMainView = function(viewName) {
+ $scope.mainView = viewName;
+ };
+
+
+ }]);
+
+
+});
+
+
diff --git a/vbd/gui/module/src/main/resources/vpp/services/bdm.bridgedomain.service.js b/vbd/gui/module/src/main/resources/vpp/services/bdm.bridgedomain.service.js
new file mode 100644
index 000000000..9316cbff7
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/services/bdm.bridgedomain.service.js
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+define(['app/vpp/vpp.module', 'next'], function(vpp) {
+ vpp.register.factory('bdmBridgeDomainService', function(VPPRestangular, VPPRestangularXml) {
+ var s = {};
+
+ return s;
+ });
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/services/bdm.interface.service.js b/vbd/gui/module/src/main/resources/vpp/services/bdm.interface.service.js
new file mode 100644
index 000000000..9dca2d29d
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/services/bdm.interface.service.js
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+define(['app/vpp/vpp.module', 'next'], function(vpp) {
+ vpp.register.factory('bdmInterfaceService', function(VPPRestangular, VPPRestangularXml) {
+ var s = {};
+
+ return s;
+ });
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/services/bdm.service.js b/vbd/gui/module/src/main/resources/vpp/services/bdm.service.js
new file mode 100644
index 000000000..5d6592787
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/services/bdm.service.js
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+define(['app/vpp/vpp.module', 'next'], function(vpp) {
+ vpp.register.factory('bdmService', function(VPPRestangular, VPPRestangularXml) {
+ var s = {};
+
+ return s;
+ });
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/services/bdm.vpp.service.js b/vbd/gui/module/src/main/resources/vpp/services/bdm.vpp.service.js
new file mode 100644
index 000000000..5a23d831c
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/services/bdm.vpp.service.js
@@ -0,0 +1,14 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+define(['app/vpp/vpp.module', 'next'], function(vpp) {
+ vpp.register.factory('bdmVppService', function(VPPRestangular, VPPRestangularXml) {
+ var s = {};
+
+ return s;
+ });
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/services/inventory.service.js b/vbd/gui/module/src/main/resources/vpp/services/inventory.service.js
new file mode 100644
index 000000000..a90354fb4
--- /dev/null
+++ b/vbd/gui/module/src/main/resources/vpp/services/inventory.service.js
@@ -0,0 +1,142 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+define(['app/vpp/vpp.module', 'next'], function(vpp) {
+ vpp.register.factory('VppService', function(VPPRestangular, VPPRestangularXml, VppInterfaceService, $q) {
+ var s = {};
+
+ var Vpp = function(name, ipAddress, port, username, password, status) {
+ this.name = name || null;
+ this.ipAddress = ipAddress || null;
+ this.port = port || null;
+ this.username = username || null;
+ this.password = password || null;
+ this.status = status || null;
+ this.interfaces = [];
+ };
+
+ s.createObj = function(name, ipAddress, port, username, password, status) {
+ return new Vpp(name, ipAddress, port, username, password, status);
+ };
+
+ s.getVppList = function(successCallback, errorCallback) {
+ var vppList = [];
+ var promiseList = [];
+ var restObj = VPPRestangular.one('restconf').one('operational').one('network-topology:network-topology').one('topology').one('topology-netconf');
+
+ restObj.get().then(function(data) {
+ //if(data.topology.length || data.topology[0].node.length) {
+ data.topology[0].node.forEach(function(n) {
+ if(n['node-id'] !== 'controller-config') {
+ //create new object
+ var vppObj = s.createObj(n['node-id'], n['netconf-node-topology:host'], n['netconf-node-topology:port'], null, null, n['netconf-node-topology:connection-status']);
+ // register a promise
+ if (vppObj.status === 'connected') {
+ var promise = VppInterfaceService.getInterfaceListByVppName(n['node-id'], function (interfaceList) {
+ vppObj.interfaces = interfaceList;
+ });
+ // add promise to array
+ promiseList.push(promise);
+ // when promise is resolved, push vpp into vppList
+ promise.then(function () {
+ vppList.push(vppObj);
+ })
+ }
+ else {
+ vppList.push(vppObj);
+ }
+
+ }
+ });
+ //}
+ // when all promises are resolved, call success callback
+ $q.all(promiseList).then(function () {
+ successCallback(vppList);
+ });
+ }, function(res) {
+ errorCallback(res);
+ });
+ };
+
+ s.deleteVpp = function(vpp, finishedSuccessfullyCallback) {
+ console.log(vpp);
+ var restObj = VPPRestangular.one('restconf').one('config').one('network-topology:network-topology').one('topology').one('topology-netconf').one('node').one('controller-config').one('yang-ext:mount').one('config:modules').one('module').one('odl-sal-netconf-connector-cfg:sal-netconf-connector').one(vpp.name);
+
+ restObj.remove().then(function() {
+ finishedSuccessfullyCallback(true);
+ }, function(res) {
+ finishedSuccessfullyCallback(false);
+ });
+ };
+
+ s.mountVpp = function(name,ip,port,un,pw,finishedSuccessfullyCallback) {
+
+ var postData = '\
+ <module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">\
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type>\
+ <name>'+name+'</name>\
+ <address xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+ip+'</address>\
+ <port xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+port+'</port>\
+ <username xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+un+'</username>\
+ <password xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+pw+'</password>\
+ <tcp-only xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">false</tcp-only>\
+ <event-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netty">prefix:netty-event-executor</type>\
+ <name>global-event-executor</name>\
+ </event-executor>\
+ <binding-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-broker-osgi-registry</type>\
+ <name>binding-osgi-broker</name>\
+ </binding-registry>\
+ <dom-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">prefix:dom-broker-osgi-registry</type>\
+ <name>dom-broker</name>\
+ </dom-registry>\
+ <client-dispatcher xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:netconf">prefix:netconf-client-dispatcher</type>\
+ <name>global-netconf-dispatcher</name>\
+ </client-dispatcher>\
+ <processing-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
+ <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:threadpool</type>\
+ <name>global-netconf-processing-executor</name>\
+ </processing-executor>\
+ </module>';
+
+ var restObj = VPPRestangularXml.one('restconf').one('config').one('opendaylight-inventory:nodes').one('node').one('controller-config').one('yang-ext:mount');
+
+ restObj.post('config:modules', postData).then(function() {
+ finishedSuccessfullyCallback(true);
+ }, function(res) {
+ finishedSuccessfullyCallback(false);
+ });
+ };
+
+ return s;
+ });
+
+ vpp.register.factory('VppInterfaceService', function(VPPRestangular, $q) {
+ var s = {};
+
+ s.getInterfaceListByVppName = function(vppName, successCallback) {
+ var interfaceList = [];
+ var restObj = VPPRestangular.one('restconf').one('operational').one('network-topology:network-topology').one('topology').one('topology-netconf').one('node').one(vppName).one('yang-ext:mount').one('ietf-interfaces:interfaces-state');
+
+ return restObj.get().then(function(data) {
+ if (data['interfaces-state'].interface) {
+ interfaceList = data['interfaces-state'].interface.filter(function(i) {
+ if (i.name != 'local0') {
+ return i;
+ }
+ });
+ }
+ successCallback(interfaceList);
+ });
+ };
+
+ return s;
+ });
+}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/vpp.services.js b/vbd/gui/module/src/main/resources/vpp/services/vpp.services.js
index 49337b109..70b1631f7 100644
--- a/vbd/gui/module/src/main/resources/vpp/vpp.services.js
+++ b/vbd/gui/module/src/main/resources/vpp/services/vpp.services.js
@@ -159,102 +159,6 @@ define(['app/vpp/vpp.module', 'next'], function(vpp) {
});
- vpp.register.factory('VppService', function(VPPRestangular, VPPRestangularXml) {
- var s = {};
- var Vpp = function(name, ipAddress, port, username, password, status) {
- this.name = name || null;
- this.ipAddress = ipAddress || null;
- this.port = port || null;
- this.username = username || null;
- this.password = password || null;
- this.status = status || null;
- };
-
- s.createObj = function(name, ipAddress, port, username, password, status) {
- return new Vpp(name, ipAddress, port, username, password, status);
- };
-
- s.getVppList = function(successCallback, errorCallback) {
- var restObj = VPPRestangular.one('restconf').one('operational').one('network-topology:network-topology').one('topology').one('topology-netconf');
-
- restObj.get().then(function(data) {
- successCallback(data);
- }, function(res) {
- errorCallback(res);
- });
- };
-
- s.deleteVpp = function(vpp, finishedSuccessfullyCallback) {
- console.log(vpp);
- var restObj = VPPRestangular.one('restconf').one('config').one('network-topology:network-topology').one('topology').one('topology-netconf').one('node').one('controller-config').one('yang-ext:mount').one('config:modules').one('module').one('odl-sal-netconf-connector-cfg:sal-netconf-connector').one(vpp.name);
-
- restObj.remove().then(function() {
- finishedSuccessfullyCallback(true);
- }, function(res) {
- finishedSuccessfullyCallback(false);
- });
- };
-
- s.mountVpp = function(name,ip,port,un,pw,finishedSuccessfullyCallback) {
-
- var postData = '\
- <module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">\
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type>\
- <name>'+name+'</name>\
- <address xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+ip+'</address>\
- <port xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+port+'</port>\
- <username xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+un+'</username>\
- <password xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">'+pw+'</password>\
- <tcp-only xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">false</tcp-only>\
- <event-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netty">prefix:netty-event-executor</type>\
- <name>global-event-executor</name>\
- </event-executor>\
- <binding-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-broker-osgi-registry</type>\
- <name>binding-osgi-broker</name>\
- </binding-registry>\
- <dom-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">prefix:dom-broker-osgi-registry</type>\
- <name>dom-broker</name>\
- </dom-registry>\
- <client-dispatcher xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:netconf">prefix:netconf-client-dispatcher</type>\
- <name>global-netconf-dispatcher</name>\
- </client-dispatcher>\
- <processing-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">\
- <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:threadpool</type>\
- <name>global-netconf-processing-executor</name>\
- </processing-executor>\
- </module>';
-
- var restObj = VPPRestangularXml.one('restconf').one('config').one('opendaylight-inventory:nodes').one('node').one('controller-config').one('yang-ext:mount');
-
- restObj.post('config:modules', postData).then(function() {
- finishedSuccessfullyCallback(true);
- }, function(res) {
- finishedSuccessfullyCallback(false);
- });
- };
-
- return s;
- });
-
- vpp.register.factory('VppInterfaceService', function(VPPRestangular) {
- var s = {};
-
- s.getInterfaceList = function(vppName,successCallback, errorCallback) {
- var restObj = VPPRestangular.one('restconf').one('operational').one('network-topology:network-topology').one('topology').one('topology-netconf').one('node').one(vppName).one('yang-ext:mount').one('ietf-interfaces:interfaces-state');
-
- restObj.get().then(function(data) {
- successCallback(data);
- }, function(res) {
- errorCallback(res);
- });
- };
-
- return s;
- });
}); \ No newline at end of file
diff --git a/vbd/gui/module/src/main/resources/vpp/vpp.module.js b/vbd/gui/module/src/main/resources/vpp/vpp.module.js
index 7d6ed8568..56a1852de 100644
--- a/vbd/gui/module/src/main/resources/vpp/vpp.module.js
+++ b/vbd/gui/module/src/main/resources/vpp/vpp.module.js
@@ -26,7 +26,7 @@ define(['angularAMD', 'app/routingConfig', 'ui-bootstrap', 'Restangular', 'angul
service : $provide.service
};
- NavHelperProvider.addControllerUrl('app/vpp/vpp.controller');
+ NavHelperProvider.addControllerUrl('app/vpp/controllers/vpp.controller');
NavHelperProvider.addToMenu('vpp', {
"link": "#/vpp/index",
"active": "main.vpp",
@@ -108,29 +108,6 @@ define(['angularAMD', 'app/routingConfig', 'ui-bootstrap', 'Restangular', 'angul
})
.accentPalette('odl-orange');
- // $stateProvider.state('main.vpp.inventory', {
- // url: '/inventory',
- // access: access.admin,
- // views: {
- // '': {
- // controller: 'InventoryController',
- // controllerAs: 'InventoryCtrl',
- // templateUrl: 'src/app/vpp/views/inventory.html'
- // }
- // }
- // });
-
- // $stateProvider.state('main.vpp.bridgedomains', {
- // url: '/bridgedomains',
- // access: access.admin,
- // views: {
- // '': {
- // controller: 'BridgeDomainsController',
- // controllerAs: 'BridgeDomainsCtrl',
- // templateUrl: 'src/app/vpp/views/bridge-domains.html'
- // }
- // }
- // });
});
return vpp;