blob: a16caf6e2224f2e195958f684de01e81695121a8 [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', [
13 '$scope', '$window', 'APIUtils', 'dataService', '$q',
14 function($scope, $window, APIUtils, dataService, $q) {
15 $scope.dataService = dataService;
16 $scope.dropdown_selected = false;
17 $scope.tmz = 'EDT';
18 $scope.logs = [];
19 $scope.server_info = {};
20 $scope.bmc_firmware = '';
21 $scope.bmc_time = '';
22 $scope.server_firmware = '';
23 $scope.power_consumption = '';
24 $scope.power_cap = '';
25 $scope.bmc_ip_addresses = [];
26 $scope.loading = false;
27 $scope.edit_hostname = false;
Iftekharul Islam54c22e42017-06-28 11:06:16 -050028
Andrew Geisslerd27bb132018-05-24 11:07:27 -070029 loadOverviewData();
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050030
Andrew Geisslerd27bb132018-05-24 11:07:27 -070031 function loadOverviewData() {
32 $scope.loading = true;
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050033
Andrew Geisslerd27bb132018-05-24 11:07:27 -070034 var getLogsPromise = APIUtils.getLogs().then(
35 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070036 $scope.logs = data.data.filter(function(log) {
37 return log.severity_flags.high == true;
38 });
Andrew Geisslerd27bb132018-05-24 11:07:27 -070039 },
40 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070041 console.log(JSON.stringify(error));
42 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050043
Andrew Geisslerd27bb132018-05-24 11:07:27 -070044 var getFirmwaresPromise = APIUtils.getFirmwares().then(
45 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070046 $scope.bmc_firmware = data.bmcActiveVersion;
47 $scope.server_firmware = data.hostActiveVersion;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070048 },
49 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070050 console.log(JSON.stringify(error));
51 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050052
Andrew Geisslerd27bb132018-05-24 11:07:27 -070053 var getLEDStatePromise = APIUtils.getLEDState().then(
54 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070055 if (data == APIUtils.LED_STATE.on) {
56 dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070057 } else {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070058 dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
59 }
Andrew Geisslerd27bb132018-05-24 11:07:27 -070060 },
61 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070062 console.log(JSON.stringify(error));
63 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050064
Andrew Geisslerd27bb132018-05-24 11:07:27 -070065 var getBMCTimePromise = APIUtils.getBMCTime().then(
66 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070067 $scope.bmc_time = data.data.Elapsed / 1000;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070068 },
69 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070070 console.log(JSON.stringify(error));
71 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050072
Andrew Geisslerd27bb132018-05-24 11:07:27 -070073 var getServerInfoPromise = APIUtils.getServerInfo().then(
74 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070075 $scope.server_info = data.data;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070076 },
77 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070078 console.log(JSON.stringify(error));
79 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050080
Andrew Geisslerd27bb132018-05-24 11:07:27 -070081 var getPowerConsumptionPromise = APIUtils.getPowerConsumption().then(
82 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070083 $scope.power_consumption = data;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070084 },
85 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070086 console.log(JSON.stringify(error));
87 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050088
Andrew Geisslerd27bb132018-05-24 11:07:27 -070089 var getPowerCapPromise = APIUtils.getPowerCap().then(
90 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070091 $scope.power_cap = data;
Andrew Geisslerd27bb132018-05-24 11:07:27 -070092 },
93 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070094 console.log(JSON.stringify(error));
95 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050096
Andrew Geisslerd27bb132018-05-24 11:07:27 -070097 var getNetworkInfoPromise = APIUtils.getNetworkInfo().then(
98 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070099 // TODO: openbmc/openbmc#3150 Support IPV6 when
100 // officially supported by the backend
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700101 $scope.bmc_ip_addresses = data.formatted_data.ip_addresses.ipv4;
102 },
103 function(error) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700104 console.log(JSON.stringify(error));
105 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -0500106
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700107 var promises = [
108 getLogsPromise,
109 getFirmwaresPromise,
110 getLEDStatePromise,
111 getBMCTimePromise,
112 getServerInfoPromise,
113 getPowerConsumptionPromise,
114 getPowerCapPromise,
115 getNetworkInfoPromise,
116 ];
Iftekharul Islam54c22e42017-06-28 11:06:16 -0500117
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700118 $q.all(promises).finally(function() {
119 $scope.loading = false;
120 });
121 }
CamVan Nguyen23217da2018-03-22 00:22:50 -0500122
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700123 $scope.toggleLED = function() {
124 var toggleState =
125 (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
126 APIUtils.LED_STATE.off :
127 APIUtils.LED_STATE.on;
128 dataService.LED_state =
129 (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
130 APIUtils.LED_STATE_TEXT.off :
131 APIUtils.LED_STATE_TEXT.on;
132 APIUtils.setLEDState(toggleState, function(status) {});
133 };
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700134
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700135 $scope.saveHostname = function(hostname) {
136 $scope.edit_hostname = false;
137 $scope.loading = true;
138 APIUtils.setHostname(hostname).then(
139 function(data) {
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700140 APIUtils.getNetworkInfo().then(function(data) {
141 dataService.setNetworkInfo(data);
142 });
143 },
144 function(error) {
145 console.log(error);
146 });
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700147 $scope.loading = false;
148 };
Matt Spinler845acdc2018-05-01 16:41:28 -0500149
150 $scope.getEventLogTitle = function(event) {
151 var title = event.type;
152 if ((event.eventID != 'None') && (event.description != 'None')) {
153 title = event.eventID + ': ' + event.description;
154 }
155 return title;
156 };
Andrew Geisslerd27bb132018-05-24 11:07:27 -0700157 }
158 ]);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500159
CamVan Nguyen23217da2018-03-22 00:22:50 -0500160})(angular);