diff --git a/src/apps.js b/src/apps.js index 446ca7978..f1a1a7f40 100644 --- a/src/apps.js +++ b/src/apps.js @@ -749,6 +749,7 @@ function restore(appId, data, auditSource, callback) { var func = data.backupId ? backups.getRestoreConfig.bind(null, data.backupId) : function (next) { return next(null, { manifest: app.manifest }); }; func(function (error, restoreConfig) { + if (error && error.reason === BackupsError.NOT_FOUND) return callback(new AppsError(AppsError.EXTERNAL_ERROR, error.message)); if (error && error.reason === BackupsError.EXTERNAL_ERROR) return callback(new AppsError(AppsError.EXTERNAL_ERROR, error.message)); if (error) return callback(new AppsError(AppsError.INTERNAL_ERROR, error)); diff --git a/src/backups.js b/src/backups.js index 82882a226..4992eb5c2 100644 --- a/src/backups.js +++ b/src/backups.js @@ -79,6 +79,7 @@ util.inherits(BackupsError, Error); BackupsError.EXTERNAL_ERROR = 'external error'; BackupsError.INTERNAL_ERROR = 'internal error'; BackupsError.BAD_STATE = 'bad state'; +BackupsError.NOT_FOUND = 'not found'; BackupsError.MISSING_CREDENTIALS = 'missing credentials'; // choose which storage backend we use for test purpose we use s3 @@ -125,6 +126,7 @@ function getRestoreConfig(backupId, callback) { if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); api(backupConfig.provider).getAppRestoreConfig(backupConfig, backupId, function (error, result) { + if (error && error.reason === BackupsError.NOT_FOUND) return callback(error); if (error) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error)); callback(null, result); diff --git a/src/storage/filesystem.js b/src/storage/filesystem.js index 7ac8a0621..0ef5fb2be 100644 --- a/src/storage/filesystem.js +++ b/src/storage/filesystem.js @@ -12,6 +12,7 @@ exports = module.exports = { }; var assert = require('assert'), + BackupsError = require('../backups.js').BackupsError, fs = require('fs'), path = require('path'), safe = require('safetydance'); @@ -68,7 +69,7 @@ function getAppRestoreConfig(apiConfig, backupId, callback) { var configFilename = backupId.replace(/\.tar\.gz$/, '.json'); var restoreConfig = safe.require(path.join(backupFolder, configFilename)); - if (!restoreConfig) return callback(new Error('No app backup config found')); + if (!restoreConfig) return callback(new BackupsError(BackupsError.NOT_FOUND, 'No app backup config found for ' + configFilename)); callback(null, restoreConfig); }