mirror of https://github.com/portainer/portainer
98 lines
3.6 KiB
JavaScript
98 lines
3.6 KiB
JavaScript
angular.module('service', [])
|
|
.controller('ServiceController', ['$scope', '$stateParams', '$state', 'Service', 'ServiceHelper', 'Task', 'Node', 'Messages',
|
|
function ($scope, $stateParams, $state, Service, ServiceHelper, Task, Node, Messages) {
|
|
|
|
$scope.service = {};
|
|
$scope.tasks = [];
|
|
$scope.displayNode = false;
|
|
$scope.sortType = 'Status';
|
|
$scope.sortReverse = false;
|
|
|
|
$scope.order = function (sortType) {
|
|
$scope.sortReverse = ($scope.sortType === sortType) ? !$scope.sortReverse : false;
|
|
$scope.sortType = sortType;
|
|
};
|
|
|
|
$scope.renameService = function renameService(service) {
|
|
$('#loadServicesSpinner').show();
|
|
var serviceName = service.Name;
|
|
var config = ServiceHelper.serviceToConfig(service.Model);
|
|
config.Name = service.newServiceName;
|
|
Service.update({ id: service.Id, version: service.Version }, config, function (data) {
|
|
$('#loadServicesSpinner').hide();
|
|
Messages.send("Service successfully renamed", "New name: " + service.newServiceName);
|
|
$state.go('service', {id: service.Id}, {reload: true});
|
|
}, function (e) {
|
|
$('#loadServicesSpinner').hide();
|
|
service.EditName = false;
|
|
service.Name = serviceName;
|
|
Messages.error("Failure", e, "Unable to rename service");
|
|
});
|
|
};
|
|
|
|
$scope.scaleService = function scaleService(service) {
|
|
$('#loadServicesSpinner').show();
|
|
var config = ServiceHelper.serviceToConfig(service.Model);
|
|
config.Mode.Replicated.Replicas = service.Replicas;
|
|
Service.update({ id: service.Id, version: service.Version }, config, function (data) {
|
|
$('#loadServicesSpinner').hide();
|
|
Messages.send("Service successfully scaled", "New replica count: " + service.Replicas);
|
|
$state.go('service', {id: service.Id}, {reload: true});
|
|
}, function (e) {
|
|
$('#loadServicesSpinner').hide();
|
|
service.Scale = false;
|
|
service.Replicas = service.ReplicaCount;
|
|
Messages.error("Failure", e, "Unable to scale service");
|
|
});
|
|
};
|
|
|
|
$scope.removeService = function removeService() {
|
|
$('#loadingViewSpinner').show();
|
|
Service.remove({id: $stateParams.id}, function (d) {
|
|
if (d.message) {
|
|
$('#loadingViewSpinner').hide();
|
|
Messages.send("Error", {}, d.message);
|
|
} else {
|
|
$('#loadingViewSpinner').hide();
|
|
Messages.send("Service removed", $stateParams.id);
|
|
$state.go('services', {});
|
|
}
|
|
}, function (e) {
|
|
$('#loadingViewSpinner').hide();
|
|
Messages.error("Failure", e, "Unable to remove service");
|
|
});
|
|
};
|
|
|
|
function fetchServiceDetails() {
|
|
$('#loadingViewSpinner').show();
|
|
Service.get({id: $stateParams.id}, function (d) {
|
|
var service = new ServiceViewModel(d);
|
|
service.newServiceName = service.Name;
|
|
$scope.service = service;
|
|
Task.query({filters: {service: [service.Name]}}, function (tasks) {
|
|
Node.query({}, function (nodes) {
|
|
$scope.displayNode = true;
|
|
$scope.tasks = tasks.map(function (task) {
|
|
return new TaskViewModel(task, nodes);
|
|
});
|
|
$('#loadingViewSpinner').hide();
|
|
}, function (e) {
|
|
$('#loadingViewSpinner').hide();
|
|
$scope.tasks = tasks.map(function (task) {
|
|
return new TaskViewModel(task, null);
|
|
});
|
|
Messages.error("Failure", e, "Unable to retrieve node information");
|
|
});
|
|
}, function (e) {
|
|
$('#loadingViewSpinner').hide();
|
|
Messages.error("Failure", e, "Unable to retrieve tasks associated to the service");
|
|
});
|
|
}, function (e) {
|
|
$('#loadingViewSpinner').hide();
|
|
Messages.error("Failure", e, "Unable to retrieve service details");
|
|
});
|
|
}
|
|
|
|
fetchServiceDetails();
|
|
}]);
|