angular.module('container', []) .controller('ContainerController', ['$scope', '$routeParams', '$location', 'Container', 'ContainerCommit', 'Messages', 'ViewSpinner', function($scope, $routeParams, $location, Container, ContainerCommit, Messages, ViewSpinner) { $scope.changes = []; $scope.edit = false; var update = function() { ViewSpinner.spin(); Container.get({id: $routeParams.id}, function(d) { $scope.container = d; $scope.container.edit = false; $scope.container.newContainerName = d.Name; ViewSpinner.stop(); }, function(e) { if (e.status === 404) { $('.detail').hide(); Messages.error("Not found", "Container not found."); } else { Messages.error("Failure", e.data); } ViewSpinner.stop(); }); }; $scope.start = function(){ ViewSpinner.spin(); Container.start({ id: $scope.container.Id, HostConfig: $scope.container.HostConfig }, function(d) { update(); Messages.send("Container started", $routeParams.id); }, function(e) { update(); Messages.error("Failure", "Container failed to start." + e.data); }); }; $scope.stop = function() { ViewSpinner.spin(); Container.stop({id: $routeParams.id}, function(d) { update(); Messages.send("Container stopped", $routeParams.id); }, function(e) { update(); Messages.error("Failure", "Container failed to stop." + e.data); }); }; $scope.kill = function() { ViewSpinner.spin(); Container.kill({id: $routeParams.id}, function(d) { update(); Messages.send("Container killed", $routeParams.id); }, function(e) { update(); Messages.error("Failure", "Container failed to die." + e.data); }); }; $scope.commit = function() { ViewSpinner.spin(); ContainerCommit.commit({id: $routeParams.id, repo: $scope.container.Config.Image}, function(d) { update(); Messages.send("Container commited", $routeParams.id); }, function(e) { update(); Messages.error("Failure", "Container failed to commit." + e.data); }); }; $scope.pause = function() { ViewSpinner.spin(); Container.pause({id: $routeParams.id}, function(d) { update(); Messages.send("Container paused", $routeParams.id); }, function(e) { update(); Messages.error("Failure", "Container failed to pause." + e.data); }); }; $scope.unpause = function() { ViewSpinner.spin(); Container.unpause({id: $routeParams.id}, function(d) { update(); Messages.send("Container unpaused", $routeParams.id); }, function(e) { update(); Messages.error("Failure", "Container failed to unpause." + e.data); }); }; $scope.remove = function() { ViewSpinner.spin(); Container.remove({id: $routeParams.id}, function(d) { update(); Messages.send("Container removed", $routeParams.id); }, function(e){ update(); Messages.error("Failure", "Container failed to remove." + e.data); }); }; $scope.restart = function() { ViewSpinner.spin(); Container.restart({id: $routeParams.id}, function(d) { update(); Messages.send("Container restarted", $routeParams.id); }, function(e){ update(); Messages.error("Failure", "Container failed to restart." + e.data); }); }; $scope.hasContent = function(data) { return data !== null && data !== undefined; }; $scope.getChanges = function() { ViewSpinner.spin(); Container.changes({id: $routeParams.id}, function(d) { $scope.changes = d; ViewSpinner.stop(); }); }; $scope.renameContainer = function () { // #FIXME fix me later to handle http status to show the correct error message Container.rename({id: $routeParams.id, 'name': $scope.container.newContainerName}, function(data){ if (data.name){ $scope.container.Name = data.name; Messages.send("Container renamed", $routeParams.id); }else { $scope.container.newContainerName = $scope.container.Name; Messages.error("Failure", "Container failed to rename."); } }); $scope.container.edit = false; }; update(); $scope.getChanges(); }]);