diff options
| author | CamVan Nguyen <ctnguyen@us.ibm.com> | 2018-05-04 19:30:01 -0500 |
|---|---|---|
| committer | Gunnar Mills <gmills@us.ibm.com> | 2018-05-22 13:53:56 +0000 |
| commit | 7db0e9ac624aa0d9915b2e9488d2a19e932e6fda (patch) | |
| tree | 2147e21ba887650be5788bf3084d5eedeff8973a /app/overview/controllers | |
| parent | cd0440e7a089735e312314e9d30fda90ef8e1b8c (diff) | |
| download | phosphor-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/controllers')
| -rw-r--r-- | app/overview/controllers/system-overview-controller.js | 152 |
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; |

