diff --git a/src/js/client.js b/src/js/client.js index d23c81c38..369818a9f 100644 --- a/src/js/client.js +++ b/src/js/client.js @@ -1269,6 +1269,15 @@ angular.module('Application').service('Client', ['$http', '$interval', '$timeout }); }; + Client.prototype.rebuildService = function (serviceName, callback) { + post('/api/v1/services/' + serviceName + '/rebuild', {}, null, function (error, data, status) { + if (error) return callback(error); + if (status !== 202) return callback(new ClientError(status, data)); + + callback(null); + }); + }; + Client.prototype.getUsers = function (search, page, perPage, callback) { if (typeof search === 'function') { callback = search; diff --git a/src/views/services.js b/src/views/services.js index 33efd7c58..1b44a4ccf 100644 --- a/src/views/services.js +++ b/src/views/services.js @@ -43,6 +43,16 @@ angular.module('Application').controller('ServicesController', ['$scope', '$loca $scope.services.find(function (s) { return s.name === serviceName; }).status = 'starting'; Client.restartService(serviceName, function (error) { + if (error && error.statusCode === 404) { + Client.rebuildService(serviceName, function (error) { + if (error) return Client.error(error); + + // show "busy" indicator for 3 seconds to show some ui activity + setTimeout(function () { waitForActive(serviceName); }, 3000); + }); + + return; + } if (error) return Client.error(error); // show "busy" indicator for 3 seconds to show some ui activity