diff --git a/src/apprestoretask.js b/src/apprestoretask.js deleted file mode 100755 index f622716b8..000000000 --- a/src/apprestoretask.js +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env node - -'use strict'; - -require('supererror')({ splatchError: true }); - -// remove timestamp from debug() based output -require('debug').formatArgs = function formatArgs(args) { - args[0] = this.namespace + ' ' + args[0]; -}; - -var assert = require('assert'), - database = require('./database.js'), - debug = require('debug')('box:backuptask'), - path = require('path'), - paths = require('./paths.js'), - filesystem = require('./storage/filesystem.js'), - caas = require('./storage/caas.js'), - s3 = require('./storage/s3.js'), - BackupsError = require('./backups.js').BackupsError, - settings = require('./settings.js'); - -function api(provider) { - switch (provider) { - case 'caas': return caas; - case 's3': return s3; - case 'filesystem': return filesystem; - default: return null; - } -} - -function initialize(callback) { - assert.strictEqual(typeof callback, 'function'); - - database.initialize(callback); -} - -function restoreApp(backupId, appId, callback) { - assert.strictEqual(typeof backupId, 'string'); - assert.strictEqual(typeof appId, 'string'); - assert.strictEqual(typeof callback, 'function'); - - debug('Start app restore with id %s for %s', backupId, appId); - - settings.getBackupConfig(function (error, backupConfig) { - if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); - - api(backupConfig.provider).restore(backupConfig, backupId, path.join(paths.APPS_DATA_DIR, appId), callback); - }); -} - -// Main process starts here -var backupId = process.argv[2]; -var appId = process.argv[3]; - -if (!backupId || !appId) { - console.error('Usage: restoreapptask.js '); - process.exit(1); -} - -debug('Apprestoretask for the app %s with id %s', appId, backupId); - -process.on('SIGTERM', function () { - process.exit(0); -}); - -initialize(function (error) { - if (error) throw error; - - function resultHandler(error) { - if (error) debug('Apprestoretask completed with error', error); - - debug('Apprestoretask completed'); - - // https://nodejs.org/api/process.html are exit codes used by node. apps.js uses the value below - // to check apptask crashes - process.exit(error ? 50 : 0); - } - - restoreApp(backupId, appId, resultHandler); -}); diff --git a/src/backups.js b/src/backups.js index 9b7c978d7..ef924af01 100644 --- a/src/backups.js +++ b/src/backups.js @@ -49,7 +49,6 @@ var addons = require('./addons.js'), var NODE_CMD = path.join(__dirname, './scripts/node.sh'); var BACKUPTASK_CMD = path.join(__dirname, 'backuptask.js'); -var APPRESTORETASK_CMD = path.join(__dirname, 'apprestoretask.js'); var NOOP_CALLBACK = function (error) { if (error) debug(error); }; @@ -387,10 +386,14 @@ function restoreApp(app, addonsToRestore, backupId, callback) { assert.strictEqual(typeof callback, 'function'); assert(app.lastBackupId); - async.series([ - shell.sudo.bind(null, 'restoreApp', [ NODE_CMD, APPRESTORETASK_CMD, backupId, app.id ]), - addons.restoreAddons.bind(null, app, addonsToRestore) - ], callback); + settings.getBackupConfig(function (error, backupConfig) { + if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error)); + + async.series([ + api(backupConfig.provider).restore.bind(null, backupConfig, backupId, path.join(paths.APPS_DATA_DIR, app.id)), + addons.restoreAddons.bind(null, app, addonsToRestore) + ], callback); + }); } function getDownloadStream(backupId, callback) { diff --git a/src/backuptask.js b/src/backuptask.js index ebc2d2674..4f18f52f0 100755 --- a/src/backuptask.js +++ b/src/backuptask.js @@ -79,11 +79,6 @@ function backupBox(backupId, callback) { var backupId = process.argv[2]; var appId = process.argv[3]; -if (!backupId) { - console.error('Usage: restoreapptask.js [appId]'); - process.exit(1); -} - if (appId) debug('Backuptask for the app %s with id %s', appId, backupId); else debug('Backuptask for the whole Cloudron with id %s', backupId);