Skip to content

Commit 5152158

Browse files
rename to resize
1 parent bca19d1 commit 5152158

5 files changed

Lines changed: 272 additions & 137 deletions

File tree

packages/compute/src/index.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2453,6 +2453,33 @@ Compute.prototype.zone = function(name) {
24532453
return new Zone(this, name);
24542454
};
24552455

2456+
/**
2457+
* Register a single callback that will wait for an operation to finish before
2458+
* being executed.
2459+
*
2460+
* @return {function} callback - The callback function.
2461+
* @return {?error} callback.err - An error returned from the operation.
2462+
* @return {object} callback.apiResponse - The operation's final API response.
2463+
*/
2464+
Compute.prototype.execAfterOperation_ = function(callback) {
2465+
return function(err) {
2466+
// arguments = [..., op, apiResponse]
2467+
var operation = arguments[arguments.length - 2];
2468+
var apiResponse = arguments[arguments.length - 1];
2469+
2470+
if (err) {
2471+
callback(err, apiResponse);
2472+
return;
2473+
}
2474+
2475+
operation
2476+
.on('error', callback)
2477+
.on('complete', function(metadata) {
2478+
callback(null, metadata);
2479+
});
2480+
};
2481+
};
2482+
24562483
/*! Developer Documentation
24572484
*
24582485
* These methods can be used with either a callback or as a readable object

packages/compute/src/vm.js

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -407,7 +407,16 @@ VM.prototype.reset = function(callback) {
407407
};
408408

409409
/**
410-
* Set the machine type for this instance.
410+
* Set the machine type for this instance, **stopping and restarting the VM as
411+
* necessary**.
412+
*
413+
* For a list of the standard, high-memory, and high-CPU machines you may choose
414+
* from, see
415+
* [Predefined machine types]{@link https://cloud.google.com/compute/docs/machine-types#predefined_machine_types}.
416+
*
417+
* In order to change the machine type, the VM must not be running. This method
418+
* will automatically stop the VM if it is running before changing the machine
419+
* type. After it is sucessfully changed, the VM will be started.
411420
*
412421
* @resource [Instances: setMachineType API Documentation]{@link https://cloud.google.com/compute/docs/reference/v1/instances/setMachineType}
413422
* @resource [Predefined machine types]{@link https://cloud.google.com/compute/docs/machine-types#predefined_machine_types}
@@ -420,10 +429,11 @@ VM.prototype.reset = function(callback) {
420429
* @param {object} callback.apiResponse - The full API response.
421430
*
422431
* @example
423-
* vm.setMachineType('n1-standard-1', function(err, apiResponse) {});
432+
* vm.resize('n1-standard-1', function(err, apiResponse) {});
424433
*/
425-
VM.prototype.setMachineType = function(machineType, callback) {
434+
VM.prototype.resize = function(machineType, callback) {
426435
var self = this;
436+
var compute = this.zone.parent;
427437

428438
var isPartialMachineType = machineType.indexOf('/') === -1;
429439

@@ -440,27 +450,27 @@ VM.prototype.setMachineType = function(machineType, callback) {
440450
json: {
441451
machineType: machineType
442452
}
443-
}, self.execAfterOperation_(function(err) {
453+
}, compute.execAfterOperation_(function(err, apiResponse) {
444454
if (err) {
445455
if (err.message === 'Instance is starting or running.') {
446456
// The instance must be stopped before its machine type can be set.
447-
self.stop(self.execAfterOperation_(function(err) {
457+
self.stop(compute.execAfterOperation_(function(err, apiResponse) {
448458
if (err) {
449-
callback.apply(null, arguments);
459+
callback(err, apiResponse);
450460
return;
451461
}
452462

453-
self.setMachineType(machineType, callback);
463+
// Try again now that the instance is stopped.
464+
self.resize(machineType, callback);
454465
}));
455466
} else {
456-
callback.apply(null, arguments);
467+
callback(err, apiResponse);
457468
}
458-
459469
return;
460470
}
461471

462472
// The machine type was changed successfully. Start the VM.
463-
self.start(self.execAfterOperation_(callback));
473+
self.start(compute.execAfterOperation_(callback));
464474
}));
465475
};
466476

@@ -637,24 +647,4 @@ VM.prototype.request = function(reqOpts, callback) {
637647
});
638648
};
639649

640-
VM.prototype.execAfterOperation_ = function(callback) {
641-
return function(err) {
642-
// arguments = [..., op, apiResponse]
643-
var operation = arguments[arguments.length - 2];
644-
var apiResponse = arguments[arguments.length - 1];
645-
646-
if (err) {
647-
callback(err, apiResponse);
648-
return;
649-
}
650-
651-
652-
operation
653-
.on('error', callback)
654-
.on('complete', function() {
655-
callback();
656-
});
657-
};
658-
};
659-
660650
module.exports = VM;

packages/compute/system-test/compute.js

Lines changed: 25 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ describe('Compute', function() {
162162

163163
autoscaler.setMetadata({
164164
description: description
165-
}, execAfterOperationComplete(function(err) {
165+
}, compute.execAfterOperation_(function(err) {
166166
assert.ifError(err);
167167

168168
autoscaler.getMetadata(function(err, metadata) {
@@ -319,7 +319,7 @@ describe('Compute', function() {
319319

320320
healthCheck.setMetadata({
321321
description: description
322-
}, execAfterOperationComplete(function(err) {
322+
}, compute.execAfterOperation_(function(err) {
323323
if (err) {
324324
done(err);
325325
return;
@@ -392,7 +392,7 @@ describe('Compute', function() {
392392

393393
healthCheck.setMetadata({
394394
description: description
395-
}, execAfterOperationComplete(function(err) {
395+
}, compute.execAfterOperation_(function(err) {
396396
if (err) {
397397
done(err);
398398
return;
@@ -511,7 +511,7 @@ describe('Compute', function() {
511511
it('should set named ports', function(done) {
512512
var ports = OPTIONS.ports;
513513

514-
instanceGroup.setPorts(ports, execAfterOperationComplete(function(err) {
514+
instanceGroup.setPorts(ports, compute.execAfterOperation_(function(err) {
515515
assert.ifError(err);
516516

517517
instanceGroup.getMetadata(function(err, metadata) {
@@ -533,7 +533,7 @@ describe('Compute', function() {
533533
before(create(vm, { os: 'ubuntu' }));
534534

535535
it('should add a VM to the instance group', function(done) {
536-
instanceGroup.add(vm, execAfterOperationComplete(done));
536+
instanceGroup.add(vm, compute.execAfterOperation_(done));
537537
});
538538

539539
it('should list the VMs', function(done) {
@@ -559,7 +559,7 @@ describe('Compute', function() {
559559
});
560560

561561
it('should remove a VM from the instance group', function(done) {
562-
instanceGroup.remove(vm, execAfterOperationComplete(done));
562+
instanceGroup.remove(vm, compute.execAfterOperation_(done));
563563
});
564564
});
565565
});
@@ -847,7 +847,7 @@ describe('Compute', function() {
847847
'/global/targetHttpProxies/' + TARGET_PROXY_NAME
848848
].join('');
849849

850-
rule.setTarget(target, execAfterOperationComplete(function(err) {
850+
rule.setTarget(target, compute.execAfterOperation_(function(err) {
851851
assert.ifError(err);
852852

853853
rule.getMetadata(function(err, metadata) {
@@ -961,7 +961,7 @@ describe('Compute', function() {
961961

962962
service.setMetadata({
963963
description: description
964-
}, execAfterOperationComplete(function(err) {
964+
}, compute.execAfterOperation_(function(err) {
965965
if (err) {
966966
done(err);
967967
return;
@@ -1139,15 +1139,15 @@ describe('Compute', function() {
11391139
os: 'ubuntu'
11401140
};
11411141

1142-
disk.create(config, execAfterOperationComplete(callback));
1142+
disk.create(config, compute.execAfterOperation_(callback));
11431143
}
11441144

11451145
function attachDisk(callback) {
1146-
vm.attachDisk(disk, execAfterOperationComplete(callback));
1146+
vm.attachDisk(disk, compute.execAfterOperation_(callback));
11471147
}
11481148

11491149
function detachDisk(callback) {
1150-
vm.detachDisk(disk, execAfterOperationComplete(callback));
1150+
vm.detachDisk(disk, compute.execAfterOperation_(callback));
11511151
}
11521152
});
11531153

@@ -1163,8 +1163,8 @@ describe('Compute', function() {
11631163

11641164
tags.push(newTagName);
11651165

1166-
vm.setTags(tags, fingerprint, execAfterOperationComplete(function(err) {
1167-
assert.ifError(err);
1166+
vm.setTags(tags, fingerprint, compute.execAfterOperation_(function(e) {
1167+
assert.ifError(e);
11681168

11691169
vm.getTags(function(err, tags) {
11701170
assert.ifError(err);
@@ -1176,13 +1176,13 @@ describe('Compute', function() {
11761176
});
11771177

11781178
it('should reset', function(done) {
1179-
vm.reset(execAfterOperationComplete(done));
1179+
vm.reset(compute.execAfterOperation_(done));
11801180
});
11811181

1182-
it('should set the machine type', function(done) {
1182+
it('should resize the machine', function(done) {
11831183
var machineType = 'n1-standard-2';
11841184

1185-
vm.setMachineType(machineType, function(err) {
1185+
vm.resize(machineType, function(err) {
11861186
assert.ifError(err);
11871187

11881188
vm.getMetadata(function(err, metadata) {
@@ -1211,7 +1211,7 @@ describe('Compute', function() {
12111211
var newMetadata = {};
12121212
newMetadata[key] = value;
12131213

1214-
vm.setMetadata(newMetadata, execAfterOperationComplete(function(err) {
1214+
vm.setMetadata(newMetadata, compute.execAfterOperation_(function(err) {
12151215
assert.ifError(err);
12161216

12171217
vm.getMetadata(function(err, metadata) {
@@ -1230,11 +1230,11 @@ describe('Compute', function() {
12301230
});
12311231

12321232
it('should start', function(done) {
1233-
vm.start(execAfterOperationComplete(done));
1233+
vm.start(compute.execAfterOperation_(done));
12341234
});
12351235

12361236
it('should stop', function(done) {
1237-
vm.stop(execAfterOperationComplete(done));
1237+
vm.stop(compute.execAfterOperation_(done));
12381238
});
12391239
});
12401240

@@ -1349,31 +1349,14 @@ describe('Compute', function() {
13491349
}
13501350

13511351
async.each(objects, function(object, callback) {
1352-
object.delete(execAfterOperationComplete(callback));
1352+
object.delete(compute.execAfterOperation_(callback));
13531353
}, callback);
13541354
});
13551355
}
13561356

13571357
function create(object, cfg) {
13581358
return function(callback) {
1359-
object.create(cfg, execAfterOperationComplete(callback));
1360-
};
1361-
}
1362-
1363-
function execAfterOperationComplete(callback) {
1364-
return function(err) {
1365-
if (err) {
1366-
callback(err);
1367-
return;
1368-
}
1369-
1370-
var operation = arguments[arguments.length - 2]; // [..., op, apiResponse]
1371-
1372-
operation
1373-
.on('error', callback)
1374-
.on('complete', function() {
1375-
callback();
1376-
});
1359+
object.create(cfg, compute.execAfterOperation_(callback));
13771360
};
13781361
}
13791362

@@ -1387,7 +1370,7 @@ describe('Compute', function() {
13871370
}
13881371

13891372
async.each(rules, function(rule, callback) {
1390-
rule.delete(execAfterOperationComplete(callback));
1373+
rule.delete(compute.execAfterOperation_(callback));
13911374
}, callback);
13921375
});
13931376
}
@@ -1402,7 +1385,7 @@ describe('Compute', function() {
14021385
}
14031386

14041387
async.each(rules, function(rule, callback) {
1405-
rule.delete(execAfterOperationComplete(callback));
1388+
rule.delete(compute.execAfterOperation_(callback));
14061389
}, callback);
14071390
});
14081391
}
@@ -1417,7 +1400,7 @@ describe('Compute', function() {
14171400
}
14181401

14191402
async.each(services, function(service, callback) {
1420-
service.delete(execAfterOperationComplete(callback));
1403+
service.delete(compute.execAfterOperation_(callback));
14211404
}, callback);
14221405
});
14231406
}
@@ -1484,7 +1467,7 @@ describe('Compute', function() {
14841467
}
14851468

14861469
async.each(healthChecks, function(healthCheck, callback) {
1487-
healthCheck.delete(execAfterOperationComplete(callback));
1470+
healthCheck.delete(compute.execAfterOperation_(callback));
14881471
}, callback);
14891472
});
14901473
}

0 commit comments

Comments
 (0)