node-triton#79 `triton instance get NAME` doesn't have `dns_names` CNS field

This commit is contained in:
Trent Mick 2016-01-25 16:12:14 -08:00
parent b81b9b0e2d
commit 879e86efa3
2 changed files with 31 additions and 4 deletions

View File

@ -2,6 +2,8 @@
## 4.3.2 (not yet released)
- #79 Fix `triton instance get NAME` to make sure it gets the `dns_names` CNS
field.
- PUBAPI-1227: Note that `triton image list` doesn't include Docker images, at
least currently.

View File

@ -547,6 +547,7 @@ TritonApi.prototype.getInstance = function getInstance(name, cb) {
var res;
var shortId;
var inst;
var instFromList;
vasync.pipeline({funcs: [
function tryUuid(_, next) {
@ -575,7 +576,7 @@ TritonApi.prototype.getInstance = function getInstance(name, cb) {
},
function tryName(_, next) {
if (inst) {
if (inst || instFromList) {
return next();
}
@ -585,7 +586,7 @@ TritonApi.prototype.getInstance = function getInstance(name, cb) {
}
for (var i = 0; i < insts.length; i++) {
if (insts[i].name === name) {
inst = insts[i];
instFromList = insts[i];
// Relying on rule that instance name is unique
// for a user and DC.
return next();
@ -596,7 +597,7 @@ TritonApi.prototype.getInstance = function getInstance(name, cb) {
},
function tryShortId(_, next) {
if (inst || !shortId) {
if (inst || instFromList || !shortId) {
return next();
}
var nextOnce = once(next);
@ -622,10 +623,34 @@ TritonApi.prototype.getInstance = function getInstance(name, cb) {
});
s.on('end', function () {
if (match) {
inst = match;
instFromList = match;
}
nextOnce();
});
},
/*
* There can be fields that only exist on the machine object from
* GetMachine, and not from ListMachine. `dns_names` is one of these.
* Therefore, if we got the machine from filtering ListMachine, then
* we need to re-GetMachine.
*/
function reGetIfFromList(_, next) {
if (inst || !instFromList) {
next();
return;
}
var uuid = instFromList.id;
self.cloudapi.getMachine(uuid, function (err, inst_, res_) {
res = res_;
inst = inst_;
if (err && err.restCode === 'ResourceNotFound') {
// The CloudApi 404 error message sucks: "VM not found".
err = new errors.ResourceNotFoundError(err,
format('instance with id %s was not found', name));
}
next(err);
});
}
]}, function (err) {
if (err) {