s3: add progress detail

this is a bit of a hack and we should add another way to set the progress
(maybe via backups.setProgress or via a progress callback). this is because
some methods like removeDir can be called from backuptask and from box code.
This commit is contained in:
Girish Ramakrishnan
2017-10-01 17:35:44 -07:00
parent f9973e765c
commit 0f543e6703
3 changed files with 6 additions and 8 deletions
+2 -4
View File
@@ -683,10 +683,8 @@ function backupBoxAndApps(auditSource, callback) {
apps.getAll(function (error, allApps) {
if (error) return callback(new BackupsError(BackupsError.INTERNAL_ERROR, error));
var processed = 0;
var step = 100/(allApps.length+1);
progress.set(progress.BACKUP, Math.min(step * processed, 5), '');
var processed = 1;
var step = 100/(allApps.length+2);
async.mapSeries(allApps, function iterator(app, iteratorCallback) {
progress.set(progress.BACKUP, step * processed, 'Backing up ' + (app.altDomain || config.appFqdn(app.location)));
-4
View File
@@ -52,10 +52,6 @@ function clear(tag) {
debug('clearing %s', tag);
}
function get(tag) {
return progress[tag];
}
function getAll() {
return progress;
}
+4
View File
@@ -29,6 +29,7 @@ var assert = require('assert'),
mkdirp = require('mkdirp'),
PassThrough = require('stream').PassThrough,
path = require('path'),
progress = require('../progress.js'),
S3BlockReadStream = require('s3-block-read-stream'),
superagent = require('superagent');
@@ -203,6 +204,7 @@ function downloadDir(apiConfig, backupFilePath, destDir, callback) {
listDir(apiConfig, backupFilePath, { batchSize: 1 }, function downloadFile(s3, content, iteratorCallback) {
var relativePath = path.relative(backupFilePath, content.Key);
mkdirp(path.dirname(path.join(destDir, relativePath)), function (error) {
if (error) return iteratorCallback(new BackupsError(BackupsError.EXTERNAL_ERROR, error.message));
@@ -240,6 +242,8 @@ function copy(apiConfig, oldFilePath, newFilePath, callback) {
CopySource: path.join(apiConfig.bucket, content.Key)
};
progress.setDetail(progress.BACKUP, 'Copying ' + content.Key.slice(oldFilePath.length+1));
s3.copyObject(copyParams, function (error) {
if (error && error.code === 'NoSuchKey') return iteratorCallback(new BackupsError(BackupsError.NOT_FOUND, 'Old backup not found'));
if (error) {