Add dynamic content to system overview page
Change-Id: Id47db28c9ec7b4dc39b9b690797087e1970ce328
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/common/directives/log-event.html b/app/common/directives/log-event.html
index 70d7dee..6b8f972 100644
--- a/app/common/directives/log-event.html
+++ b/app/common/directives/log-event.html
@@ -21,7 +21,7 @@
<div class="column small-9 large-9 event-log__event-info"
ng-click="event.meta = ! event.meta">
<p class="inline event__priority event-resolved" ng-hide="event.Resolved == 0">Resolved</p>
- <p class="inline event__priority med-priority" ng-class="{'low-priority': event.priority == 'Low', 'medium-priority': event.priority == 'Medium', 'high-priority': event.priority == 'High'}" ng-hide="event.Resolved == 1">{{event.priority}}</p>
+ <p class="inline event__priority" ng-class="{'low-priority': event.priority == 'Low', 'medium-priority': event.priority == 'Medium', 'high-priority': event.priority == 'High'}" ng-hide="event.Resolved == 1">{{event.priority}}</p>
<p class="inline event__severity">{{event.severity_code}}</p>
<p class="inline event__description">{{event.Severity}}</p>
<div>
diff --git a/app/common/services/api-utils.js b/app/common/services/api-utils.js
index 540fb42..ed10768 100644
--- a/app/common/services/api-utils.js
+++ b/app/common/services/api-utils.js
@@ -67,7 +67,11 @@
}).success(function(response){
var json = JSON.stringify(response);
var content = JSON.parse(json);
- callback(content.data.Asserted);
+ if(callback){
+ callback(content.data.Asserted);
+ }else{
+ return content.data.Asserted;
+ }
}).error(function(error){
console.log(error);
});
@@ -355,7 +359,11 @@
}, content.data[key]));
}
}
- callback(data, dataClone);
+ if(callback){
+ callback(data, dataClone);
+ }else{
+ return data;
+ }
}).error(function(error){
console.log(error);
});
@@ -553,7 +561,11 @@
}
}
}
- callback(data, bmcActiveVersion, hostActiveVersion);
+ if(callback){
+ callback(data, bmcActiveVersion, hostActiveVersion);
+ }else{
+ return(data, bmcActiveVersion, hostActiveVersion);
+ }
}).error(function(error){
console.log(error);
});
@@ -584,6 +596,48 @@
}
});
},
+ getBMCEthernetInfo: function(callback){
+ $http({
+ method: 'GET',
+ url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc/ethernet",
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json'
+ },
+ withCredentials: true
+ }).success(function(response){
+ var json = JSON.stringify(response);
+ var content = JSON.parse(json);
+ if(callback){
+ callback(content.data);
+ }else{
+ return content.data;
+ }
+ }).error(function(error){
+ console.log(error);
+ });
+ },
+ getBMCInfo: function(callback){
+ $http({
+ method: 'GET',
+ url: SERVICE.API_CREDENTIALS.host + "/xyz/openbmc_project/inventory/system/chassis/motherboard/boxelder/bmc",
+ headers: {
+ 'Accept': 'application/json',
+ 'Content-Type': 'application/json'
+ },
+ withCredentials: true
+ }).success(function(response){
+ var json = JSON.stringify(response);
+ var content = JSON.parse(json);
+ if(callback){
+ callback(content.data);
+ }else{
+ return content.data;
+ }
+ }).error(function(error){
+ console.log(error);
+ });
+ },
};
return SERVICE;
}]);
diff --git a/app/overview/controllers/system-overview-controller.html b/app/overview/controllers/system-overview-controller.html
index 0c314e6..be4601a 100644
--- a/app/overview/controllers/system-overview-controller.html
+++ b/app/overview/controllers/system-overview-controller.html
@@ -17,19 +17,19 @@
<ul class="overview__metadata-wrapper">
<li class="overview__metadata-block">
<p class="content-label">Model</p>
- <p class="courier-bold">5150-A0A</p>
+ <p class="courier-bold">{{bmc_info.Model}}</p>
</li>
<li class="overview__metadata-block">
<p class="content-label">Manufacturer</p>
- <p class="courier-bold">IBM</p>
+ <p class="courier-bold">{{bmc_info.Manufacturer}}</p>
</li>
<li class="overview__metadata-block">
<p class="content-label">Firmware version</p>
- <p class="courier-bold">2.3.104497</p>
+ <p class="courier-bold">{{server_firmware}}</p>
</li>
<li class="overview__metadata-block">
<p class="content-label">Serial number</p>
- <p class="courier-bold">123456abcd</p>
+ <p class="courier-bold">{{bmc_info.SerialNumber}}</p>
</li>
</ul>
</div>
@@ -43,7 +43,7 @@
<ul class="overview__metadata-wrapper">
<li class="overview__metadata-block">
<p class="content-label">BMC IP address</p>
- <p class="courier-bold">9.3.111.222</p>
+ <p class="courier-bold">{{dataService.server_id}}</p>
</li>
<li class="overview__metadata-block">
<p class="content-label">Hostname</p>
@@ -51,11 +51,11 @@
</li>
<li class="overview__metadata-block">
<p class="content-label">Mac address</p>
- <p class="courier-bold"></p>
+ <p class="courier-bold">{{mac_address}}</p>
</li>
<li class="overview__metadata-block">
<p class="content-label">Firmware</p>
- <p class="courier-bold">4.3.104497</p>
+ <p class="courier-bold">{{bmc_firmware}}</p>
</li>
</ul>
@@ -81,7 +81,7 @@
</div>
<!-- Power metadata -->
- <div class="row column overview__event-log event-log__events" >
+ <div class="row column overview__event-log event-log__events" ng-show="logs.length">
<h3 class="bold h4">High priority events</h3>
<!-- TODO: I built event log section so that you could easily just pull in our existing event log template. All display tweaks (such as hiding checkbox) are done via SCSS -->
@@ -90,7 +90,7 @@
<!-- <p class="disabled">No high priority events</p> -->
<!-- single event -->
- <a href="#/server-health/event-log"> <!-- this should go to specific event in event log page -->
+ <a href="#/server-health/event-log" ng-repeat="event in logs|orderBy:'+Id'"> <!-- this should go to specific event in event log page -->
<div class="row column event-log__single-event">
<div class="row">
<div class="column small-1 large-1 event-log__col-check">
@@ -101,12 +101,12 @@
</label>
</div>
<div class="column small-9 large-10 event-log__event-info" ng-click=""><!-- click will go to specific event in event log page-->
- <p class="inline event__id">#00995</p>
+ <p class="inline event__id">#{{event.Id}}</p>
<p class="inline event__priority high-priority">High</p>
- <p class="inline event__severity">emergency</p>
- <p class="inline event__timestamp">03/09/2017 21:00:26 EDT</p>
+ <p class="inline event__severity">{{event.severity_code}}</p>
+ <p class="inline event__timestamp">{{event.Timestamp| date:'MM/dd/yyyy HH:mm:ss '+tmz: tmz}}</p>
<div>
- <p class="inline event__description">Vestibulum ac diam sit amet quam vehicula aliquet quam id dui</p>
+ <p class="inline event__description">{{event.Severity}}</p>
</div>
</div>
<div class="column small-1 large-1">
@@ -115,38 +115,12 @@
</div>
</div>
</a>
- <!-- single event -->
- <a href="#/server-health/event-log"><!-- this should go to specific event in event log page -->
- <div class="row column event-log__single-event">
- <div class="row">
- <div class="column small-1 large-1 event-log__col-check">
- <label class="control-check">
- <input type="checkbox" name="events__check" ng-click="event.selected= ! event.selected"
- ng-checked="event.selected"/>
- <span class="control__indicator"></span>
- </label>
- </div>
- <div class="column small-9 large-10 event-log__event-info" ng-click=""><!-- click will go to specific event in event log page-->
- <p class="inline event__id">#00991</p>
- <p class="inline event__priority high-priority">High</p>
- <p class="inline event__severity">emergency</p>
- <p class="inline event__timestamp">02/09/2017 21:00:26 EDT</p>
- <div>
- <p class="inline event__description">Vestibulum ac diam sit amet quam vehicula aliquet quam id dui Praesent sapien massa, convallis a pellentesque nec, egestas non nisi.</p>
- </div>
- </div>
- <div class="column small-1 large-1">
- <button class="accord-trigger"></button>
- </div>
- </div>
- </div>
- </a>
</div>
</div>
<div class="column large-4">
<div class="quick-links" >
- <a href="" class="quick-links__item quick-links__events event-log__events" >
- <span class="event__priority high-priority">High</span><p class="inline quick-links__event-copy">3 High priority events</p><!-- link to event log filtered to the high priority events -->
+ <a href="#/server-health/event-log" class="quick-links__item quick-links__events event-log__events" ng-show="logs.length">
+ <span class="event__priority high-priority">High</span><p class="inline quick-links__event-copy">{{logs.length}} High priority events</p><!-- link to event log filtered to the high priority events -->
</a>
<div class="quick-links__item no-icon">
<p class="inline quick-links__label">BMC time</p>
@@ -165,11 +139,11 @@
<label for="toggle__switch-round" tabindex="0">Server indicator is <span class="uid-switch__status">{{dataService.LED_state}}</span></label>
</div>
</div>
- <a href="" class="no-icon quick-links__item">
+ <a href="#/server-control/remote-console" class="no-icon quick-links__item">
<p class="inline quick-links__label">Launch Serial Over Lan</p>
<span class="btn-pop-out inline float-right"></span>
</a>
- <a href="" class="quick-links__item">
+ <a href="#/configuration/network" class="quick-links__item">
<p class="inline quick-links__label">Edit network settings</p>
</a>
</div>
diff --git a/app/overview/controllers/system-overview-controller.js b/app/overview/controllers/system-overview-controller.js
index 4992b1e..5468d6f 100644
--- a/app/overview/controllers/system-overview-controller.js
+++ b/app/overview/controllers/system-overview-controller.js
@@ -17,10 +17,69 @@
'$window',
'APIUtils',
'dataService',
- function($scope, $window, APIUtils, dataService, userModel){
+ function($scope, $window, APIUtils, dataService){
$scope.dataService = dataService;
-
$scope.dropdown_selected = false;
+ $scope.tmz = 'EDT';
+ $scope.logs = [];
+ $scope.mac_address = "";
+ $scope.bmc_info = {};
+ $scope.bmc_firmware = "";
+ $scope.server_firmware = "";
+
+ loadOverviewData();
+ function loadOverviewData(){
+ APIUtils.getLogs(function(data){
+ $scope.displayLogs(data);
+ });
+ APIUtils.getFirmwares(function(data, bmcActiveVersion, hostActiveVersion){
+ $scope.displayServerInfo(data, bmcActiveVersion, hostActiveVersion);
+ });
+ APIUtils.getLEDState(function(state){
+ $scope.displayLEDState(state);
+ });
+ APIUtils.getBMCEthernetInfo(function(data){
+ $scope.displayBMCEthernetInfo(data);
+ });
+ APIUtils.getBMCInfo(function(data){
+ $scope.displayBMCInfo(data);
+ });
+ }
+ $scope.displayBMCEthernetInfo = function(data){
+ $scope.mac_address = data.MACAddress;
+ }
+
+ $scope.displayBMCInfo = function(data){
+ $scope.bmc_info = data;
+ }
+
+ $scope.displayLogs = function(data){
+ $scope.logs = data.filter(function(log){
+ return log.severity_flags.high == true;
+ });
+ }
+
+ $scope.displayServerInfo = function(data, bmcActiveVersion, hostActiveVersion){
+ $scope.bmc_firmware = bmcActiveVersion;
+ $scope.server_firmware = hostActiveVersion;
+ }
+
+ $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;
+ }
+ }
+
+ $scope.toggleLED = function(){
+ var toggleState = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
+ APIUtils.LED_STATE.off : APIUtils.LED_STATE.on;
+ dataService.LED_state = (dataService.LED_state == APIUtils.LED_STATE_TEXT.on) ?
+ APIUtils.LED_STATE_TEXT.off : APIUtils.LED_STATE_TEXT.on;
+ APIUtils.setLEDState(toggleState, function(status){
+ });
+ }
}
]
);