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