in lib/services.js [76:112]
function ensureService(target, role, callback) {
var serviceRegion = (target.region && (target.region.length > 0)) ? target.region : currentRegion;
var serviceKey = serviceRegion + '|' + target.type;
if(target.endpoint) {
serviceKey = serviceKey + '|' + target.endpoint;
}
var service = null;
var definition = null;
// We have a valid role, reuse or create the service
if(! role.services.hasOwnProperty(serviceKey)) {
role.services[serviceKey] = [];
}
if(role.services[serviceKey].length == 0) {
var options = { region: serviceRegion };
if(role.credentials) {
options.credentials = role.credentials;
}
if(serviceDefinitions.hasOwnProperty(target.type)) {
definition = serviceDefinitions[target.type];
service = definition.create(target, options);
} else {
console.error("Error creating service reference '" + target.id + "', type '" + target.type + "' is invalid", JSON.stringify(target));
callback(new Error("Unknown service type '" + target.type + "'"), null);
return;
}
} else {
if(config.debug) {
console.log("Reusing existing service of type '", target.type, "'");
}
definition = serviceDefinitions[target.type];
service = role.services[serviceKey].shift();
}
callback(null, { definition: definition, service: service, dispose: function() { role.services[serviceKey].push(service) } });
};