diff --git a/src/cloudron.js b/src/cloudron.js index 08c44a053..a26fcccca 100644 --- a/src/cloudron.js +++ b/src/cloudron.js @@ -715,10 +715,8 @@ function retire(reason, callback) { shell.sudo('retire', [ RETIRE_CMD, reason, JSON.stringify(data) ], callback); } -function migrate(domain, size, region, callback) { - assert.strictEqual(typeof domain, 'string'); - assert.strictEqual(typeof size, 'string'); - assert.strictEqual(typeof region, 'string'); +function migrate(options, callback) { + assert.strictEqual(typeof options, 'object'); assert.strictEqual(typeof callback, 'function'); var error = locker.lock(locker.OP_MIGRATE); @@ -736,12 +734,14 @@ function migrate(domain, size, region, callback) { backups.backupBoxAndApps({ userId: null, username: 'migrator' }, function (error, backupId) { if (error) return unlock(error); - debug('migrate: domain: %s size %s region %s', domain, size, region); + debug('migrate: domain: %s size %s region %s', options.domain, options.size, options.region); + + options.restoreKey = backupId; superagent .post(config.apiServerOrigin() + '/api/v1/boxes/' + config.fqdn() + '/migrate') .query({ token: config.token() }) - .send({ domain: domain, size: size, region: region, restoreKey: backupId }) + .send(options) .end(function (error, result) { if (error && !error.response) return unlock(error); // network error if (result.statusCode === 409) return unlock(new CloudronError(CloudronError.BAD_STATE)); diff --git a/src/routes/cloudron.js b/src/routes/cloudron.js index 34ae673d6..e7223a125 100644 --- a/src/routes/cloudron.js +++ b/src/routes/cloudron.js @@ -24,7 +24,8 @@ var assert = require('assert'), progress = require('../progress.js'), mailer = require('../mailer.js'), superagent = require('superagent'), - updateChecker = require('../updatechecker.js'); + updateChecker = require('../updatechecker.js'), + _ = require('underscore'); function auditSource(req) { var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress || null; @@ -120,7 +121,9 @@ function migrate(req, res, next) { debug('Migration requested', req.body.size, req.body.region); - cloudron.migrate(config.fqdn(), req.body.size, req.body.region, function (error) { + var options = _.pick(req.body, 'domain', 'size', 'region'); + + cloudron.migrate(options, function (error) { if (error && error.reason === CloudronError.BAD_STATE) return next(new HttpError(409, error.message)); if (error) return next(new HttpError(500, error));