angular.module('extension.storidge') .controller('StoridgeClusterController', ['$q', '$scope', '$state', 'Notifications', 'StoridgeClusterService', 'StoridgeNodeService', 'ModalService', function ($q, $scope, $state, Notifications, StoridgeClusterService, StoridgeNodeService, ModalService) { $scope.state = { shutdownInProgress: false, rebootInProgress: false }; $scope.rebootCluster = function() { ModalService.confirm({ title: 'Are you sure?', message: 'All the nodes in the cluster will reboot during the process. Do you want to reboot the Storidge cluster?', buttons: { confirm: { label: 'Reboot', className: 'btn-danger' } }, callback: function onConfirm(confirmed) { if(!confirmed) { return; } rebootCluster(); } }); }; $scope.shutdownCluster = function() { ModalService.confirm({ title: 'Are you sure?', message: 'All the nodes in the cluster will shutdown. Do you want to shutdown the Storidge cluster?', buttons: { confirm: { label: 'Shutdown', className: 'btn-danger' } }, callback: function onConfirm(confirmed) { if(!confirmed) { return; } shutdownCluster(); } }); }; function shutdownCluster() { $scope.state.shutdownInProgress = true; StoridgeClusterService.shutdown() .finally(function final() { $scope.state.shutdownInProgress = false; Notifications.success('Cluster successfully shutdown'); $state.go('docker.dashboard'); }); } function rebootCluster() { $scope.state.rebootInProgress = true; StoridgeClusterService.reboot() .finally(function final() { $scope.state.rebootInProgress = false; Notifications.success('Cluster successfully rebooted'); $state.reload(); }); } function initView() { $q.all({ info: StoridgeClusterService.info(), version: StoridgeClusterService.version(), nodes: StoridgeNodeService.nodes() }) .then(function success(data) { $scope.clusterInfo = data.info; $scope.clusterVersion = data.version; $scope.clusterNodes = data.nodes; }) .catch(function error(err) { Notifications.error('Failure', err, 'Unable to retrieve cluster information'); }); } initView(); }]);