blob: 0b7d2f0d7b06a92a939023de7f876056ebf6ef1c [file] [log] [blame]
Iftekharul Islam99d199f2017-03-24 15:28:25 -05001/**
Iftekharul Islamcd789502017-04-19 14:37:55 -05002 * Controller for systemOverview
Iftekharul Islam99d199f2017-03-24 15:28:25 -05003 *
4 * @module app/overview
5 * @exports systemOverviewController
6 * @name systemOverviewController
Iftekharul Islam99d199f2017-03-24 15:28:25 -05007 */
8
Andrew Geisslerba5e3f32018-05-24 10:58:00 -07009window.angular && (function(angular) {
10 'use strict';
Iftekharul Islam99d199f2017-03-24 15:28:25 -050011
Andrew Geisslerd27bb132018-05-24 11:07:27 -070012 angular.module('app.overview').controller('systemOverviewController', [
Gunnar Mills006aaa02018-06-26 16:08:59 -050013 '$scope', '$window', 'APIUtils', 'dataService', 'Constants', '$q',
14 function($scope, $window, APIUtils, dataService, Constants, $q) {
Andrew Geisslerd27bb132018-05-24 11:07:27 -070015 $scope.dataService = dataService;
16 $scope.dropdown_selected = false;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070017 $scope.logs = [];
18 $scope.server_info = {};
19 $scope.bmc_firmware = '';
20 $scope.bmc_time = '';
21 $scope.server_firmware = '';
22 $scope.power_consumption = '';
23 $scope.power_cap = '';
24 $scope.bmc_ip_addresses = [];
25 $scope.loading = false;
26 $scope.edit_hostname = false;
Iftekharul Islam54c22e42017-06-28 11:06:16 -050027
Andrew Geisslerd27bb132018-05-24 11:07:27 -070028 loadOverviewData();
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050029
Andrew Geisslerd27bb132018-05-24 11:07:27 -070030 function loadOverviewData() {
31 $scope.loading = true;
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050032
Andrew Geisslerd27bb132018-05-24 11:07:27 -070033 var getLogsPromise = APIUtils.getLogs().then(
34 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070035 $scope.logs = data.data.filter(function(log) {
36 return log.severity_flags.high == true;
37 });
Andrew Geisslerd27bb132018-05-24 11:07:27 -070038 },
39 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070040 console.log(JSON.stringify(error));
41 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050042
Andrew Geisslerd27bb132018-05-24 11:07:27 -070043 var getFirmwaresPromise = APIUtils.getFirmwares().then(
44 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070045 $scope.bmc_firmware = data.bmcActiveVersion;
46 $scope.server_firmware = data.hostActiveVersion;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070047 },
48 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070049 console.log(JSON.stringify(error));
50 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050051
Andrew Geisslerd27bb132018-05-24 11:07:27 -070052 var getLEDStatePromise = APIUtils.getLEDState().then(
53 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070054 if (data == APIUtils.LED_STATE.on) {
55 dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070056 } else {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070057 dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
58 }
Andrew Geisslerd27bb132018-05-24 11:07:27 -070059 },
60 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070061 console.log(JSON.stringify(error));
62 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050063
Andrew Geisslerd27bb132018-05-24 11:07:27 -070064 var getBMCTimePromise = APIUtils.getBMCTime().then(
65 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070066 $scope.bmc_time = data.data.Elapsed / 1000;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070067 },
68 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070069 console.log(JSON.stringify(error));
70 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050071
Andrew Geisslerd27bb132018-05-24 11:07:27 -070072 var getServerInfoPromise = APIUtils.getServerInfo().then(
73 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070074 $scope.server_info = data.data;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070075 },
76 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070077 console.log(JSON.stringify(error));
78 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050079
Andrew Geisslerd27bb132018-05-24 11:07:27 -070080 var getPowerConsumptionPromise = APIUtils.getPowerConsumption().then(
81 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070082 $scope.power_consumption = data;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070083 },
84 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070085 console.log(JSON.stringify(error));
86 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050087
Andrew Geisslerd27bb132018-05-24 11:07:27 -070088 var getPowerCapPromise = APIUtils.getPowerCap().then(
89 function(data) {
Gunnar Mills006aaa02018-06-26 16:08:59 -050090 if (data.data.PowerCapEnable == false) {
91 $scope.power_cap = Constants.POWER_CAP_TEXT.disabled;
92 } else {
93 $scope.power_cap =
94 data.data.PowerCap + ' ' + Constants.POWER_CAP_TEXT.unit;
95 }
Andrew Geisslerd27bb132018-05-24 11:07:27 -070096 },
97 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070098 console.log(JSON.stringify(error));
99 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -0500100
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700101 var getNetworkInfoPromise = APIUtils.getNetworkInfo().then(
102 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700103 // TODO: openbmc/openbmc#3150 Support IPV6 when
104 // officially supported by the backend
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700105 $scope.bmc_ip_addresses = data.formatted_data.ip_addresses.ipv4;
106 },
107 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700108 console.log(JSON.stringify(error));
109 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -0500110
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700111 var promises = [
112 getLogsPromise,
113 getFirmwaresPromise,
114 getLEDStatePromise,
115 getBMCTimePromise,
116 getServerInfoPromise,
117 getPowerConsumptionPromise,
118 getPowerCapPromise,
119 getNetworkInfoPromise,
120 ];
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500121
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700122 $q.all(promises).finally(function() {
123 $scope.loading = false;
124 });
125 }
CamVan Nguyen23217da2018-03-22 00:22:50 -0500126
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700127 $scope.toggleLED = function() {
128 var toggleState =
129 (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
130 APIUtils.LED_STATE.off :
131 APIUtils.LED_STATE.on;
132 dataService.LED_state =
133 (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
134 APIUtils.LED_STATE_TEXT.off :
135 APIUtils.LED_STATE_TEXT.on;
136 APIUtils.setLEDState(toggleState, function(status) {});
137 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700138
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700139 $scope.saveHostname = function(hostname) {
140 $scope.edit_hostname = false;
141 $scope.loading = true;
142 APIUtils.setHostname(hostname).then(
143 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700144 APIUtils.getNetworkInfo().then(function(data) {
145 dataService.setNetworkInfo(data);
146 });
147 },
148 function(error) {
149 console.log(error);
150 });
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700151 $scope.loading = false;
152 };
Matt Spinler845acdc2018-05-01 16:41:28 -0500153
154 $scope.getEventLogTitle = function(event) {
155 var title = event.type;
156 if ((event.eventID != 'None') && (event.description != 'None')) {
157 title = event.eventID + ': ' + event.description;
158 }
159 return title;
160 };
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700161 }
162 ]);
CamVan Nguyen23217da2018-03-22 00:22:50 -0500163})(angular);