Change navigation structure
Change-Id: I12c819293ce1eda188dc9f257ae9370f1b73cb18
Signed-off-by: Iftekharul Islam <iislam@us.ibm.com>
diff --git a/app/server-control/controllers/bmc-reboot-controller.html b/app/server-control/controllers/bmc-reboot-controller.html
new file mode 100644
index 0000000..50fca7f
--- /dev/null
+++ b/app/server-control/controllers/bmc-reboot-controller.html
@@ -0,0 +1,27 @@
+<div id="bmc-reboot">
+ <div class="row column">
+ <h1>Reboot BMC</h1>
+ </div>
+
+ <div class="row column btm-border-grey">
+ <span class="bmc-reboot__status-log inline">BMC last reboot at {{dataService.last_updated |date:'h:mm:ss on MM/dd/yyyy'}}</span>
+ </div>
+
+ <div class="row column btm-border-grey bmc-reboot-option"
+ ng-class="{disabled: dataService.server_unreachable || dataService.loading, transitionAll: confirm}">
+ <ul>
+ <li>Rebooting the BMC causes your browser to lose contact with the BMC for several minutes.</li>
+ <li>When the BMC software has started, you can then log in again.</li>
+ <li>If the Log In button is not enabled after several minutes, you may need to point your browser to the
+ BMC’s address and log in again.
+ </li>
+ </ul>
+ <button id="bmc__reboot" class="btn-secondary" ng-click="rebootConfirm()" ng-disabled="dataService.server_unreachable"><i>↻</i> Reboot BMC
+ </button>
+ <confirm title="Reboot the BMC"
+ message="Rebooting the BMC causes your browser to lose contact with the BMC for several minutes."
+ confirm="confirm"
+ ng-show="confirm"
+ callback="reboot"></confirm>
+ </div>
+</div>
diff --git a/app/server-control/controllers/bmc-reboot-controller.js b/app/server-control/controllers/bmc-reboot-controller.js
new file mode 100644
index 0000000..a28c6ad
--- /dev/null
+++ b/app/server-control/controllers/bmc-reboot-controller.js
@@ -0,0 +1,40 @@
+/**
+ * Controller for bmc-reboot
+ *
+ * @module app/serverControl
+ * @exports bmcRebootController
+ * @name bmcRebootController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+ 'use strict';
+
+ angular
+ .module('app.serverControl')
+ .controller('bmcRebootController', [
+ '$scope',
+ '$window',
+ 'APIUtils',
+ 'dataService',
+ function($scope, $window, APIUtils, dataService){
+ $scope.dataService = dataService;
+ $scope.confirm = false;
+ $scope.rebootConfirm = function(){
+ if($scope.confirm) {
+ return;
+ }
+ $scope.confirm = true;
+ };
+ $scope.reboot = function(){
+ dataService.setBootingState();
+ APIUtils.bmcReboot(function(response){
+ //@NOTE: using common event to reload server status, may be a better event listener name?
+ $scope.$emit('user-logged-in',{});
+ });
+ };
+ }
+ ]
+ );
+
+})(angular);
diff --git a/app/server-control/controllers/power-operations-controller.html b/app/server-control/controllers/power-operations-controller.html
new file mode 100644
index 0000000..79aa861
--- /dev/null
+++ b/app/server-control/controllers/power-operations-controller.html
@@ -0,0 +1,55 @@
+<div id="power-operations">
+
+ <div class="row column">
+ <h1>Server power operation</h1>
+ </div>
+
+ <!-- Current status and bar display the state of the server. Class 'power__state-off' is applied to bar and 'power__state' text switches to say "off"-->
+ <div class="row column">
+ <div class="power__current-status ">
+ <h2 class="inline h4">Current status</h2>
+ <span class="power__status-log inline float-right">Server last reset at {{dataService.last_updated |date:'h:mm:ss on MM/dd/yyyy'}}</span>
+ </div>
+ </div>
+ <div class="row column">
+ <div id="power-indicator-bar" class="power__indicator-bar" ng-class="{'power__state-on': dataService.server_state == 'Running', 'power__state-off': dataService.server_state == 'Off', 'power__state-indet': dataService.server_state == 'Quiesced'}">
+ <p class="inline">{{dataService.server_id}}</p>
+ <h3 class="power__state inline float-right h3"><span>{{dataService.server_state}}</span></h3>
+ </div>
+ </div>
+ <div class="row column">
+ <div class="row column">
+ <h3 class="h4">Select a power operation</h3>
+ </div>
+
+ <!-- Power on displays only when server is shutdown -->
+ <div class="row column power-option" ng-hide="dataService.server_state == 'Running' || dataService.server_state == 'Quiesced'" ng-class="{disabled: dataService.server_unreachable || (confirm && !power_confirm) || dataService.loading, transitionAll: confirm && power_confirm}">
+ <button id="power__power-on" class="btn-secondary" ng-click="togglePower()" role="button" ng-disabled="dataService.server_unreachable"><img src="assets/images/icon-power.svg">Power On</button>
+ <p>Attempts to power on the server</p>
+
+ <!---<confirm title="power off" message="Power off the server" confirm="power_confirm" ng-show="power_confirm" callback="togglePower"></confirm>-->
+ </div>
+
+ <!-- Power reboot/shutdown options : when server is off all of these are hidden. When one option is selected, the others are disabled. -->
+ <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: dataService.server_unreachable || (confirm && !warmboot_confirm) || dataService.loading, transitionAll: confirm && warmboot_confirm}">
+ <button id="power__warm-boot" class="btn-secondary" ng-click="warmRebootConfirm()" role="button" ng-disabled="dataService.server_unreachable"><i>↻</i> Warm reboot</button>
+ <p>Attempts to perform an orderly shutdown before restarting the server</p>
+ <confirm title="Warm Reboot" message="perform an orderly shutdown" confirm="warmboot_confirm" ng-show="warmboot_confirm" callback="warmReboot"></confirm>
+ </div>
+ <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: dataService.server_unreachable || (confirm && !coldboot_confirm) || dataService.loading, transitionAll: confirm && coldboot_confirm}">
+ <button id="power__cold-boot" class="btn-secondary" ng-click="coldRebootConfirm()" role="button" ng-disabled="dataService.server_unreachable"><i>↻</i> Cold reboot</button>
+ <p>Shuts down the server immediately, then restarts it</p>
+ <confirm title="Cold Reboot" message="Shutdown server immediately." confirm="coldboot_confirm" ng-show="coldboot_confirm" cancel="coldbootCancel" callback="coldReboot"></confirm>
+ </div>
+ <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: dataService.server_unreachable || (confirm && !orderly_confirm) || dataService.loading, transitionAll: confirm && orderly_confirm}">
+ <button id="power__soft-shutdown" class="btn-secondary" ng-click="orderlyShutdownConfirm()" role="button" ng-disabled="dataService.server_unreachable"><img src="assets/images/icon-power.svg" />Orderly shutdown</button>
+ <p>Attempts to stop all software on the server before removing power</p>
+ <confirm title="Orderly shutdown" message="Attempts to stop all software orderly." confirm="orderly_confirm" ng-show="orderly_confirm" cancel="orderlyShutdownCancel" callback="orderlyShutdown"></confirm>
+ </div>
+ <div class="row column power-option" ng-hide="dataService.server_state == 'Off'" ng-class="{disabled: dataService.server_unreachable || (confirm && !immediately_confirm) || dataService.loading, transitionAll: confirm && immediately_confirm}">
+ <button id="power__hard-shutdown" class="btn-secondary" ng-click="immediateShutdownConfirm()" role="button" ng-disabled="dataService.server_unreachable"><img src="assets/images/icon-power.svg" />Immediate shutdown</button>
+ <p>Removes power from the server without waiting for software to stop</p>
+ <confirm title="Immediate shutdown" message="Removes power from the server immediately." confirm="immediately_confirm" ng-show="immediately_confirm" cancel="immediatelyShutdownCancel" callback="immediateShutdown"></confirm>
+ </div>
+ </div>
+</div>
\ No newline at end of file
diff --git a/app/server-control/controllers/power-operations-controller.js b/app/server-control/controllers/power-operations-controller.js
new file mode 100644
index 0000000..4e66f56
--- /dev/null
+++ b/app/server-control/controllers/power-operations-controller.js
@@ -0,0 +1,134 @@
+/**
+ * Controller for power-operations
+ *
+ * @module app/serverControl
+ * @exports powerOperationsController
+ * @name powerOperationsController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+ 'use strict';
+
+ angular
+ .module('app.serverControl')
+ .controller('powerOperationsController', [
+ '$scope',
+ 'APIUtils',
+ 'dataService',
+ '$timeout',
+ function($scope, APIUtils, dataService, $timeout){
+ $scope.dataService = dataService;
+ $scope.confirm = false;
+ $scope.power_confirm = false;
+ $scope.warmboot_confirm = false;
+ $scope.coldboot_confirm = false;
+ $scope.orderly_confirm = false;
+ $scope.immediately_confirm = false;
+
+ //@TODO: call api and get proper state
+ $scope.toggleState = function(){
+ dataService.server_state = (dataService.server_state == 'Running') ? 'Off': 'Running';
+ }
+
+ $scope.togglePower = function(){
+ var method = (dataService.server_state == 'Running') ? 'hostPowerOff' : 'hostPowerOn';
+ //@TODO: show progress or set class orange
+ APIUtils[method](function(response){
+ //update state based on response
+ //error case?
+ if(response == null){
+ console.log("Failed request.");
+ }else{
+ //@TODO::need to get the server status
+ if(dataService.server_state == 'Running'){
+ dataService.setPowerOffState();
+ }else{
+ dataService.setPowerOnState();
+ }
+ }
+ });
+ }
+ $scope.powerOnConfirm = function(){
+ if($scope.confirm) {
+ return;
+ }
+ $scope.confirm = true;
+ $scope.power_confirm = true;
+ };
+ $scope.warmReboot = function(){
+ //@TODO:show progress
+ dataService.setBootingState();
+ APIUtils.hostPowerOff(function(response){
+ if(response){
+ APIUtils.hostPowerOn(function(response){
+ if(response){
+ dataService.setPowerOnState();
+ }else{
+ //@TODO:show error message
+ }
+ });
+ }else{
+ }
+ });
+ };
+ $scope.testState = function(){
+ $timeout(function(){
+ dataService.setPowerOffState();
+ $timeout(function(){
+ dataService.setPowerOnState();
+ }, 2000);
+ }, 1000);
+ };
+ $scope.warmRebootConfirm = function(){
+ if($scope.confirm) {
+ return;
+ }
+ $scope.confirm = true;
+ $scope.warmboot_confirm = true;
+ };
+
+ $scope.coldReboot = function(){
+ $scope.warmReboot();
+ };
+ $scope.coldRebootConfirm = function(){
+ if($scope.confirm) {
+ return;
+ }
+ $scope.confirm = true;
+ $scope.coldboot_confirm = true;
+ };
+
+ $scope.orderlyShutdown = function(){
+ //@TODO:show progress
+ APIUtils.hostPowerOff(function(response){
+ if(response){
+ dataService.setPowerOffState();
+ }else{
+ //@TODO:hide progress & show error message
+ }
+ });
+ };
+ $scope.orderlyShutdownConfirm = function(){
+ if($scope.confirm) {
+ return;
+ }
+ $scope.confirm = true;
+ $scope.orderly_confirm = true;
+ };
+
+ $scope.immediateShutdown = function(){
+ $scope.orderlyShutdown();
+ };
+ $scope.immediateShutdownConfirm = function(){
+ if($scope.confirm) {
+ return;
+ }
+ $scope.confirm = true;
+ $scope.immediately_confirm = true;
+ };
+ }
+ ]
+ );
+
+})(angular);
diff --git a/app/server-control/controllers/remote-console-controller.html b/app/server-control/controllers/remote-console-controller.html
new file mode 100644
index 0000000..5b456d4
--- /dev/null
+++ b/app/server-control/controllers/remote-console-controller.html
@@ -0,0 +1,5 @@
+<div id="server-control-remote-console">
+ <div class="row column">
+ <h1>Remote Console</h1>
+ </div>
+</div>
\ No newline at end of file
diff --git a/app/server-control/controllers/remote-console-controller.js b/app/server-control/controllers/remote-console-controller.js
new file mode 100644
index 0000000..2f3376e
--- /dev/null
+++ b/app/server-control/controllers/remote-console-controller.js
@@ -0,0 +1,26 @@
+/**
+ * Controller for server
+ *
+ * @module app/serverControl
+ * @exports remoteConsoleController
+ * @name remoteConsoleController
+ * @version 0.1.0
+ */
+
+window.angular && (function (angular) {
+ 'use strict';
+
+ angular
+ .module('app.serverControl')
+ .controller('remoteConsoleController', [
+ '$scope',
+ '$window',
+ 'APIUtils',
+ 'dataService',
+ function($scope, $window, APIUtils, dataService){
+ $scope.dataService = dataService;
+ }
+ ]
+ );
+
+})(angular);