diff --git a/src/caas.js b/src/caas.js index a2ecb8067..6b8cd5871 100644 --- a/src/caas.js +++ b/src/caas.js @@ -127,13 +127,13 @@ function doMigrate(options, caasConfig, callback) { function unlock(error) { debug('Failed to migrate', error); locker.unlock(locker.OP_MIGRATE); - tasks.setProgress(tasks.TASK_MIGRATE, { percent: -1, errorMessage: `Backup failed: ${error.message}` }, NOOP_CALLBACK); + tasks.update(tasks.TASK_MIGRATE, { percent: -1, errorMessage: `Backup failed: ${error.message}` }, NOOP_CALLBACK); } - tasks.setProgress(tasks.TASK_MIGRATE, { percent: 10, message: 'Backing up for migration' }, NOOP_CALLBACK); + tasks.update(tasks.TASK_MIGRATE, { percent: 10, message: 'Backing up for migration' }, NOOP_CALLBACK); // initiate the migration in the background - backups.backupBoxAndApps((progress) => tasks.setProgress(tasks.TASK_MIGRATE, { percent: 10+progress.percent*30/100, message: progress.message }, NOOP_CALLBACK), function (error) { + backups.backupBoxAndApps((progress) => tasks.update(tasks.TASK_MIGRATE, { percent: 10+progress.percent*30/100, message: progress.message }, NOOP_CALLBACK), function (error) { if (error) return unlock(error); debug('migrate: domain: %s size %s region %s', options.domain, options.size, options.region); @@ -149,7 +149,7 @@ function doMigrate(options, caasConfig, callback) { if (result.statusCode === 404) return unlock(new CaasError(CaasError.NOT_FOUND)); if (result.statusCode !== 202) return unlock(new CaasError(CaasError.EXTERNAL_ERROR, util.format('%s %j', result.status, result.body))); - tasks.setProgress(tasks.TASK_MIGRATE, { percent: 40, message: 'Migrating' }, NOOP_CALLBACK); + tasks.update(tasks.TASK_MIGRATE, { percent: 40, message: 'Migrating' }, NOOP_CALLBACK); retire('migrate', _.pick(options, 'domain', 'size', 'region')); }); diff --git a/src/routes/tasks.js b/src/routes/tasks.js index 32e6892e1..290e770de 100644 --- a/src/routes/tasks.js +++ b/src/routes/tasks.js @@ -1,7 +1,7 @@ 'use strict'; exports = module.exports = { - getProgress: getProgress, + get: get, stopTask: stopTask }; @@ -28,10 +28,10 @@ function stopTask(req, res, next) { }); } -function getProgress(req, res, next) { +function get(req, res, next) { assert.strictEqual(typeof req.params.taskId, 'string'); - tasks.getProgress(req.params.taskId, function (error, progress) { + tasks.get(req.params.taskId, function (error, progress) { if (error && error.reason === TaskError.NOT_FOUND) return next(new HttpError(404, 'No such task')); if (error) return next(new HttpError(500, error)); diff --git a/src/server.js b/src/server.js index 0f1a29c7c..ac4f0e455 100644 --- a/src/server.js +++ b/src/server.js @@ -135,7 +135,7 @@ function initializeExpressSync() { router.get ('/api/v1/cloudron/eventlog', cloudronScope, routes.eventlog.get); // tasks - router.get ('/api/v1/tasks/:taskId', settingsScope, routes.tasks.getProgress); + router.get ('/api/v1/tasks/:taskId', settingsScope, routes.tasks.get); router.post('/api/v1/tasks/:taskId/stop', settingsScope, routes.tasks.stopTask); // backups diff --git a/src/taskdb.js b/src/taskdb.js index 2a562b443..0be682c80 100644 --- a/src/taskdb.js +++ b/src/taskdb.js @@ -1,8 +1,8 @@ 'use strict'; exports = module.exports = { - setProgress: setProgress, - getProgress: getProgress + update: update, + get: get }; let assert = require('assert'), @@ -21,7 +21,7 @@ function postProcess(result) { delete result.argsJson; } -function setProgress(id, progress, callback) { +function update(id, progress, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof progress, 'object'); assert.strictEqual(typeof callback, 'function'); @@ -55,7 +55,7 @@ function setProgress(id, progress, callback) { }); } -function getProgress(id, callback) { +function get(id, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); @@ -63,6 +63,8 @@ function getProgress(id, callback) { if (error) return callback(new DatabaseError(DatabaseError.INTERNAL_ERROR, error)); if (result.length === 0) return callback(new DatabaseError(DatabaseError.NOT_FOUND)); - callback(null, postProcess(result[0])); + postProcess(result[0]); + + callback(null, result[0]); }); } diff --git a/src/tasks.js b/src/tasks.js index 9451c3ace..2f23e131e 100644 --- a/src/tasks.js +++ b/src/tasks.js @@ -1,9 +1,9 @@ 'use strict'; exports = module.exports = { - setProgress: setProgress, - getProgress: getProgress, - clearProgress: clearProgress, + update: update, + get: get, + clear: clear, startTask: startTask, stopTask: stopTask, @@ -65,25 +65,25 @@ TaskError.INTERNAL_ERROR = 'Internal Error'; TaskError.BAD_STATE = 'Bad State'; TaskError.NOT_FOUND = 'Not Found'; -function setProgress(id, progress, callback) { +function update(id, progress, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof progress, 'object'); assert.strictEqual(typeof callback, 'function'); debug(`${id}: ${JSON.stringify(progress)}`); - taskdb.setProgress(id, progress, function (error) { + taskdb.update(id, progress, function (error) { if (error) return callback(new TaskError(TaskError.INTERNAL_ERROR, error)); callback(); }); } -function getProgress(id, callback) { +function get(id, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); - taskdb.getProgress(id, function (error, progress) { + taskdb.get(id, function (error, progress) { if (error && error.reason == DatabaseError.NOT_FOUND) return callback(new TaskError(TaskError.NOT_FOUND)); if (error) return callback(new TaskError(TaskError.INTERNAL_ERROR, error)); @@ -93,11 +93,11 @@ function getProgress(id, callback) { }); } -function clearProgress(id, callback) { +function clear(id, callback) { assert.strictEqual(typeof id, 'string'); assert.strictEqual(typeof callback, 'function'); - setProgress(id, { percent: 0, message: 'Starting', result: '', errorMessage: '' }, callback); + update(id, { percent: 0, message: 'Starting', result: '', errorMessage: '' }, callback); } function startTask(id, args, auditSource, callback) { @@ -124,14 +124,14 @@ function startTask(id, args, auditSource, callback) { // when parent process dies, this process is killed because KillMode=control-group in systemd unit file assert(!gTasks[id], 'Task is already running'); - clearProgress(id, NOOP_CALLBACK); + clear(id, NOOP_CALLBACK); eventlog.add(taskInfo.startEventId, auditSource, { }); gTasks[id] = child_process.fork(taskInfo.program, args, { stdio: [ 'pipe', fd, fd, 'ipc' ]}); gTasks[id].once('exit', function (code, signal) { debug(`startTask: ${id} completed with code ${code} and signal ${signal}`); - getProgress(id, function (error, progress) { + get(id, function (error, progress) { if (!error && progress.errorMessage) error = new Error(progress.errorMessage); eventlog.add(taskInfo.finishEventId, auditSource, { errorMessage: error ? error.message : null, backupId: progress ? progress.result : null }); diff --git a/src/tasks/backuptask.js b/src/tasks/backuptask.js index a0f05de8e..ffc9a1b2f 100755 --- a/src/tasks/backuptask.js +++ b/src/tasks/backuptask.js @@ -24,9 +24,9 @@ debug('Staring backup'); database.initialize(function (error) { if (error) return process.exit(50); - backups.backupBoxAndApps((progress) => tasks.setProgress(tasks.TASK_BACKUP, progress, NOOP_CALLBACK), function (error, backupId) { + backups.backupBoxAndApps((progress) => tasks.update(tasks.TASK_BACKUP, progress, NOOP_CALLBACK), function (error, backupId) { const progress = { percent: 100, result: backupId || '', errorMessage: error ? error.message : '' }; - tasks.setProgress(tasks.TASK_BACKUP, progress, () => process.exit(error ? 50 : 0)); + tasks.update(tasks.TASK_BACKUP, progress, () => process.exit(error ? 50 : 0)); }); }); diff --git a/src/test/backups-test.js b/src/test/backups-test.js index 47506e290..77f585810 100644 --- a/src/test/backups-test.js +++ b/src/test/backups-test.js @@ -27,7 +27,7 @@ function createBackup(callback) { if (error) return callback(error); function waitForBackup() { - tasks.getProgress(tasks.TASK_BACKUP, function (error, p) { + tasks.get(tasks.TASK_BACKUP, function (error, p) { if (error) return callback(error); if (p.percent !== 100) return setTimeout(waitForBackup, 1000); diff --git a/src/updater.js b/src/updater.js index cc00d7a0f..92c3d8420 100644 --- a/src/updater.js +++ b/src/updater.js @@ -156,23 +156,23 @@ function doUpdate(boxUpdateInfo, callback) { assert(boxUpdateInfo && typeof boxUpdateInfo === 'object'); function updateError(e) { - tasks.setProgress(tasks.TASK_UPDATE, { percent: -1, errorMessage: e.message }, NOOP_CALLBACK); + tasks.update(tasks.TASK_UPDATE, { percent: -1, errorMessage: e.message }, NOOP_CALLBACK); callback(e); } - tasks.setProgress(tasks.TASK_UPDATE, { percent: 5, message: 'Downloading and verifying release' }, NOOP_CALLBACK); + tasks.update(tasks.TASK_UPDATE, { percent: 5, message: 'Downloading and verifying release' }, NOOP_CALLBACK); downloadAndVerifyRelease(boxUpdateInfo, function (error, packageInfo) { if (error) return updateError(error); - tasks.setProgress(tasks.TASK_UPDATE, { percent: 10, message: 'Backing up' }, NOOP_CALLBACK); + tasks.update(tasks.TASK_UPDATE, { percent: 10, message: 'Backing up' }, NOOP_CALLBACK); - backups.backupBoxAndApps((progress) => tasks.setProgress(tasks.TASK_MIGRATE, { percent: 10+progress.percent*70/100, message: progress.message }, NOOP_CALLBACK), function (error) { + backups.backupBoxAndApps((progress) => tasks.update(tasks.TASK_MIGRATE, { percent: 10+progress.percent*70/100, message: progress.message }, NOOP_CALLBACK), function (error) { if (error) return updateError(error); debug('updating box %s', boxUpdateInfo.sourceTarballUrl); - tasks.setProgress(tasks.TASK_UPDATE, { percent: 70, message: 'Installing update' }, NOOP_CALLBACK); + tasks.update(tasks.TASK_UPDATE, { percent: 70, message: 'Installing update' }, NOOP_CALLBACK); shell.sudo('update', [ UPDATE_CMD, packageInfo.file ], {}, function (error) { if (error) return updateError(error); @@ -194,7 +194,7 @@ function update(boxUpdateInfo, auditSource, callback) { eventlog.add(eventlog.ACTION_UPDATE, auditSource, { boxUpdateInfo: boxUpdateInfo }); // ensure tools can 'wait' on progress - tasks.setProgress(tasks.TASK_UPDATE, { percent: 0, message: 'Starting' }, NOOP_CALLBACK); + tasks.update(tasks.TASK_UPDATE, { percent: 0, message: 'Starting' }, NOOP_CALLBACK); debug('Starting update'); doUpdate(boxUpdateInfo, function (error) {