537 lines
16 KiB
JavaScript
537 lines
16 KiB
JavaScript
//Copyright 2015 Cisco Systems, Inc. All rights reserved.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License"); you may
|
|
//not use this file except in compliance with the License. You may obtain
|
|
//a copy of the License at
|
|
//
|
|
//http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
//distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
//WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
|
//License for the specific language governing permissions and limitations
|
|
//under the License.
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* @ngdoc function
|
|
* @name kbWebApp.controller:AboutCtrl
|
|
* @description
|
|
* # ConfigCtrl
|
|
* Controller of the kbWebApp
|
|
*/
|
|
angular.module('kbWebApp')
|
|
.controller('ConfigCtrl', function ($scope, $http, $location, showAlert, kbHttp, kbCookie, locationChange) {
|
|
this.awesomeThings = [
|
|
'HTML5 Boilerplate',
|
|
'AngularJS',
|
|
'Karma'
|
|
];
|
|
|
|
if(kbCookie.getSessionID()==="") $location.path('/Login');
|
|
else kbCookie.checkMode('http');
|
|
|
|
//---------------------------------top navigation bar---------------------------------
|
|
$(window).on('hashchange', locationChange.change());
|
|
|
|
$scope.sessionID=kbCookie.getSessionID();
|
|
$scope.status=kbCookie.getStatus();
|
|
|
|
//------------------------------------------------------
|
|
$scope.dashstatus1="active";
|
|
$scope.dashstatus1vis=true;
|
|
$scope.dashstatus2="";
|
|
$scope.dashstatus2vis=false;
|
|
$scope.dashstatus3="";
|
|
$scope.dashstatus3vis=false;
|
|
|
|
$scope.setDashStatus = function(dashNum){
|
|
if(dashNum===1){
|
|
$scope.dashstatus2="";
|
|
$scope.dashstatus2vis=false;
|
|
$scope.dashstatus3="";
|
|
$scope.dashstatus3vis=false;
|
|
$scope.dashstatus1="active";
|
|
$scope.dashstatus1vis=true;
|
|
}
|
|
else if (dashNum===2){
|
|
$scope.dashstatus1="";
|
|
$scope.dashstatus1vis=false;
|
|
$scope.dashstatus3="";
|
|
$scope.dashstatus3vis=false;
|
|
$scope.dashstatus2="active";
|
|
$scope.dashstatus2vis=true;
|
|
}
|
|
else if (dashNum===3){
|
|
$scope.dashstatus1="";
|
|
$scope.dashstatus1vis=false;
|
|
$scope.dashstatus2="";
|
|
$scope.dashstatus2vis=false;
|
|
$scope.dashstatus3="active";
|
|
$scope.dashstatus3vis=true;
|
|
}
|
|
};
|
|
|
|
|
|
//----------------------------topology------------------------------
|
|
var userData;
|
|
|
|
$scope.setUserData = function(top){
|
|
var count = 1;
|
|
var x;
|
|
for(x in top){
|
|
userData.push({"id":count++,"firstName":top[x]});
|
|
}
|
|
$scope.listA = userData.slice(0,userData.length);
|
|
$scope.items = userData;
|
|
};
|
|
|
|
// init
|
|
function init()
|
|
{
|
|
$scope.selectedA = [];
|
|
$scope.selectedB = [];
|
|
$scope.selectedC = [];
|
|
|
|
userData=[];
|
|
$scope.listA = [];
|
|
$scope.listB = [];
|
|
$scope.listC = [];
|
|
|
|
$scope.toggle=false;
|
|
}
|
|
init();
|
|
|
|
//$scope.checkedA = false;
|
|
//$scope.checkedB = false;
|
|
|
|
function arrayObjectIndexOf(myArray, searchTerm, property) {
|
|
for(var i = 0, len = myArray.length; i < len; i++) {
|
|
if (myArray[i][property] === searchTerm) return i;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
function arrayObjectIndexOf2(myArray, searchTerm) {
|
|
for(var i = 0, len = myArray.length; i < len; i++) {
|
|
if (myArray[i] === searchTerm) return i;
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
$scope.aToB = function() {
|
|
for (var i in $scope.selectedA) {
|
|
var moveId = arrayObjectIndexOf($scope.items, $scope.selectedA[i], "id");
|
|
$scope.listB.push($scope.items[moveId]);
|
|
var delId = arrayObjectIndexOf($scope.listA, $scope.selectedA[i], "id");
|
|
$scope.listA.splice(delId,1);
|
|
}
|
|
reset();
|
|
};
|
|
|
|
$scope.aToC = function() {
|
|
for (var i in $scope.selectedA) {
|
|
var moveId = arrayObjectIndexOf($scope.items, $scope.selectedA[i], "id");
|
|
$scope.listC.push($scope.items[moveId]);
|
|
var delId = arrayObjectIndexOf($scope.listA, $scope.selectedA[i], "id");
|
|
$scope.listA.splice(delId,1);
|
|
}
|
|
reset();
|
|
};
|
|
|
|
$scope.bToA = function() {
|
|
for (var i in $scope.selectedB) {
|
|
var moveId = arrayObjectIndexOf($scope.items, $scope.selectedB[i], "id");
|
|
$scope.listA.push($scope.items[moveId]);
|
|
var delId = arrayObjectIndexOf($scope.listB, $scope.selectedB[i], "id");
|
|
$scope.listB.splice(delId,1);
|
|
}
|
|
reset();
|
|
};
|
|
|
|
$scope.cToA = function() {
|
|
for (var i in $scope.selectedC) {
|
|
var moveId = arrayObjectIndexOf($scope.items, $scope.selectedC[i], "id");
|
|
$scope.listA.push($scope.items[moveId]);
|
|
var delId = arrayObjectIndexOf($scope.listC, $scope.selectedC[i], "id");
|
|
$scope.listC.splice(delId,1);
|
|
}
|
|
reset();
|
|
};
|
|
|
|
function reset(){
|
|
$scope.selectedA=[];
|
|
$scope.selectedB=[];
|
|
$scope.selectedC=[];
|
|
$scope.toggle=false;
|
|
}
|
|
|
|
$scope.toggleA = function() {
|
|
|
|
if ($scope.selectedA.length>0) {
|
|
reset();
|
|
}
|
|
else {
|
|
for (var i in $scope.listA) {
|
|
$scope.selectedB=[];
|
|
$scope.selectedC=[];
|
|
$scope.selectedA.push($scope.listA[i].id);
|
|
}
|
|
}
|
|
};
|
|
|
|
$scope.toggleB = function() {
|
|
|
|
if ($scope.selectedB.length>0) {
|
|
reset();
|
|
}
|
|
else {
|
|
for (var i in $scope.listB) {
|
|
$scope.selectedA=[];
|
|
$scope.selectedC=[];
|
|
$scope.selectedB.push($scope.listB[i].id);
|
|
}
|
|
}
|
|
};
|
|
|
|
$scope.toggleC = function() {
|
|
|
|
if ($scope.selectedC.length>0) {
|
|
reset();
|
|
}
|
|
else {
|
|
for (var i in $scope.listC) {
|
|
$scope.selectedA=[];
|
|
$scope.selectedB=[];
|
|
$scope.selectedC.push($scope.listC[i].id);
|
|
}
|
|
}
|
|
};
|
|
|
|
$scope.selectA = function(i) {
|
|
var delId = arrayObjectIndexOf2($scope.selectedA, i);
|
|
//console.log(delId,i);
|
|
if(delId===-1)
|
|
$scope.selectedA.push(i);
|
|
else
|
|
$scope.selectedA.splice(delId,1);
|
|
};
|
|
|
|
$scope.selectB = function(i) {
|
|
var delId = arrayObjectIndexOf2($scope.selectedB, i);
|
|
//console.log(delId,i);
|
|
if(delId===-1)
|
|
$scope.selectedB.push(i);
|
|
else
|
|
$scope.selectedB.splice(delId,1);
|
|
};
|
|
|
|
$scope.selectC = function(i) {
|
|
var delId = arrayObjectIndexOf2($scope.selectedC, i);
|
|
//console.log(delId,i);
|
|
if(delId===-1)
|
|
$scope.selectedC.push(i);
|
|
else
|
|
$scope.selectedC.splice(delId,1);
|
|
};
|
|
|
|
//-----------------------end of topology---------------------
|
|
|
|
|
|
$scope.checkStatus = function(){
|
|
if($scope.sessionID) {
|
|
kbHttp.getMethod2("/kloudbuster/status/" + $scope.sessionID)
|
|
.then(
|
|
function (response) { // .resolve
|
|
$scope.status = response.data.status;
|
|
kbCookie.setStatus($scope.status);
|
|
$scope.configStatus();
|
|
},
|
|
function (response) { // .reject
|
|
console.log("status error");
|
|
//console.log(response);
|
|
}
|
|
);
|
|
}
|
|
else
|
|
{
|
|
$scope.status = "NO SESSION ID";
|
|
kbCookie.setStatus("");
|
|
}
|
|
};
|
|
$scope.checkStatus();
|
|
|
|
|
|
var disabledStagingConfig=false;
|
|
|
|
$scope.disableConfig = function(disableId){
|
|
$("#"+disableId).find("input,button").each(function() {//show Config
|
|
$(this).attr("disabled", "disabled");
|
|
//$(this).removeAttr("disabled");
|
|
});
|
|
};
|
|
|
|
$scope.enableConfig = function(enableId){
|
|
$("#"+enableId).find("input,button").each(function() {//disable Config
|
|
//$(this).attr("disabled", "disabled");
|
|
$(this).removeAttr("disabled");
|
|
});
|
|
};
|
|
|
|
$scope.configStatus = function(){
|
|
if($scope.status === "READY")//show all config
|
|
{
|
|
if(disabledStagingConfig===true)
|
|
{
|
|
disabledStagingConfig=false;
|
|
$scope.enableConfig("stagingConfig2");
|
|
$scope.enableConfig("getButton");
|
|
$("md-radio-button").removeAttr("disabled");
|
|
|
|
}
|
|
}
|
|
else//no config can be modified
|
|
{
|
|
|
|
if(disabledStagingConfig===false)
|
|
{
|
|
disabledStagingConfig=true;
|
|
$scope.disableConfig("stagingConfig2");
|
|
$scope.disableConfig("getButton");
|
|
$("md-radio-button").attr("disabled", "disabled");
|
|
}
|
|
}
|
|
|
|
if(kbCookie.getIsOneCloud()===false)
|
|
{
|
|
$scope.disableConfig("topology");
|
|
}
|
|
};
|
|
|
|
|
|
$scope.getTopology = function() {
|
|
kbHttp.getMethod("/config/hypervisor_list/" + $scope.sessionID)
|
|
.then(
|
|
function (response) { // 调用承诺API获取数据 .resolve
|
|
$scope.setUserData(response.data.server);
|
|
//console.log("get hypervisor list");
|
|
},
|
|
function (response) { // 处理错误 .reject
|
|
console.log("get hypervisor list error:");
|
|
console.log(response);
|
|
//if (response.status == 400)
|
|
// showAlert.showAlert("Cannot get the hypervisor list!");
|
|
//else if (response.status == 404)
|
|
// showAlert.showAlert("The session_id is not found or invalid!");
|
|
//else if (response.status == -1)
|
|
// showAlert.showAlert("Cannot get the hypervisor list!");
|
|
|
|
}
|
|
)
|
|
};
|
|
//$scope.getTopology();
|
|
|
|
|
|
$scope.getDefaultConfig = function() {
|
|
kbHttp.getMethod("/config/default_config")
|
|
.then(
|
|
function(response) { // .resolve
|
|
kbCookie.setConfig(response.data);
|
|
$scope.config =response.data;
|
|
|
|
$scope.config.server.flavor.disk==0?$scope.choose_disk_size1=0:$scope.choose_disk_size1=1;
|
|
$scope.config.client.flavor.disk==0?$scope.choose_disk_size2=0:$scope.choose_disk_size2=1;
|
|
|
|
console.log("get & save default config");
|
|
},
|
|
function(response) { // .reject
|
|
//console.log("get default config error:");
|
|
//console.log(response);
|
|
showAlert.showAlert("Cannot get the Default Configuration!");
|
|
}
|
|
);
|
|
//$scope.config =JSON.stringify(response);
|
|
|
|
$scope.getTopology();
|
|
kbCookie.setTopology("");
|
|
$scope.availability_zone=1;
|
|
userData=[];
|
|
init();
|
|
};
|
|
|
|
$scope.getRunConfig = function() {
|
|
$scope.availability_zone=1;
|
|
|
|
kbHttp.getMethod("/config/running_config/" + $scope.sessionID)
|
|
.then(
|
|
function (response) { // .resolve
|
|
kbCookie.setConfig(response.data);
|
|
$scope.config = response.data;
|
|
|
|
$scope.config.server.flavor.disk==0?$scope.choose_disk_size1=0:$scope.choose_disk_size1=1;
|
|
$scope.config.client.flavor.disk==0?$scope.choose_disk_size2=0:$scope.choose_disk_size2=1;
|
|
|
|
if(($scope.config.server.availability_zone!=null && $scope.config.server.availability_zone!="") || ($scope.config.client.availability_zone!=null && $scope.client.server.availability_zone!=""))
|
|
{
|
|
$scope.availability_zone=2;
|
|
}
|
|
|
|
console.log("get & save running config");
|
|
},
|
|
function (response) { // .reject
|
|
console.log("get running config error:");
|
|
console.log(response);
|
|
}
|
|
);
|
|
|
|
kbHttp.getMethod("/config/az_list/" + $scope.sessionID)
|
|
.then(
|
|
function (response) { // .resolve
|
|
|
|
if(kbCookie.getIsOneCloud()===false)//two clouds
|
|
{
|
|
$scope.serversides = response.data.server;
|
|
$scope.clientsides = response.data.client;
|
|
|
|
}
|
|
else{//one clouds
|
|
$scope.serversides = response.data.server;
|
|
$scope.clientsides = response.data.server;
|
|
}
|
|
},
|
|
function (response) { // .reject
|
|
console.log("get AZ list error:");
|
|
console.log(response);
|
|
}
|
|
);
|
|
|
|
init();
|
|
$scope.getTopology();
|
|
|
|
kbHttp.getMethod("/config/topology_config/" + $scope.sessionID)
|
|
.then(
|
|
function (response) { // .resolve
|
|
//kbCookie.setConfig(response.data);
|
|
//$scope.config = response.data;
|
|
if(response.data!="null" && (response.data.servers_rack.length!=0 || response.data.clients_rack.length!=0))
|
|
{
|
|
$scope.availability_zone=3;
|
|
|
|
$scope.topology = {"servers_rack": response.data.servers_rack, "clients_rack": response.data.clients_rack};
|
|
kbCookie.setTopology($scope.topology);
|
|
console.log(response.data);
|
|
|
|
for (var i in $scope.topology.servers_rack) {
|
|
var moveId = arrayObjectIndexOf($scope.items, $scope.topology.servers_rack[i], "firstName");
|
|
$scope.listC.push($scope.items[moveId]);
|
|
var delId = arrayObjectIndexOf($scope.listA, $scope.topology.servers_rack[i], "firstName");
|
|
$scope.listA.splice(delId,1);
|
|
}
|
|
for (var i in $scope.topology.clients_rack) {
|
|
var moveId = arrayObjectIndexOf($scope.items, $scope.topology.clients_rack[i], "firstName");
|
|
$scope.listB.push($scope.items[moveId]);
|
|
var delId = arrayObjectIndexOf($scope.listA, $scope.topology.clients_rack[i], "firstName");
|
|
$scope.listA.splice(delId,1);
|
|
}
|
|
|
|
}
|
|
console.log("get & save topology config");
|
|
},
|
|
function (response) { // .reject
|
|
console.log("get topology config error:");
|
|
console.log(response);
|
|
}
|
|
);
|
|
|
|
};
|
|
$scope.getRunConfig();
|
|
|
|
|
|
$scope.changeConfig = function() {
|
|
if($scope.status==="READY"|| $scope.status==="") {
|
|
if ($scope.server.$valid == true && $scope.general.$valid == true && $scope.client.$valid == true) {
|
|
kbCookie.setConfig($scope.config);
|
|
|
|
if ($scope.availability_zone == 3) {
|
|
$scope.topology = {"servers_rack": [], "clients_rack": []};
|
|
for (var t in $scope.listC) {
|
|
$scope.topology.servers_rack.push($scope.listC[t].firstName);
|
|
}
|
|
for (var t in $scope.listB) {
|
|
$scope.topology.clients_rack.push($scope.listB[t].firstName);
|
|
}
|
|
|
|
kbCookie.setTopology($scope.topology);
|
|
//console.log($scope.topology);
|
|
}
|
|
else {
|
|
kbCookie.setTopology({"servers_rack": "", "clients_rack": ""});
|
|
}
|
|
|
|
$scope.chaCon = {"kb_cfg": {}, "topo_cfg": {}};
|
|
$scope.chaCon.kb_cfg = kbCookie.getConfig();
|
|
$scope.chaCon.topo_cfg = kbCookie.getTopology();
|
|
|
|
console.log($scope.chaCon);
|
|
kbHttp.putMethod("/config/running_config/" + $scope.sessionID, $scope.chaCon)
|
|
.then(
|
|
function (response) { // .resolve
|
|
console.log("change running config");
|
|
//showAlert.showAlert("Configuration updated successfully!");
|
|
|
|
},
|
|
function (response) { // .reject
|
|
//console.log("change running config error:");
|
|
//console.log(response);
|
|
showAlert.showAlert("Failed to update configuration!");
|
|
}
|
|
)
|
|
}
|
|
else{
|
|
showAlert.showAlert("Please check your inputs!");
|
|
}
|
|
}
|
|
else{
|
|
//console.log("config not allow to change now!");
|
|
showAlert.showAlert("Configuration cannot be changed now!");
|
|
}
|
|
};
|
|
|
|
|
|
$scope.changeTopology = function(){
|
|
if($scope.availability_zone==1)
|
|
{
|
|
$scope.config.server.availability_zone = "";
|
|
$scope.config.client.availability_zone = "";
|
|
$scope.topology = {};
|
|
kbCookie.setTopology({"servers_rack":"", "clients_rack": ""});
|
|
init();
|
|
$scope.getTopology();
|
|
}
|
|
else if($scope.availability_zone==2)
|
|
{
|
|
$scope.topology = {};
|
|
kbCookie.setTopology({"servers_rack":"", "clients_rack": ""});
|
|
init();
|
|
$scope.getTopology();
|
|
}
|
|
else if($scope.availability_zone==3)
|
|
{
|
|
//$scope.getTopology();
|
|
$scope.config.server.availability_zone = "";
|
|
$scope.config.client.availability_zone = "";
|
|
}
|
|
};
|
|
|
|
});
|
|
//.config(function($mdThemingProvider) {
|
|
// // Configure a dark theme with primary foreground yellow
|
|
// $mdThemingProvider.theme('docs-dark', 'default')
|
|
// .primaryPalette('yellow')
|
|
// .dark();
|
|
//});
|
|
|
|
|
|
|