Skip to content

Commit aef6b3b

Browse files
core: only recurse relevant request objects (#2100)
1 parent 1b45290 commit aef6b3b

3 files changed

Lines changed: 48 additions & 4 deletions

File tree

packages/google-cloud-compute/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,8 @@
6363
"concat-stream": "^1.5.0",
6464
"mocha": "^3.0.1",
6565
"propprop": "^0.3.0",
66-
"proxyquire": "^1.7.10"
66+
"proxyquire": "^1.7.10",
67+
"uuid": "^3.0.1"
6768
},
6869
"scripts": {
6970
"publish-module": "node ../../scripts/publish.js compute",

packages/google-cloud-compute/src/vm.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -342,6 +342,11 @@ VM.prototype.detachDisk = function(disk, callback) {
342342
return;
343343
}
344344

345+
var diskName = common.util.replaceProjectIdToken(
346+
disk.formattedName,
347+
self.zone.compute.authClient.projectId
348+
);
349+
345350
var deviceName;
346351
var baseUrl = 'https://www.googleapis.com/compute/v1/';
347352
var disks = metadata.disks || [];
@@ -352,7 +357,7 @@ VM.prototype.detachDisk = function(disk, callback) {
352357
var attachedDisk = disks[i];
353358
var source = attachedDisk.source.replace(baseUrl, '');
354359

355-
if (source === disk.formattedName) {
360+
if (source === diskName) {
356361
deviceName = attachedDisk.deviceName;
357362
}
358363
}

packages/google-cloud-compute/test/vm.js

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ var proxyquire = require('proxyquire');
2323
var ServiceObject = require('@google-cloud/common').ServiceObject;
2424
var util = require('@google-cloud/common').util;
2525

26+
var utilCached = extend({}, util);
27+
2628
var promisified = false;
2729
var fakeUtil = extend({}, util, {
2830
promisifyAll: function(Class) {
@@ -46,7 +48,12 @@ describe('VM', function() {
4648
var Disk;
4749
var DISK;
4850

49-
var COMPUTE = { projectId: 'project-id' };
51+
var COMPUTE = {
52+
authClient: {
53+
projectId: 'project-id'
54+
},
55+
projectId: 'project-id'
56+
};
5057
var ZONE = {
5158
compute: COMPUTE,
5259
name: 'us-central1-a',
@@ -70,6 +77,7 @@ describe('VM', function() {
7077
});
7178

7279
beforeEach(function() {
80+
extend(fakeUtil, utilCached);
7381
vm = new VM(ZONE, VM_NAME);
7482
DISK = new Disk(ZONE, 'disk-name');
7583
});
@@ -229,7 +237,7 @@ describe('VM', function() {
229237
beforeEach(function() {
230238
DEVICE_NAME = DISK.formattedName;
231239

232-
METADATA = METADATA = {
240+
METADATA = {
233241
disks: [
234242
{
235243
source: DEVICE_NAME,
@@ -254,6 +262,36 @@ describe('VM', function() {
254262
});
255263
});
256264

265+
it('should replace projectId token in disk name', function(done) {
266+
var REPLACED_DEVICE_NAME = 'replaced-device-name';
267+
268+
fakeUtil.replaceProjectIdToken = function(value, projectId) {
269+
assert.strictEqual(value, DISK.formattedName);
270+
assert.strictEqual(projectId, COMPUTE.authClient.projectId);
271+
return REPLACED_DEVICE_NAME;
272+
};
273+
274+
vm.getMetadata = function(callback) {
275+
var metadata = {
276+
disks: [
277+
{
278+
source: REPLACED_DEVICE_NAME,
279+
deviceName: REPLACED_DEVICE_NAME
280+
}
281+
]
282+
};
283+
284+
callback(null, metadata, metadata);
285+
};
286+
287+
vm.request = function(reqOpts) {
288+
assert.strictEqual(reqOpts.qs.deviceName, REPLACED_DEVICE_NAME);
289+
done();
290+
};
291+
292+
vm.detachDisk(DISK, assert.ifError);
293+
});
294+
257295
it('should return an error if device name not found', function(done) {
258296
var metadata = {
259297
disks: [

0 commit comments

Comments
 (0)