summaryrefslogtreecommitdiffstats
path: root/app/overview
diff options
context:
space:
mode:
authorCamVan Nguyen <ctnguyen@us.ibm.com>2018-05-04 19:30:01 -0500
committerGunnar Mills <gmills@us.ibm.com>2018-05-22 13:53:56 +0000
commit7db0e9ac624aa0d9915b2e9488d2a19e932e6fda (patch)
tree2147e21ba887650be5788bf3084d5eedeff8973a /app/overview
parentcd0440e7a089735e312314e9d30fda90ef8e1b8c (diff)
downloadphosphor-webui-7db0e9ac624aa0d9915b2e9488d2a19e932e6fda.tar.gz
phosphor-webui-7db0e9ac624aa0d9915b2e9488d2a19e932e6fda.zip
Do not abort when one of multiple promises fails
The goal is to load as much data as possible on the 'Server overview' page. In original code, multiple promises are executed in parallel using $q.all() to get data for the page. When any of the promises fails, the remaining promises are aborted. The fix is to write a method to resolve the promise returned from each of the APIUtils calls, which would set the scope variables, and pass the promise returned by it to $q.all instead. Resolves openbmc/openbmc#3151 Change-Id: I361c80ddd2665dbe43f8a635eda42ef2b5c0788c Signed-off-by: CamVan Nguyen <ctnguyen@us.ibm.com>
Diffstat (limited to 'app/overview')
-rw-r--r--app/overview/controllers/system-overview-controller.js152
1 files changed, 76 insertions, 76 deletions
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
index 5ce57dc..2f37c01 100644
--- a/app/overview/controllers/system-overview-controller.js
+++ b/app/overview/controllers/system-overview-controller.js
@@ -22,8 +22,6 @@ window.angular && (function (angular) {
$scope.dropdown_selected = false;
$scope.tmz = 'EDT';
$scope.logs = [];
- $scope.mac_address = "";
- $scope.bmc_info = {};
$scope.server_info = {};
$scope.bmc_firmware = "";
$scope.bmc_time = "";
@@ -37,70 +35,87 @@ window.angular && (function (angular) {
loadOverviewData();
function loadOverviewData(){
$scope.loading = true;
- var promises = {
- logs: APIUtils.getLogs(),
- firmware: APIUtils.getFirmwares(),
- led: APIUtils.getLEDState(),
- ethernet: APIUtils.getBMCEthernetInfo(),
- bmc_info: APIUtils.getBMCInfo(),
- bmc_time: APIUtils.getBMCTime(),
- server_info: APIUtils.getServerInfo(),
- power_consumption: APIUtils.getPowerConsumption(),
- power_cap: APIUtils.getPowerCap(),
- network_info: APIUtils.getNetworkInfo(),
- };
- $q.all(promises)
- .then(function(data){
- $scope.displayLogs(data.logs.data);
- $scope.displayServerInfo(
- data.server_info,
- data.firmware.hostActiveVersion
- );
- $scope.displayLEDState(data.led);
- $scope.displayBMCEthernetInfo(data.ethernet);
- $scope.displayBMCInfo(
- data.bmc_info,
- data.firmware.bmcActiveVersion
- );
- $scope.displayBMCTime(data.bmc_time);
- $scope.displayPowerConsumption(data.power_consumption);
- $scope.displayPowerCap(data.power_cap);
- $scope.displayNetworkInfo(data.network_info);
- })
- .finally(function(){
- $scope.loading = false;
- });
- }
- $scope.displayBMCEthernetInfo = function(data){
- $scope.mac_address = data.MACAddress;
- }
- $scope.displayBMCInfo = function(data, bmcActiveVersion){
- $scope.bmc_info = data;
- $scope.bmc_firmware = bmcActiveVersion;
- }
+ var getLogsPromise =
+ APIUtils.getLogs().then(function(data){
+ $scope.logs = data.data.filter(function(log){
+ return log.severity_flags.high == true;
+ });
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
- $scope.displayBMCTime = function(data){
- $scope.bmc_time = data.data.Elapsed / 1000;
- }
+ var getFirmwaresPromise =
+ APIUtils.getFirmwares().then(function(data){
+ $scope.bmc_firmware = data.bmcActiveVersion;
+ $scope.server_firmware = data.hostActiveVersion;
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
- $scope.displayLogs = function(data){
- $scope.logs = data.filter(function(log){
- return log.severity_flags.high == true;
- });
- }
+ var getLEDStatePromise =
+ APIUtils.getLEDState().then(function(data){
+ if(data == APIUtils.LED_STATE.on){
+ dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
+ }else{
+ dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
+ }
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
- $scope.displayServerInfo = function(data, hostActiveVersion){
- $scope.server_info = data.data;
- $scope.server_firmware = hostActiveVersion;
- }
+ var getBMCTimePromise =
+ APIUtils.getBMCTime().then(function(data){
+ $scope.bmc_time = data.data.Elapsed / 1000;
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
+
+ var getServerInfoPromise =
+ APIUtils.getServerInfo().then(function(data){
+ $scope.server_info = data.data;
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
+
+ var getPowerConsumptionPromise =
+ APIUtils.getPowerConsumption().then(function(data){
+ $scope.power_consumption = data;
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
+
+ var getPowerCapPromise =
+ APIUtils.getPowerCap().then(function(data){
+ $scope.power_cap = data;
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
- $scope.displayLEDState = function(state){
- if(state == APIUtils.LED_STATE.on){
- dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
- }else{
- dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
- }
+ var getNetworkInfoPromise =
+ APIUtils.getNetworkInfo().then(function(data){
+ // TODO: openbmc/openbmc#3150 Support IPV6 when
+ // officially supported by the backend
+ $scope.bmc_ip_addresses =
+ data.formatted_data.ip_addresses.ipv4;
+ }, function(error){
+ console.log(JSON.stringify(error));
+ })
+
+ var promises = [
+ getLogsPromise,
+ getFirmwaresPromise,
+ getLEDStatePromise,
+ getBMCTimePromise,
+ getServerInfoPromise,
+ getPowerConsumptionPromise,
+ getPowerCapPromise,
+ getNetworkInfoPromise,
+ ];
+
+ $q.all(promises).finally(function(){
+ $scope.loading = false;
+ });
}
$scope.toggleLED = function(){
@@ -112,21 +127,6 @@ window.angular && (function (angular) {
});
}
- $scope.displayPowerConsumption = function(data){
- $scope.power_consumption = data;
- }
-
- $scope.displayPowerCap = function(data){
- $scope.power_cap = data;
- }
-
- $scope.displayNetworkInfo = function(data){
- // TODO: openbmc/openbmc#3150 Support IPV6 when officially
- // supported by the backend
- $scope.bmc_ip_addresses =
- data.formatted_data.ip_addresses.ipv4;
- }
-
$scope.saveHostname = function(hostname) {
$scope.edit_server_name = false;
$scope.loading = true;
OpenPOWER on IntegriCloud