Fix repair
Call appropriate routes based on the error state
This commit is contained in:
@@ -828,7 +828,9 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
|
||||
|
||||
var app = $scope.app;
|
||||
|
||||
if (app.error && app.error.domain) {
|
||||
var errorState = ($scope.app.error && $scope.app.error.installationState) || ISTATES.PENDING_CONFIGURE;
|
||||
|
||||
if (errorState === ISTATES.PENDING_LOCATION_CHANGE) {
|
||||
$scope.repair.location = app.location;
|
||||
$scope.repair.domain = $scope.domains.filter(function (d) { return d.domain === app.domain; })[0];
|
||||
$scope.repair.alternateDomains = $scope.app.alternateDomains;
|
||||
@@ -841,7 +843,7 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
|
||||
});
|
||||
}
|
||||
|
||||
if (app.error && app.error.backupId) {
|
||||
if (errorState === ISTATES.PENDING_RESTORE) {
|
||||
Client.getAppBackups($scope.app.id, function (error, backups) {
|
||||
if (error) return Client.error(error);
|
||||
|
||||
@@ -860,20 +862,52 @@ angular.module('Application').controller('AppController', ['$scope', '$location'
|
||||
$scope.repair.error = {};
|
||||
$scope.repair.busy = true;
|
||||
|
||||
var errorState = ($scope.app.error && $scope.app.error.installationState) || ISTATES.PENDING_CONFIGURE;
|
||||
var data = {};
|
||||
if ($scope.app.error && $scope.app.error.domain) {
|
||||
var repairFunc;
|
||||
|
||||
switch (errorState) {
|
||||
case ISTATES.PENDING_INSTALL:
|
||||
case ISTATES.PENDING_CLONE: // if manifest or bad image, use CLI to provide new manifest
|
||||
repairFunc = Client.repairApp.bind(null, $scope.app.id, {}); // this will trigger a re-install
|
||||
break;
|
||||
|
||||
case ISTATES.PENDING_LOCATION_CHANGE:
|
||||
data.location = $scope.repair.location;
|
||||
data.domain = $scope.repair.domain.domain;
|
||||
data.alternateDomains = $scope.repair.alternateDomains.filter(function (a) { return a.enabled; })
|
||||
.map(function (d) { return { subdomain: d.subdomain, domain: d.domain.domain }; });
|
||||
data.overwriteDns = true; // always overwriteDns. user can anyway check and uncheck above
|
||||
repairFunc = Client.configureApp.bind(null, $scope.app.id, 'location', data);
|
||||
break;
|
||||
|
||||
case ISTATES.PENDING_DATA_DIR_MIGRATION:
|
||||
repairFunc = Client.configureApp.bind(null, $scope.app.id, 'data_dir', { dataDir: null });
|
||||
break;
|
||||
|
||||
// this also happens for import faliures. this UI can only show backup listing. use CLI for arbit id/config
|
||||
case ISTATES.PENDING_RESTORE:
|
||||
repairFunc = Client.restoreApp.bind(null, $scope.app.id, $scope.repair.backupId);
|
||||
break;
|
||||
|
||||
case ISTATES.PENDING_UNINSTALL:
|
||||
repairFunc = Client.uninstallApp.bind(null, $scope.app.id);
|
||||
break;
|
||||
|
||||
case ISTATES.PENDING_START:
|
||||
case ISTATES.PENDING_STOP:
|
||||
case ISTATES.PENDING_RESIZE:
|
||||
case ISTATES.PENDING_DEBUG:
|
||||
case ISTATES.PENDING_RECREATE_CONTAINER:
|
||||
case ISTATES.PENDING_CONFIGURE:
|
||||
case ISTATES.PENDING_BACKUP: // only here for completeness, should never happen as this only set task error and not app erro
|
||||
case ISTATES.PENDING_UPDATE: // when update failed, just bring it back to current state and user can click update again
|
||||
default:
|
||||
repairFunc = Client.repairApp.bind(null, $scope.app.id, {});
|
||||
break;
|
||||
}
|
||||
|
||||
if ($scope.app.error && $scope.app.error.backupId) {
|
||||
data.backupId = $scope.repair.backupId;
|
||||
}
|
||||
|
||||
Client.repairApp($scope.app.id, data, function (error) {
|
||||
repairFunc(function (error) {
|
||||
if (error) return Client.error(error);
|
||||
|
||||
$scope.repair.busy = false;
|
||||
|
||||
Reference in New Issue
Block a user