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