From 59fdf53e256b98cf7484074b1af5fe59e7b0d5da Mon Sep 17 00:00:00 2001 From: y33zhang Date: Wed, 19 Oct 2016 12:18:10 -0700 Subject: [PATCH] storage: support other storage classes --- packages/storage/src/index.js | 20 ++++++----- packages/storage/test/index.js | 61 ++++++++++++++++++++++++++-------- 2 files changed, 59 insertions(+), 22 deletions(-) diff --git a/packages/storage/src/index.js b/packages/storage/src/index.js index d59e22a3f30..79411619c03 100644 --- a/packages/storage/src/index.js +++ b/packages/storage/src/index.js @@ -187,18 +187,19 @@ Storage.prototype.channel = function(id, resourceId) { * [Bucket Naming Guidelines](https://cloud.google.com/storage/docs/bucketnaming.html#requirements). * * @resource [Buckets: insert API Documentation]{@link https://cloud.google.com/storage/docs/json_api/v1/buckets/insert} - * @resource [Durable Reduced Availability]{@link https://cloud.google.com/storage/docs/durable-reduced-availability} - * @resource [Nearline]{@link https://cloud.google.com/storage/docs/nearline} * @resource [Storage Classes]{@link https://cloud.google.com/storage/docs/storage-classes} * * @throws {Error} If a name is not provided. * * @param {string} name - Name of the bucket to create. * @param {object=} metadata - Metadata to set for the bucket. - * @param {boolean=} metadata.dra - Specify the storage class as - * [Durable Reduced Availability](https://goo.gl/26lthK). - * @param {boolean=} metadata.nearline - Specify the storage class as - * [Nearline](https://goo.gl/sN5wNh). + * @param {boolean} metadata.coldline - Specify the storage class as Coldline. + * @param {boolean} metadata.dra - Specify the storage class as Durable Reduced + * Availability. + * @param {boolean} metadata.multiRegional - Specify the storage class as + * Multi-Regional. + * @param {boolean} metadata.nearline - Specify the storage class as Nearline. + * @param {boolean} metadata.regional - Specify the storage class as Regional. * @param {function} callback - The callback function. * @param {?error} callback.err - An error returned while making this request * @param {module:storage/bucket} callback.bucket - The newly created Bucket. @@ -219,7 +220,7 @@ Storage.prototype.channel = function(id, resourceId) { * //- * var metadata = { * location: 'US-CENTRAL1', - * dra: true + * regional: true * }; * * gcs.createBucket('new-bucket', metadata, callback); @@ -260,8 +261,11 @@ Storage.prototype.createBucket = function(name, metadata, callback) { }); var storageClasses = { + coldline: 'COLDLINE', dra: 'DURABLE_REDUCED_AVAILABILITY', - nearline: 'NEARLINE' + multiRegional: 'MULTI_REGIONAL', + nearline: 'NEARLINE', + regional: 'REGIONAL' }; Object.keys(storageClasses).forEach(function(storageClass) { diff --git a/packages/storage/test/index.js b/packages/storage/test/index.js index 33855e62cbc..7d1ac7f8c65 100644 --- a/packages/storage/test/index.js +++ b/packages/storage/test/index.js @@ -246,21 +246,54 @@ describe('Storage', function() { }); }); - it('should expand the Nearline option', function(done) { - storage.request = function(reqOpts) { - assert.strictEqual(reqOpts.json.storageClass, 'NEARLINE'); - done(); - }; - storage.createBucket(BUCKET_NAME, { nearline: true }, function() {}); - }); + describe('storage classes', function() { + it('should expand metadata.coldline', function(done) { + storage.request = function(reqOpts) { + assert.strictEqual(reqOpts.json.storageClass, 'COLDLINE'); + done(); + }; + + storage.createBucket(BUCKET_NAME, { coldline: true }, assert.ifError); + }); - it('should expand the Durable Reduced Availability option', function(done) { - storage.request = function(reqOpts) { - var body = reqOpts.json; - assert.strictEqual(body.storageClass, 'DURABLE_REDUCED_AVAILABILITY'); - done(); - }; - storage.createBucket(BUCKET_NAME, { dra: true }, function() {}); + it('should expand metadata.dra', function(done) { + storage.request = function(reqOpts) { + var body = reqOpts.json; + assert.strictEqual(body.storageClass, 'DURABLE_REDUCED_AVAILABILITY'); + done(); + }; + + storage.createBucket(BUCKET_NAME, { dra: true }, assert.ifError); + }); + + it('should expand metadata.multiRegional', function(done) { + storage.request = function(reqOpts) { + assert.strictEqual(reqOpts.json.storageClass, 'MULTI_REGIONAL'); + done(); + }; + + storage.createBucket(BUCKET_NAME, { + multiRegional: true + }, assert.ifError); + }); + + it('should expand metadata.nearline', function(done) { + storage.request = function(reqOpts) { + assert.strictEqual(reqOpts.json.storageClass, 'NEARLINE'); + done(); + }; + + storage.createBucket(BUCKET_NAME, { nearline: true }, assert.ifError); + }); + + it('should expand metadata.regional', function(done) { + storage.request = function(reqOpts) { + assert.strictEqual(reqOpts.json.storageClass, 'REGIONAL'); + done(); + }; + + storage.createBucket(BUCKET_NAME, { regional: true }, assert.ifError); + }); }); });