diff --git a/CHANGES.md b/CHANGES.md index 13266c4..733ac00 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -9,6 +9,9 @@ Known issues: - [joyent/node-triton#193] Fix possible CLI crash with `triton ssh ...` if the instance's image doesn't have any tags. +- [joyent/node-triton#213] commands fail unhelpfully when `cliSetupTritonApi` + returns error (this includes e.g. supplying an incorrect key fingerprint, + which no longer results in a cryptic stack trace and crash) ## 5.2.0 diff --git a/lib/do_account/do_get.js b/lib/do_account/do_get.js index d2619e7..97413a6 100644 --- a/lib/do_account/do_get.js +++ b/lib/do_account/do_get.js @@ -25,6 +25,7 @@ function do_get(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.cloudapi.getAccount(function (err, account) { if (err) { diff --git a/lib/do_datacenters.js b/lib/do_datacenters.js index e6935fe..72202af 100644 --- a/lib/do_datacenters.js +++ b/lib/do_datacenters.js @@ -36,6 +36,7 @@ function do_datacenters(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.cloudapi.listDatacenters(function (err, datacenters) { if (err) { diff --git a/lib/do_fwrule/do_create.js b/lib/do_fwrule/do_create.js index 2de8b87..8405f84 100644 --- a/lib/do_fwrule/do_create.js +++ b/lib/do_fwrule/do_create.js @@ -49,6 +49,7 @@ function do_create(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } tritonapi.cloudapi.createFirewallRule( createOpts, function (err, fwrule) { diff --git a/lib/do_fwrule/do_disable.js b/lib/do_fwrule/do_disable.js index 7c51b87..a081d54 100644 --- a/lib/do_fwrule/do_disable.js +++ b/lib/do_fwrule/do_disable.js @@ -34,6 +34,7 @@ function do_disable(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } vasync.forEachParallel({ inputs: args, diff --git a/lib/do_fwrule/do_enable.js b/lib/do_fwrule/do_enable.js index c5401e9..8b9bb9f 100644 --- a/lib/do_fwrule/do_enable.js +++ b/lib/do_fwrule/do_enable.js @@ -34,6 +34,7 @@ function do_enable(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } vasync.forEachParallel({ inputs: args, diff --git a/lib/do_fwrule/do_get.js b/lib/do_fwrule/do_get.js index 474c415..a13157e 100644 --- a/lib/do_fwrule/do_get.js +++ b/lib/do_fwrule/do_get.js @@ -38,6 +38,7 @@ function do_get(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } tritonapi.getFirewallRule(id, function onRule(err, fwrule) { if (err) { diff --git a/lib/do_fwrule/do_instances.js b/lib/do_fwrule/do_instances.js index e511bae..53bc6bf 100644 --- a/lib/do_fwrule/do_instances.js +++ b/lib/do_fwrule/do_instances.js @@ -57,6 +57,7 @@ function do_instances(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } vasync.parallel({funcs: [ function getTheImages(next) { diff --git a/lib/do_fwrule/do_list.js b/lib/do_fwrule/do_list.js index bf6f7e2..78d6f23 100644 --- a/lib/do_fwrule/do_list.js +++ b/lib/do_fwrule/do_list.js @@ -39,6 +39,7 @@ function do_list(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } tritonapi.cloudapi.listFirewallRules({}, function onRules(err, rules) { if (err) { diff --git a/lib/do_image/do_get.js b/lib/do_image/do_get.js index b09075f..eaa9f1a 100644 --- a/lib/do_image/do_get.js +++ b/lib/do_image/do_get.js @@ -29,6 +29,7 @@ function do_get(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.getImage(args[0], function onRes(err, img) { if (err) { diff --git a/lib/do_image/do_list.js b/lib/do_image/do_list.js index cc00b40..0f60e3f 100644 --- a/lib/do_image/do_list.js +++ b/lib/do_image/do_list.js @@ -67,6 +67,7 @@ function do_list(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.listImages(listOpts, function onRes(err, imgs, res) { if (err) { diff --git a/lib/do_info.js b/lib/do_info.js index 0864366..85f52ce 100644 --- a/lib/do_info.js +++ b/lib/do_info.js @@ -33,6 +33,7 @@ function do_info(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.cloudapi.getAccount(cb.bind('account')); i++; tritonapi.cloudapi.listMachines(cb.bind('machines')); i++; diff --git a/lib/do_instance/do_audit.js b/lib/do_instance/do_audit.js index ce4060f..90c400e 100644 --- a/lib/do_instance/do_audit.js +++ b/lib/do_instance/do_audit.js @@ -53,6 +53,10 @@ function do_audit(subcmd, opts, args, cb) { var tritonapi = this.top.tritonapi; common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { + if (setupErr) { + cb(setupErr); + return; + } if (common.isUUID(arg)) { uuid = arg; go1(); diff --git a/lib/do_instance/do_disable_firewall.js b/lib/do_instance/do_disable_firewall.js index 7f51b39..a511307 100644 --- a/lib/do_instance/do_disable_firewall.js +++ b/lib/do_instance/do_disable_firewall.js @@ -54,6 +54,7 @@ function do_disable_firewall(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } vasync.forEachParallel({ inputs: args, diff --git a/lib/do_instance/do_enable_firewall.js b/lib/do_instance/do_enable_firewall.js index 97f1dfb..33c4dcd 100644 --- a/lib/do_instance/do_enable_firewall.js +++ b/lib/do_instance/do_enable_firewall.js @@ -54,6 +54,7 @@ function do_enable_firewall(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } vasync.forEachParallel({ inputs: args, diff --git a/lib/do_instance/do_fwrule/do_list.js b/lib/do_instance/do_fwrule/do_list.js index 5e27798..5c01873 100644 --- a/lib/do_instance/do_fwrule/do_list.js +++ b/lib/do_instance/do_fwrule/do_list.js @@ -44,6 +44,7 @@ function do_list(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } tritonapi.listInstanceFirewallRules({ id: id diff --git a/lib/do_instance/do_get.js b/lib/do_instance/do_get.js index 3663a22..c7f3c4e 100644 --- a/lib/do_instance/do_get.js +++ b/lib/do_instance/do_get.js @@ -23,6 +23,7 @@ function do_get(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } tritonapi.getInstance(args[0], function (err, inst) { if (inst) { diff --git a/lib/do_instance/do_ip.js b/lib/do_instance/do_ip.js index 6bfdea7..1bc9ac3 100644 --- a/lib/do_instance/do_ip.js +++ b/lib/do_instance/do_ip.js @@ -33,6 +33,7 @@ function do_ip(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } cli.tritonapi.getInstance(args[0], function (err, inst) { if (err) { diff --git a/lib/do_instance/do_list.js b/lib/do_instance/do_list.js index 47af52b..224f407 100644 --- a/lib/do_instance/do_list.js +++ b/lib/do_instance/do_list.js @@ -77,6 +77,7 @@ function do_list(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } vasync.parallel({funcs: [ function getTheImages(next) { diff --git a/lib/do_instance/do_reboot.js b/lib/do_instance/do_reboot.js index 3a74209..94c35c9 100644 --- a/lib/do_instance/do_reboot.js +++ b/lib/do_instance/do_reboot.js @@ -30,6 +30,7 @@ function do_reboot(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } var rebootErrs = []; diff --git a/lib/do_instance/do_rename.js b/lib/do_instance/do_rename.js index 8c25cab..d7b0148 100644 --- a/lib/do_instance/do_rename.js +++ b/lib/do_instance/do_rename.js @@ -27,6 +27,7 @@ function do_rename(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.renameInstance({ diff --git a/lib/do_instance/do_resize.js b/lib/do_instance/do_resize.js index 965849d..a742e50 100644 --- a/lib/do_instance/do_resize.js +++ b/lib/do_instance/do_resize.js @@ -27,6 +27,7 @@ function do_resize(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.resizeInstance({ diff --git a/lib/do_instance/do_snapshot/do_get.js b/lib/do_instance/do_snapshot/do_get.js index 7bf02f3..cdc740a 100644 --- a/lib/do_instance/do_snapshot/do_get.js +++ b/lib/do_instance/do_snapshot/do_get.js @@ -39,6 +39,7 @@ function do_get(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } cli.tritonapi.getInstanceSnapshot({ id: id, diff --git a/lib/do_instance/do_snapshot/do_list.js b/lib/do_instance/do_snapshot/do_list.js index 162dfc3..2da2bf9 100644 --- a/lib/do_instance/do_snapshot/do_list.js +++ b/lib/do_instance/do_snapshot/do_list.js @@ -43,6 +43,7 @@ function do_list(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } cli.tritonapi.listInstanceSnapshots({ id: machineId diff --git a/lib/do_instance/do_tag/do_delete.js b/lib/do_instance/do_tag/do_delete.js index 261a9bc..254668a 100644 --- a/lib/do_instance/do_tag/do_delete.js +++ b/lib/do_instance/do_tag/do_delete.js @@ -33,6 +33,7 @@ function do_delete(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } if (opts.all) { self.top.tritonapi.deleteAllInstanceTags({ diff --git a/lib/do_instance/do_tag/do_get.js b/lib/do_instance/do_tag/do_get.js index d78c300..c78b061 100644 --- a/lib/do_instance/do_tag/do_get.js +++ b/lib/do_instance/do_tag/do_get.js @@ -27,6 +27,7 @@ function do_get(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } self.top.tritonapi.getInstanceTag({ id: args[0], diff --git a/lib/do_instance/do_tag/do_list.js b/lib/do_instance/do_tag/do_list.js index 09d7dba..bf4896a 100644 --- a/lib/do_instance/do_tag/do_list.js +++ b/lib/do_instance/do_tag/do_list.js @@ -26,6 +26,7 @@ function do_list(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } self.top.tritonapi.listInstanceTags( {id: args[0]}, function (err, tags) { diff --git a/lib/do_instance/gen_do_ACTION.js b/lib/do_instance/gen_do_ACTION.js index 030c241..41ed069 100644 --- a/lib/do_instance/gen_do_ACTION.js +++ b/lib/do_instance/gen_do_ACTION.js @@ -112,6 +112,7 @@ function _doTheAction(action, subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } _doOnEachInstance(self, action, command, state, args, opts, callback); }); diff --git a/lib/do_key/do_get.js b/lib/do_key/do_get.js index e519358..5a215a4 100644 --- a/lib/do_key/do_get.js +++ b/lib/do_key/do_get.js @@ -38,6 +38,7 @@ function do_get(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } cli.tritonapi.cloudapi.getKey({ // Currently `cloudapi.getUserKey` isn't picky about the diff --git a/lib/do_key/do_list.js b/lib/do_key/do_list.js index b09063d..d8f2cb9 100644 --- a/lib/do_key/do_list.js +++ b/lib/do_key/do_list.js @@ -40,6 +40,7 @@ function do_list(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } cli.tritonapi.cloudapi.listKeys({}, function onKeys(err, keys) { if (err) { diff --git a/lib/do_network/do_get.js b/lib/do_network/do_get.js index 02531d2..a26cd31 100644 --- a/lib/do_network/do_get.js +++ b/lib/do_network/do_get.js @@ -30,6 +30,7 @@ function do_get(subcmd, opts, args, cb) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { cb(setupErr); + return; } tritonapi.getNetwork(args[0], function (err, net) { if (err) { diff --git a/lib/do_package/do_get.js b/lib/do_package/do_get.js index 4ba4b52..0f3a5d9 100644 --- a/lib/do_package/do_get.js +++ b/lib/do_package/do_get.js @@ -29,6 +29,7 @@ function do_get(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this.top}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.getPackage(args[0], function onRes(err, pkg) { if (err) { diff --git a/lib/do_services.js b/lib/do_services.js index 8850451..8342585 100644 --- a/lib/do_services.js +++ b/lib/do_services.js @@ -36,6 +36,7 @@ function do_services(subcmd, opts, args, callback) { common.cliSetupTritonApi({cli: this}, function onSetup(setupErr) { if (setupErr) { callback(setupErr); + return; } tritonapi.cloudapi.listServices(function (err, services) { if (err) {