/** * Helper service for working with the registry's container. Only works in enterprise. */ angular.module('quay-config') .factory('ContainerService', ['ApiService', '$timeout', 'Restangular', function(ApiService, $timeout, Restangular) { var containerService = {}; containerService.restartContainer = function(callback) { ApiService.scShutdownContainer(null, null).then(function(resp) { $timeout(callback, 2000); }, ApiService.errorDisplay('Cannot restart container. Please report this to support.')) }; containerService.scheduleStatusCheck = function(callback, opt_config) { $timeout(function() { containerService.checkStatus(callback, opt_config); }, 2000); }; containerService.checkStatus = function(callback, opt_config) { var errorHandler = function(resp) { if (resp.status == 404 || resp.status == 502 || resp.status == -1) { // Container has not yet come back up, so we schedule another check. containerService.scheduleStatusCheck(callback, opt_config); return; } return ApiService.errorDisplay('Cannot load status. Please report this to support')(resp); }; // If config is specified, override the API base URL from this point onward. // TODO(jschorr): Find a better way than this. This is safe, since this will only be called // for a restart, but it is still ugly. if (opt_config && opt_config['SERVER_HOSTNAME']) { var scheme = opt_config['PREFERRED_URL_SCHEME'] || 'http'; var baseUrl = scheme + '://' + opt_config['SERVER_HOSTNAME'] + '/api/v1/'; Restangular.setBaseUrl(baseUrl); } ApiService.scRegistryStatus(null, null, /* background */true) .then(callback, errorHandler); }; return containerService; }]);