diff --git a/src/backups.js b/src/backups.js index bb9e76e8b..9b7c978d7 100644 --- a/src/backups.js +++ b/src/backups.js @@ -82,6 +82,7 @@ util.inherits(BackupsError, Error); BackupsError.EXTERNAL_ERROR = 'external error'; BackupsError.INTERNAL_ERROR = 'internal error'; BackupsError.BAD_STATE = 'bad state'; +BackupsError.BAD_FIELD = 'bad field'; BackupsError.NOT_FOUND = 'not found'; BackupsError.MISSING_CREDENTIALS = 'missing credentials'; diff --git a/src/settings.js b/src/settings.js index 4139bcf8d..70a37c9f4 100644 --- a/src/settings.js +++ b/src/settings.js @@ -65,6 +65,7 @@ exports = module.exports = { var assert = require('assert'), async = require('async'), backups = require('./backups.js'), + BackupsError = backups.BackupsError, config = require('./config.js'), constants = require('./constants.js'), CronJob = require('cron').CronJob, @@ -588,7 +589,9 @@ function setBackupConfig(backupConfig, callback) { assert.strictEqual(typeof callback, 'function'); backups.testConfig(backupConfig, function (error) { - if (error) return callback(error); + if (error && error.reason === BackupsError.BAD_FIELD) return callback(new SettingsError(SettingsError.BAD_FIELD, error.message)); + if (error && error.reason === BackupsError.EXTERNAL_ERROR) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, error.message)); + if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error)); settingsdb.set(exports.BACKUP_CONFIG_KEY, JSON.stringify(backupConfig), function (error) { if (error) return callback(new SettingsError(SettingsError.INTERNAL_ERROR, error)); diff --git a/src/storage/caas.js b/src/storage/caas.js index 838845ecb..79c82adc4 100644 --- a/src/storage/caas.js +++ b/src/storage/caas.js @@ -24,7 +24,6 @@ var archiver = require('archiver'), mkdirp = require('mkdirp'), once = require('once'), path = require('path'), - SettingsError = require('../settings.js').SettingsError, superagent = require('superagent'), tar = require('tar-fs'), zlib = require('zlib'); @@ -308,7 +307,7 @@ function testConfig(apiConfig, callback) { assert.strictEqual(typeof apiConfig, 'object'); assert.strictEqual(typeof callback, 'function'); - if (config.provider() !== 'caas') return callback(new SettingsError(SettingsError.BAD_FIELD, 'instance provider must be caas')); + if (config.provider() !== 'caas') return callback(new BackupsError(BackupsError.BAD_FIELD, 'instance provider must be caas')); callback(); } diff --git a/src/storage/filesystem.js b/src/storage/filesystem.js index a96a1b7d9..510b6c7db 100644 --- a/src/storage/filesystem.js +++ b/src/storage/filesystem.js @@ -23,7 +23,6 @@ var assert = require('assert'), once = require('once'), path = require('path'), safe = require('safetydance'), - SettingsError = require('../settings.js').SettingsError, tar = require('tar-fs'), zlib = require('zlib'); @@ -225,7 +224,7 @@ function testConfig(apiConfig, callback) { assert.strictEqual(typeof apiConfig, 'object'); assert.strictEqual(typeof callback, 'function'); - if (typeof apiConfig.backupFolder !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'backupFolder must be string')); + if (typeof apiConfig.backupFolder !== 'string') return callback(new BackupsError(BackupsError.BAD_FIELD, 'backupFolder must be string')); callback(); } diff --git a/src/storage/s3.js b/src/storage/s3.js index 98c06f8e4..f1f54a09c 100644 --- a/src/storage/s3.js +++ b/src/storage/s3.js @@ -25,7 +25,6 @@ var assert = require('assert'), mkdirp = require('mkdirp'), once = require('once'), path = require('path'), - SettingsError = require('../settings.js').SettingsError, tar = require('tar-fs'), zlib = require('zlib'); @@ -296,10 +295,10 @@ function testConfig(apiConfig, callback) { assert.strictEqual(typeof apiConfig, 'object'); assert.strictEqual(typeof callback, 'function'); - if (typeof apiConfig.accessKeyId !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'accessKeyId must be a string')); - if (typeof apiConfig.secretAccessKey !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'secretAccessKey must be a string')); - if (typeof apiConfig.bucket !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'bucket must be a string')); - if (typeof apiConfig.prefix !== 'string') return callback(new SettingsError(SettingsError.BAD_FIELD, 'prefix must be a string')); + if (typeof apiConfig.accessKeyId !== 'string') return callback(new BackupsError(BackupsError.BAD_FIELD, 'accessKeyId must be a string')); + if (typeof apiConfig.secretAccessKey !== 'string') return callback(new BackupsError(BackupsError.BAD_FIELD, 'secretAccessKey must be a string')); + if (typeof apiConfig.bucket !== 'string') return callback(new BackupsError(BackupsError.BAD_FIELD, 'bucket must be a string')); + if (typeof apiConfig.prefix !== 'string') return callback(new BackupsError(BackupsError.BAD_FIELD, 'prefix must be a string')); // attempt to upload and delete a file with new credentials getBackupCredentials(apiConfig, function (error, credentials) { @@ -313,7 +312,7 @@ function testConfig(apiConfig, callback) { var s3 = new AWS.S3(credentials); s3.putObject(params, function (error) { - if (error) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, error.message)); + if (error) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error.message)); var params = { Bucket: apiConfig.bucket, @@ -321,7 +320,7 @@ function testConfig(apiConfig, callback) { }; s3.deleteObject(params, function (error) { - if (error) return callback(new SettingsError(SettingsError.EXTERNAL_ERROR, error.message)); + if (error) return callback(new BackupsError(BackupsError.EXTERNAL_ERROR, error.message)); callback(); });