UNPKG

azure-storage

Version:

Microsoft Azure Storage Client Library for Node.js

220 lines (188 loc) 5.98 kB
// // Copyright (c) Microsoft and contributors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // // See the License for the specific language governing permissions and // limitations under the License. // /** * This sample is used to provide an overview of blob snapshots and how to work with them. * * 1. Upload blocks and commit them. * * 2. Take a snapshot for that blob. * * 3. Re-upload one of the three blocks and commit them. * * 4. Get the snapshot. * * 5. List blobs including snapshots. * * 6. Delete the snapshot. */ var fs = require('fs'); var azure; if (fs.existsSync('absolute path to azure-storage.js')) { azure = require('absolute path to azure-storage'); } else { azure = require('azure-storage'); } var BlobUtilities = azure.BlobUtilities; var container = 'snapshotsample'; var blob = 'snapshotsample'; var blockList = ['b1', 'b2', 'b3']; var blockContent = ['content1', 'content2', 'content3']; var blockContentAlternative2 = 'alternative2'; var blobService = azure.createBlobService(); // optionally set a proxy /*var proxy = { protocol: 'http:', host: '127.0.0.1', port: 8888 }; blobService.setProxy(proxy);*/ function snapshotSample () { var processArguments = process.argv; if (processArguments.length !== 2) { console.log('Incorrect number of arguments. No arguments should be given.'); process.exit(1); } console.log('Starting snapshotSample.'); // Create the container createContainer(function () { // Upload a blob uploadBlockBlob(function () { // Create a snapshot of the blob createSnapshot(function (snapshot) { // Update the blob blockContent[1] = blockContentAlternative2; uploadBlockBlob(function () { // Create a snapshot of the modified blob getSnapshotToText(snapshot, function () { // List the blob and its snapshots listSnapshots(function () { // Delete the snapshots deleteSnapshots(function () { // Delete the container deleteContainer(function () { console.log('Ending snapshotSample.'); }); }); }); }); }); }); }); }); } function createContainer (callback) { // Create the container. blobService.createContainerIfNotExists(container, function (error) { if (error) { console.log(error); } else { console.log('Created the container ' + container); callback(); } }); } function uploadBlockBlob(callback) { // Upload 3 blocks and commit them. var blocks = 0; var blobCallbackCounter = function (block) { ++blocks; if (blocks === blockList.length) { console.log(' Created ' + blocks + ' blocks.'); blobService.commitBlocks(container, blob, {LatestBlocks: blockList}, function (error4) { if (error4) { console.log(error4); } else { console.log('Committed the blob ' + blob); callback(); } }); } } for(var i = 0; i < blockList.length; i++) { console.log(' Uploading a block. ID: ' + blockList[i] + ' Content: ' + blockContent[i]); blobService.createBlockFromText(blockList[i], container, blob, blockContent[i], blockContent[i].length, function (error) { if (error) { console.log(error); } else { blobCallbackCounter(); } }); } } function createSnapshot(callback) { // Creates a snapshot. blobService.createBlobSnapshot(container, blob, function (error, snapshot) { if (error) { console.log(error); } else { console.log('Created a snapshot for the blob ' + blob); callback(snapshot); } }); } function getSnapshotToText(snapshot, callback) { // Gets a snapshot. blobService.getBlobToText(container, blob, {snapshotId: snapshot}, function (error, text) { if (error) { console.log(error); } else { console.log('Snapshot ' + blob + '?' + snapshot + ' text: ' + text); callback(); } }); } function listSnapshots (callback) { // List the blobs, including snapshots blobService.listBlobsSegmented(container, null, { include: BlobUtilities.BlobListingDetails.SNAPSHOTS }, function (error, results) { if (error) { console.log(error); } else { console.log('Listing the blobs under the container ' + container); results.entries.forEach(function (blob) { var snapshot = ''; if (blob.snapshot) { snapshot = '; BlobSnapshot: ' + blob.snapshot; } console.log(' BlobName: ' + blob.name + snapshot); }); callback(); } }); }; function deleteSnapshots (callback) { // Delete the snapshot. blobService.deleteBlob(container, blob, { deleteSnapshots: BlobUtilities.SnapshotDeleteOptions.SNAPSHOTS_ONLY }, function (error) { if (error) { console.log(error); } else { console.log('Deleted the snapshots.'); callback(); } }); }; function deleteContainer (callback) { // Delete the container. blobService.deleteContainerIfExists(container, function (error) { if (error) { console.log(error); } else { console.log('Deleted the container ' + container); callback(); } }); } snapshotSample();