1cd789508SIftekharul Islam/** 2cd789508SIftekharul Islam * Controller for power-operations 3cd789508SIftekharul Islam * 4cd789508SIftekharul Islam * @module app/serverControl 5cd789508SIftekharul Islam * @exports powerOperationsController 6cd789508SIftekharul Islam * @name powerOperationsController 7cd789508SIftekharul Islam * @version 0.1.0 8cd789508SIftekharul Islam */ 9cd789508SIftekharul Islam 10cd789508SIftekharul Islamwindow.angular && (function (angular) { 11cd789508SIftekharul Islam 'use strict'; 12cd789508SIftekharul Islam 13cd789508SIftekharul Islam angular 14cd789508SIftekharul Islam .module('app.serverControl') 15cd789508SIftekharul Islam .controller('powerOperationsController', [ 16cd789508SIftekharul Islam '$scope', 17cd789508SIftekharul Islam 'APIUtils', 18cd789508SIftekharul Islam 'dataService', 19cd789508SIftekharul Islam '$timeout', 20cd789508SIftekharul Islam function($scope, APIUtils, dataService, $timeout){ 21cd789508SIftekharul Islam $scope.dataService = dataService; 22cd789508SIftekharul Islam $scope.confirm = false; 23cd789508SIftekharul Islam $scope.power_confirm = false; 24cd789508SIftekharul Islam $scope.warmboot_confirm = false; 25cd789508SIftekharul Islam $scope.coldboot_confirm = false; 26cd789508SIftekharul Islam $scope.orderly_confirm = false; 27cd789508SIftekharul Islam $scope.immediately_confirm = false; 28cd789508SIftekharul Islam 29cd789508SIftekharul Islam //@TODO: call api and get proper state 30cd789508SIftekharul Islam $scope.toggleState = function(){ 31cd789508SIftekharul Islam dataService.server_state = (dataService.server_state == 'Running') ? 'Off': 'Running'; 32cd789508SIftekharul Islam } 33cd789508SIftekharul Islam 34cd789508SIftekharul Islam $scope.togglePower = function(){ 35cd789508SIftekharul Islam var method = (dataService.server_state == 'Running') ? 'hostPowerOff' : 'hostPowerOn'; 36cd789508SIftekharul Islam //@TODO: show progress or set class orange 37cd789508SIftekharul Islam APIUtils[method](function(response){ 38cd789508SIftekharul Islam //update state based on response 39cd789508SIftekharul Islam //error case? 40cd789508SIftekharul Islam if(response == null){ 41cd789508SIftekharul Islam console.log("Failed request."); 42cd789508SIftekharul Islam }else{ 43cd789508SIftekharul Islam //@TODO::need to get the server status 44cd789508SIftekharul Islam if(dataService.server_state == 'Running'){ 45cd789508SIftekharul Islam dataService.setPowerOffState(); 46cd789508SIftekharul Islam }else{ 47cd789508SIftekharul Islam dataService.setPowerOnState(); 48cd789508SIftekharul Islam } 49cd789508SIftekharul Islam } 50cd789508SIftekharul Islam }); 51cd789508SIftekharul Islam } 52cd789508SIftekharul Islam $scope.powerOnConfirm = function(){ 53cd789508SIftekharul Islam if($scope.confirm) { 54cd789508SIftekharul Islam return; 55cd789508SIftekharul Islam } 56cd789508SIftekharul Islam $scope.confirm = true; 57cd789508SIftekharul Islam $scope.power_confirm = true; 58cd789508SIftekharul Islam }; 59cd789508SIftekharul Islam $scope.warmReboot = function(){ 60cd789508SIftekharul Islam //@TODO:show progress 61cd789508SIftekharul Islam dataService.setBootingState(); 62cd789508SIftekharul Islam APIUtils.hostPowerOff(function(response){ 63cd789508SIftekharul Islam if(response){ 64cd789508SIftekharul Islam APIUtils.hostPowerOn(function(response){ 65cd789508SIftekharul Islam if(response){ 66cd789508SIftekharul Islam dataService.setPowerOnState(); 67cd789508SIftekharul Islam }else{ 68cd789508SIftekharul Islam //@TODO:show error message 69cd789508SIftekharul Islam } 70cd789508SIftekharul Islam }); 71cd789508SIftekharul Islam } 72cd789508SIftekharul Islam }); 73cd789508SIftekharul Islam }; 74cd789508SIftekharul Islam $scope.testState = function(){ 75cd789508SIftekharul Islam $timeout(function(){ 76cd789508SIftekharul Islam dataService.setPowerOffState(); 77cd789508SIftekharul Islam $timeout(function(){ 78cd789508SIftekharul Islam dataService.setPowerOnState(); 79cd789508SIftekharul Islam }, 2000); 80cd789508SIftekharul Islam }, 1000); 81cd789508SIftekharul Islam }; 82cd789508SIftekharul Islam $scope.warmRebootConfirm = function(){ 83cd789508SIftekharul Islam if($scope.confirm) { 84cd789508SIftekharul Islam return; 85cd789508SIftekharul Islam } 86cd789508SIftekharul Islam $scope.confirm = true; 87cd789508SIftekharul Islam $scope.warmboot_confirm = true; 88cd789508SIftekharul Islam }; 89cd789508SIftekharul Islam 90cd789508SIftekharul Islam $scope.coldReboot = function(){ 91cd789508SIftekharul Islam $scope.warmReboot(); 92cd789508SIftekharul Islam }; 93cd789508SIftekharul Islam $scope.coldRebootConfirm = function(){ 94cd789508SIftekharul Islam if($scope.confirm) { 95cd789508SIftekharul Islam return; 96cd789508SIftekharul Islam } 97cd789508SIftekharul Islam $scope.confirm = true; 98cd789508SIftekharul Islam $scope.coldboot_confirm = true; 99cd789508SIftekharul Islam }; 100cd789508SIftekharul Islam 101cd789508SIftekharul Islam $scope.orderlyShutdown = function(){ 102cd789508SIftekharul Islam //@TODO:show progress 103cd789508SIftekharul Islam APIUtils.hostPowerOff(function(response){ 104cd789508SIftekharul Islam if(response){ 105cd789508SIftekharul Islam dataService.setPowerOffState(); 106cd789508SIftekharul Islam }else{ 107cd789508SIftekharul Islam //@TODO:hide progress & show error message 108cd789508SIftekharul Islam } 109cd789508SIftekharul Islam }); 110cd789508SIftekharul Islam }; 111cd789508SIftekharul Islam $scope.orderlyShutdownConfirm = function(){ 112cd789508SIftekharul Islam if($scope.confirm) { 113cd789508SIftekharul Islam return; 114cd789508SIftekharul Islam } 115cd789508SIftekharul Islam $scope.confirm = true; 116cd789508SIftekharul Islam $scope.orderly_confirm = true; 117cd789508SIftekharul Islam }; 118cd789508SIftekharul Islam 119cd789508SIftekharul Islam $scope.immediateShutdown = function(){ 120*3aa8b535SGunnar Mills //@TODO:show progress 121*3aa8b535SGunnar Mills APIUtils.chassisPowerOff(function(response){ 122*3aa8b535SGunnar Mills if(response){ 123*3aa8b535SGunnar Mills dataService.setPowerOffState(); 124*3aa8b535SGunnar Mills }else{ 125*3aa8b535SGunnar Mills //@TODO:hide progress & show error message 126*3aa8b535SGunnar Mills } 127*3aa8b535SGunnar Mills }); 128cd789508SIftekharul Islam }; 129cd789508SIftekharul Islam $scope.immediateShutdownConfirm = function(){ 130cd789508SIftekharul Islam if($scope.confirm) { 131cd789508SIftekharul Islam return; 132cd789508SIftekharul Islam } 133cd789508SIftekharul Islam $scope.confirm = true; 134cd789508SIftekharul Islam $scope.immediately_confirm = true; 135cd789508SIftekharul Islam }; 136cd789508SIftekharul Islam } 137cd789508SIftekharul Islam ] 138cd789508SIftekharul Islam ); 139cd789508SIftekharul Islam 140cd789508SIftekharul Islam})(angular); 141