xref: /openbmc/phosphor-webui/app/overview/controllers/system-overview-controller.js (revision 7db0e9ac624aa0d9915b2e9488d2a19e932e6fda)
199d199f3SIftekharul Islam/**
2cd789508SIftekharul Islam * Controller for systemOverview
399d199f3SIftekharul Islam *
499d199f3SIftekharul Islam * @module app/overview
599d199f3SIftekharul Islam * @exports systemOverviewController
699d199f3SIftekharul Islam * @name systemOverviewController
799d199f3SIftekharul Islam */
899d199f3SIftekharul Islam
999d199f3SIftekharul Islamwindow.angular && (function (angular) {
1099d199f3SIftekharul Islam    'use strict';
1199d199f3SIftekharul Islam
1299d199f3SIftekharul Islam    angular
1399d199f3SIftekharul Islam        .module('app.overview')
1499d199f3SIftekharul Islam        .controller('systemOverviewController', [
1599d199f3SIftekharul Islam            '$scope',
1699d199f3SIftekharul Islam            '$window',
1799d199f3SIftekharul Islam            'APIUtils',
1899d199f3SIftekharul Islam            'dataService',
19428375e8SMichael Davis            '$q',
20cf862007SAndrew Geissler            function($scope, $window, APIUtils, dataService, $q){
2199d199f3SIftekharul Islam                $scope.dataService = dataService;
22cd789508SIftekharul Islam                $scope.dropdown_selected = false;
2354c22e4fSIftekharul Islam                $scope.tmz = 'EDT';
2454c22e4fSIftekharul Islam                $scope.logs = [];
2517708f2aSGunnar Mills                $scope.server_info = {};
2654c22e4fSIftekharul Islam                $scope.bmc_firmware = "";
27ed96f8bbSGunnar Mills                $scope.bmc_time = "";
2854c22e4fSIftekharul Islam                $scope.server_firmware = "";
2933275839SCamVan Nguyen                $scope.power_consumption = "";
3033275839SCamVan Nguyen                $scope.power_cap = "";
31fbb63db4SCamVan Nguyen                $scope.bmc_ip_addresses = [];
32428375e8SMichael Davis                $scope.loading = false;
33ff2313dbSAndrew Geissler                $scope.edit_server_name = false;
3454c22e4fSIftekharul Islam
3554c22e4fSIftekharul Islam                loadOverviewData();
3654c22e4fSIftekharul Islam                function loadOverviewData(){
37428375e8SMichael Davis                    $scope.loading = true;
3854c22e4fSIftekharul Islam
39*7db0e9acSCamVan Nguyen                    var getLogsPromise =
40*7db0e9acSCamVan Nguyen                        APIUtils.getLogs().then(function(data){
41*7db0e9acSCamVan Nguyen                            $scope.logs = data.data.filter(function(log){
4254c22e4fSIftekharul Islam                                return log.severity_flags.high == true;
4354c22e4fSIftekharul Islam                            });
44*7db0e9acSCamVan Nguyen                        }, function(error){
45*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
46*7db0e9acSCamVan Nguyen                        })
4754c22e4fSIftekharul Islam
48*7db0e9acSCamVan Nguyen                    var getFirmwaresPromise =
49*7db0e9acSCamVan Nguyen                        APIUtils.getFirmwares().then(function(data){
50*7db0e9acSCamVan Nguyen                            $scope.bmc_firmware = data.bmcActiveVersion;
51*7db0e9acSCamVan Nguyen                            $scope.server_firmware = data.hostActiveVersion;
52*7db0e9acSCamVan Nguyen                        }, function(error){
53*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
54*7db0e9acSCamVan Nguyen                        })
5554c22e4fSIftekharul Islam
56*7db0e9acSCamVan Nguyen                    var getLEDStatePromise =
57*7db0e9acSCamVan Nguyen                        APIUtils.getLEDState().then(function(data){
58*7db0e9acSCamVan Nguyen                            if(data == APIUtils.LED_STATE.on){
5954c22e4fSIftekharul Islam                                dataService.LED_state = APIUtils.LED_STATE_TEXT.on;
6054c22e4fSIftekharul Islam                            }else{
6154c22e4fSIftekharul Islam                                dataService.LED_state = APIUtils.LED_STATE_TEXT.off;
6254c22e4fSIftekharul Islam                            }
63*7db0e9acSCamVan Nguyen                        }, function(error){
64*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
65*7db0e9acSCamVan Nguyen                        })
66*7db0e9acSCamVan Nguyen
67*7db0e9acSCamVan Nguyen                    var getBMCTimePromise =
68*7db0e9acSCamVan Nguyen                        APIUtils.getBMCTime().then(function(data){
69*7db0e9acSCamVan Nguyen                            $scope.bmc_time = data.data.Elapsed / 1000;
70*7db0e9acSCamVan Nguyen                        }, function(error){
71*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
72*7db0e9acSCamVan Nguyen                        })
73*7db0e9acSCamVan Nguyen
74*7db0e9acSCamVan Nguyen                    var getServerInfoPromise =
75*7db0e9acSCamVan Nguyen                        APIUtils.getServerInfo().then(function(data){
76*7db0e9acSCamVan Nguyen                            $scope.server_info = data.data;
77*7db0e9acSCamVan Nguyen                        }, function(error){
78*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
79*7db0e9acSCamVan Nguyen                        })
80*7db0e9acSCamVan Nguyen
81*7db0e9acSCamVan Nguyen                    var getPowerConsumptionPromise =
82*7db0e9acSCamVan Nguyen                        APIUtils.getPowerConsumption().then(function(data){
83*7db0e9acSCamVan Nguyen                            $scope.power_consumption = data;
84*7db0e9acSCamVan Nguyen                        }, function(error){
85*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
86*7db0e9acSCamVan Nguyen                        })
87*7db0e9acSCamVan Nguyen
88*7db0e9acSCamVan Nguyen                    var getPowerCapPromise =
89*7db0e9acSCamVan Nguyen                        APIUtils.getPowerCap().then(function(data){
90*7db0e9acSCamVan Nguyen                            $scope.power_cap = data;
91*7db0e9acSCamVan Nguyen                        }, function(error){
92*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
93*7db0e9acSCamVan Nguyen                        })
94*7db0e9acSCamVan Nguyen
95*7db0e9acSCamVan Nguyen                    var getNetworkInfoPromise =
96*7db0e9acSCamVan Nguyen                        APIUtils.getNetworkInfo().then(function(data){
97*7db0e9acSCamVan Nguyen                            // TODO: openbmc/openbmc#3150 Support IPV6 when
98*7db0e9acSCamVan Nguyen                            // officially supported by the backend
99*7db0e9acSCamVan Nguyen                            $scope.bmc_ip_addresses =
100*7db0e9acSCamVan Nguyen                                data.formatted_data.ip_addresses.ipv4;
101*7db0e9acSCamVan Nguyen                        }, function(error){
102*7db0e9acSCamVan Nguyen                            console.log(JSON.stringify(error));
103*7db0e9acSCamVan Nguyen                        })
104*7db0e9acSCamVan Nguyen
105*7db0e9acSCamVan Nguyen                    var promises = [
106*7db0e9acSCamVan Nguyen                        getLogsPromise,
107*7db0e9acSCamVan Nguyen                        getFirmwaresPromise,
108*7db0e9acSCamVan Nguyen                        getLEDStatePromise,
109*7db0e9acSCamVan Nguyen                        getBMCTimePromise,
110*7db0e9acSCamVan Nguyen                        getServerInfoPromise,
111*7db0e9acSCamVan Nguyen                        getPowerConsumptionPromise,
112*7db0e9acSCamVan Nguyen                        getPowerCapPromise,
113*7db0e9acSCamVan Nguyen                        getNetworkInfoPromise,
114*7db0e9acSCamVan Nguyen                    ];
115*7db0e9acSCamVan Nguyen
116*7db0e9acSCamVan Nguyen                    $q.all(promises).finally(function(){
117*7db0e9acSCamVan Nguyen                        $scope.loading = false;
118*7db0e9acSCamVan Nguyen                    });
11954c22e4fSIftekharul Islam                }
12054c22e4fSIftekharul Islam
12154c22e4fSIftekharul Islam                $scope.toggleLED = function(){
12254c22e4fSIftekharul Islam                    var toggleState = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
12354c22e4fSIftekharul Islam                        APIUtils.LED_STATE.off : APIUtils.LED_STATE.on;
12454c22e4fSIftekharul Islam                        dataService.LED_state = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
12554c22e4fSIftekharul Islam                        APIUtils.LED_STATE_TEXT.off : APIUtils.LED_STATE_TEXT.on;
12654c22e4fSIftekharul Islam                    APIUtils.setLEDState(toggleState, function(status){
12754c22e4fSIftekharul Islam                    });
12854c22e4fSIftekharul Islam                }
12923217daeSCamVan Nguyen
130ff2313dbSAndrew Geissler                $scope.saveHostname = function(hostname) {
131ff2313dbSAndrew Geissler                    $scope.edit_server_name = false;
132ff2313dbSAndrew Geissler                    $scope.loading = true;
133ff2313dbSAndrew Geissler                    APIUtils.setHostname(hostname).then(function(data){
134ff2313dbSAndrew Geissler                        APIUtils.getNetworkInfo().then(function(data){
135ff2313dbSAndrew Geissler                            dataService.setNetworkInfo(data);
136ff2313dbSAndrew Geissler                        });
137ff2313dbSAndrew Geissler                    },
138ff2313dbSAndrew Geissler                    function(error){
139ff2313dbSAndrew Geissler                        console.log(error);
140ff2313dbSAndrew Geissler                    });
141ff2313dbSAndrew Geissler                    $scope.loading = false;
142ff2313dbSAndrew Geissler                }
14399d199f3SIftekharul Islam            }
14499d199f3SIftekharul Islam        ]
14599d199f3SIftekharul Islam    );
14699d199f3SIftekharul Islam
14799d199f3SIftekharul Islam})(angular);
148