From fb8269fb798b8d70dcd7b177214c19520caff7fc Mon Sep 17 00:00:00 2001 From: Lynchmaniac Date: Wed, 6 Dec 2017 23:38:43 +0100 Subject: [PATCH] [blockstorage] bulk-operation archive --- docs/providers/openstack/storage.md | 26 ++++++++++++++++++ .../openstack/storage/client/files.js | 27 +++++++++++++++++++ 2 files changed, 53 insertions(+) diff --git a/docs/providers/openstack/storage.md b/docs/providers/openstack/storage.md index 6ff53d136..c0884322e 100644 --- a/docs/providers/openstack/storage.md +++ b/docs/providers/openstack/storage.md @@ -135,6 +135,9 @@ client.removeContainerMetadata(container, { year: false }, function(err, c) { * [`client.getFiles(container, function(err, file) { })`](#clientgetfilescontainer-functionerr-file--) * [`client.removeFile(container, file, function(err, result) { })`](#clientremovefilecontainer-file-functionerr-result--) * [`client.updateFileMetadata(container, file, function(err, file) { })`](#clientupdatefilemetadatacontainer-file-functionerr-file--) +* [`client.bulkDelete(container, files, function(err, file) { })`](#clientbulkdeletecontainer-files-functionerr-file--) +* [`client.bulkArchive(container, file, function(err, file) { })`](#clientbulkarchivecontainer-file-functionerr-file--) + ### File API Details @@ -266,3 +269,26 @@ client.updateFileMetadata(file.container, file, function(err, file) { }); ``` +#### client.bulkDelete(container, files, function(err, file) { }) + +Remove a list of files from a container + +```javascript + +client.bulkDelete(containerName, files, function(err, results) { + // ... +}); +``` + +#### client.bulkArchive(container, file, function(err, file) { }) + +Upload and extract an archive file + +```javascript + +var readStream = fs.createReadStream(archivePath); +client.bulkArchive(containerName, readStream, function(err, results) { + // ... +}); +``` + diff --git a/lib/pkgcloud/openstack/storage/client/files.js b/lib/pkgcloud/openstack/storage/client/files.js index 9ee35b361..96f3ce673 100644 --- a/lib/pkgcloud/openstack/storage/client/files.js +++ b/lib/pkgcloud/openstack/storage/client/files.js @@ -68,6 +68,33 @@ exports.bulkDelete = function(container, files, callback) { }); }; +/** + * client.bulkArchive + * + * @description upload and extract an archive file + * + * @param {String|object} container the container or containerName + * @param {String} file the archive file to expand + * @param callback + */ +exports.bulkArchive = function(container, file, callback) { + this._request({ + method: 'PUT', + container: container, + body: file, + headers: { + 'Content-Type': 'application/x-tar' + }, + qs: { + 'extract-archive': 'tar.gz' + } + }, function(err, results) { + return err + ? callback(err) + : callback(null, results); + }); +}; + /** * client.upload *