kloudbuster/kb_web/app/scripts/controllers/config_storage.js

259 lines
8.8 KiB
JavaScript

//Copyright 2016 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.
/**
* Created by xiyu3 on 9/8/15.
*/
'use strict';
angular.module('kbWebApp')
.controller('StorageConfigCtrl', function ($scope, $http, $location, showAlert, kbHttp, kbCookie, locationChange) {
this.awesomeThings = [
'HTML5 Boilerplate',
'AngularJS',
'Karma'
];
if (kbCookie.getSessionID() === "") $location.path('/Login');
else kbCookie.checkMode('storage');
//---------------------------------top navigation bar---------------------------------
$(window).on('hashchange', locationChange.change());
$scope.sessionID = kbCookie.getSessionID();
$scope.status = kbCookie.getStatus();
//------------------------------------------------------
$scope.dash1status1 = "active";
$scope.dash1status1vis = true;
$scope.dash1status2 = "";
$scope.dash1status2vis = false;
//$scope.dash1status3 = "";
//$scope.dash1status3vis = false;
$scope.setDash1Status = function (dashNum) {
if (dashNum === 1) {
$scope.dash1status2 = "";
$scope.dash1status2vis = false;
//$scope.dash1status3 = "";
//$scope.dash1status3vis = false;
$scope.dash1status1 = "active";
$scope.dash1status1vis = true;
}
else if (dashNum === 2) {
$scope.dash1status1 = "";
$scope.dash1status1vis = false;
//$scope.dash1status3 = "";
//$scope.dash1status3vis = false;
$scope.dash1status2 = "active";
$scope.dash1status2vis = true;
}
//else if (dashNum === 3) {
// $scope.dash1status1 = "";
// $scope.dash1status1vis = false;
// $scope.dash1status2 = "";
// $scope.dash1status2vis = false;
// $scope.dash1status3 = "active";
// $scope.dash1status3vis = true;
//}
};
$scope.parseInt = parseInt;
$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("");
}
};
var disabledStagingConfig = false;
$scope.disableConfig = function (disableId) {
$("#" + disableId).find("input,button,a").each(function () {//show Config
$(this).attr("disabled", "disabled");
console.log(this);
//$(this).removeAttr("disabled");
});
};
$scope.enableConfig = function (enableId) {
$("#" + enableId).find("input,button,a").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("stagingConfig3");
$scope.enableConfig("getButton");
}
}
else//no config can be modified
{
if (disabledStagingConfig === false) {
disabledStagingConfig = true;
$scope.disableConfig("stagingConfig3");
$scope.disableConfig("getButton");
}
}
};
$("#dropdownrandrw").append('<li class="divider"></li>');
$scope.storageMode = {
"randread":{"name":"Random Read","type":"panel-randread","para":["description","rate_iops","block_size","iodepth","runtime","extra_opts"]},
"randwrite":{"name":"Random Write","type":"panel-randwrite","para":["description","rate_iops","block_size","iodepth","runtime","extra_opts"]},
"randrw":{"name":"Random Read/Write","type":"panel-randrw","para":["description","rate_iops","block_size","iodepth","rwmixread","runtime","extra_opts"]},
"read":{"name":"Seq Read","type":"panel-read","para":["description","rate","block_size","iodepth","runtime","extra_opts"]},
"write":{"name":"Seq Write","type":"panel-write","para":["description","rate","block_size","iodepth","runtime","extra_opts"]},
"rw":{"name":"Seq Read/Write","type":"panel-rw","para":["description","rate","block_size","iodepth","rwmixread","runtime","extra_opts"]}
};
$scope.options = {
"description":{"name":"Description","default":""},
"mode":{"name":"Mode"},
"runtime":{"name":"Run Time","default":30},
"block_size":{"name":"Block Size (KB)","default":"4k"},
"iodepth":{"name":"IO Depth","default":1},
"rate_iops":{"name":"IOPs","default":100},
"rate":{"name":"BW (MB/s)","default":"60M"},
"rwmixread":{"name":"Read %","default":70},
"extra_opts":{"name":"Extra Options","default":""}
};
$scope.switchIndex = function (index, order) {//order = 0 delete; order = 1 move up; order = -1 move down
var tem = $scope.config.client.storage_tool_configs[index];
$scope.config.client.storage_tool_configs.splice(index, 1);//delete
if (order == 1) {
$scope.config.client.storage_tool_configs.splice(index - 1, 0, tem);
}
else if (order == -1) {
$scope.config.client.storage_tool_configs.splice(index + 1, 0, tem);
}
};
$scope.addMode = function (adding) {
var newmode= {};
for(var opt in $scope.storageMode[adding]["para"]){
var newOpt = $scope.storageMode[adding]["para"][opt];
newmode[newOpt] = $scope.options[newOpt]["default"];
}
newmode["mode"] = adding;
$scope.config.client.storage_tool_configs.splice(0,0,newmode)
};
$scope.getDefaultConfig = function () {
kbHttp.getMethod("/config/default_config")
.then(
function (response) { // .resolve
kbCookie.setConfig(response.data);
$scope.config = response.data;
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.getRunConfig = function () {
kbHttp.getMethod("/config/running_config/" + $scope.sessionID)
.then(
function (response) { // .resolve
kbCookie.setConfig(response.data);
$scope.config = response.data;
$scope.checkStatus();
console.log("get & save running config");
},
function (response) { // .reject
console.log("get running 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) {
kbCookie.setConfig($scope.config);
$scope.chaCon = {"kb_cfg": {}, "topo_cfg": {}};
$scope.chaCon.kb_cfg = kbCookie.getConfig();
kbCookie.setTopology({"servers_rack": "", "clients_rack": ""});
$scope.chaCon.topo_cfg = kbCookie.getTopology();
$scope.config.server.availability_zone = "";
$scope.config.client.availability_zone = "";
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!");
}
};
});