blob: c37765cedceea7368682866ad189ad757ac3a8f5 [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 Geisslerba5e3f32018-05-24 10:58:00 -070012 angular
13 .module('app.overview')
14 .controller('systemOverviewController', [
15 '$scope',
16 '$window',
17 'APIUtils',
18 'dataService',
19 '$q',
20 function($scope, $window, APIUtils, dataService, $q) {
21 $scope.dataService = dataService;
22 $scope.dropdown_selected = false;
23 $scope.tmz = 'EDT';
24 $scope.logs = [];
25 $scope.server_info = {};
26 $scope.bmc_firmware = '';
27 $scope.bmc_time = '';
28 $scope.server_firmware = '';
29 $scope.power_consumption = '';
30 $scope.power_cap = '';
31 $scope.bmc_ip_addresses = [];
32 $scope.loading = false;
33 $scope.edit_hostname = false;
Iftekharul Islam54c22e42017-06-28 11:06:16 -050034
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070035 loadOverviewData();
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050036
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070037 function loadOverviewData() {
38 $scope.loading = true;
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050039
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070040 var getLogsPromise =
41 APIUtils.getLogs().then(function(data) {
42 $scope.logs = data.data.filter(function(log) {
43 return log.severity_flags.high == true;
44 });
45 }, function(error) {
46 console.log(JSON.stringify(error));
47 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050048
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070049 var getFirmwaresPromise =
50 APIUtils.getFirmwares().then(function(data) {
51 $scope.bmc_firmware = data.bmcActiveVersion;
52 $scope.server_firmware = data.hostActiveVersion;
53 }, function(error) {
54 console.log(JSON.stringify(error));
55 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050056
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070057 var getLEDStatePromise =
58 APIUtils.getLEDState().then(function(data) {
59 if (data == APIUtils.LED_STATE.on) {
60 dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
61 }
62 else {
63 dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
64 }
65 }, function(error) {
66 console.log(JSON.stringify(error));
67 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050068
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070069 var getBMCTimePromise =
70 APIUtils.getBMCTime().then(function(data) {
71 $scope.bmc_time = data.data.Elapsed / 1000;
72 }, function(error) {
73 console.log(JSON.stringify(error));
74 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050075
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070076 var getServerInfoPromise =
77 APIUtils.getServerInfo().then(function(data) {
78 $scope.server_info = data.data;
79 }, function(error) {
80 console.log(JSON.stringify(error));
81 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050082
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070083 var getPowerConsumptionPromise =
84 APIUtils.getPowerConsumption().then(function(data) {
85 $scope.power_consumption = data;
86 }, function(error) {
87 console.log(JSON.stringify(error));
88 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050089
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070090 var getPowerCapPromise =
91 APIUtils.getPowerCap().then(function(data) {
92 $scope.power_cap = data;
93 }, function(error) {
94 console.log(JSON.stringify(error));
95 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -050096
Andrew Geisslerba5e3f32018-05-24 10:58:00 -070097 var getNetworkInfoPromise =
98 APIUtils.getNetworkInfo().then(function(data) {
99 // TODO: openbmc/openbmc#3150 Support IPV6 when
100 // officially supported by the backend
101 $scope.bmc_ip_addresses =
102 data.formatted_data.ip_addresses.ipv4;
103 }, function(error) {
104 console.log(JSON.stringify(error));
105 });
CamVan Nguyen7db0e9a2018-05-04 19:30:01 -0500106
Andrew Geisslerba5e3f32018-05-24 10:58:00 -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 Geisslerba5e3f32018-05-24 10:58:00 -0700118 $q.all(promises).finally(function() {
119 $scope.loading = false;
120 });
121 }
CamVan Nguyen23217da2018-03-22 00:22:50 -0500122
Andrew Geisslerba5e3f32018-05-24 10:58:00 -0700123 $scope.toggleLED = function() {
124 var toggleState = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
125 APIUtils.LED_STATE.off : APIUtils.LED_STATE.on;
126 dataService.LED_state = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
127 APIUtils.LED_STATE_TEXT.off : APIUtils.LED_STATE_TEXT.on;
128 APIUtils.setLEDState(toggleState, function(status) {});
129 };
130
131 $scope.saveHostname = function(hostname) {
132 $scope.edit_hostname = false;
133 $scope.loading = true;
134 APIUtils.setHostname(hostname).then(function(data) {
135 APIUtils.getNetworkInfo().then(function(data) {
136 dataService.setNetworkInfo(data);
137 });
138 },
139 function(error) {
140 console.log(error);
141 });
142 $scope.loading = false;
143 };
144 }
145 ]);
Iftekharul Islam99d199f2017-03-24 15:28:25 -0500146
CamVan Nguyen23217da2018-03-22 00:22:50 -0500147})(angular);